基于DWC2的USB驱动开发-0x01开篇介绍与新思DWC2 USB2.0控制器简介

文摘   科技   2023-05-08 18:05   湖南  

DWC2 USB2.0控制器介绍

前言

   前面介绍了USB江湖中,硬件协议分析仪,软件抓包工具中的各门各派,各路高手。工欲善其事必先利其器,所以至少需要了解其中一个硬件协议分析仪和一个软件抓包工具,后面才能比较方便的进行USB开发,否则可能会迷失在USB协议的沼泽里,而难以自拔,此时你可能就会不断进行哲思:我是谁,我在哪里,我在干嘛,我为什么要搞USB?; 软件问题,硬件问题,还是我的问题?

   各门各派,江湖大侠都会有自己的独门绝技和独门武器,而我们看到各种武侠小说,电视剧中,大侠的长成都是奇遇绝顶高手,然后挑柴,打水,站桩,摸鱼(不是屏幕前的摸鱼),划水(不是屏幕前的划水),一顿输出,然后镜头切换春夏秋冬,从掌动草长莺飞到剑指秋风落叶,从拳击万丈瀑布到脚扫千层白雪,招式基本功达到炉火纯青之后,然后就是绝顶高手拿出一本泛黄的小册子或者来到一处绝壁前传授内功心法,于是功力突飞猛进,终得大成。终于下山行侠仗义,叱咤江湖,成为一代传奇。

         UBS开发也是一样的,尤其是做USB底层比如驱动开发,那么至少需要购买一个USB硬件协议分析仪,以便抓取分析协议的底层信号和数据与规格书对照,这就是前面的基本功练习。等协议熟悉了之后,就可以去USB官网搜索各种规格书,开发实际的产品,练习心法内功了,就好比可以进入达摩院的藏书楼去翻阅各种绝学典籍了。

实践是检验检验真理的唯一标准,所以我们不从USB复杂的协议规格书入手,一开始就直接学习少林武功的七十二绝技是不可取的,就好比鸠摩智最终导致的是走火入魔。最好的方法是基于某个USB的控制器,从零实践其驱动开发,先从实践开始熟悉协议,打好基础,练好基本功。遇到哪些内容或者问题然后理论结合实践,参照USB控制器的文档和USB规格书的文档进行实践和理论学习。这样后面才有可能驾驭,切记不能急于求成,只有基本功结合心法才能提升内力和功力。

   相信本系列文章应该是全网第一部专门详细介绍基于DWC2 USB2.0控制器驱动开发的文章,慢慢来,希望和大家一起学习,从实践出发最终能成为USB开发的大侠。

新思的USB2.0 IP介绍

     新思USB 2.0 IP应该是业界使用得最多的IP解决方案市面上很多的量产MCU或者MPU都是基于新思的IP,比如各种xxx32的单片等。新思官网可以看到一些信息

https://www.synopsys.com/dw/ipdir.php?ds=dwc_usb_2_0_digital_controllers,但是其手册等不是直接开放,需要注册,目前个人注册好像不太行了。

新思的IP有以下特征:

l灵活的配置选项,以最大限度地提高性能和最小化CPU中断,后面我们也会详细讲到其中断相关的内容,中断通过一些bit的组合以标志不同的状态,以减少需要进行的判断逻辑。

l灵活的参数可以轻松集成到低延迟和高延迟系统中

l基于系统要求的USB数据传输或事务处理

l可配置的数据缓冲选项,以微调性能/面积的权衡

l缓冲区和描述符预取使主机吞吐量最大化

l固件可选端点配置,支持后处理应用程序更改;以及灵活的单芯片设计适用于多种应用,总之一个词就是灵活,但是后面看规格书也可以知道确实很复杂,配置参数选项很多。

l通过广泛的约束随机验证进行测试,确保质量IP

lAMBA™高性能总线(AHB)接口可快速集成到基于arm的设计中所以你可以看到各种基于ARM尤其是Cortex-M系列的xxx32MCU基本都是采用的新思的IP方案。

lUTMI+ Level 3可以与兼容的PHY设备快速集成

l高速high -Speed (480mbps)、全速Full-Speed (12mbps)和低速Low- Speed (1.5 Mbps)的操作符合USB OTG补充标准。

lUSB 2.0 HS OTG控制器支持外设或主机模式。

l支持高速USB EHCI主机控制器

文档

 新思USB 2.0 IP主要有两个文档需要参考

DesignWare Cores USB 2.0 Hi-Speed On-TheGo (OTG) Data book

DesignWare Cores USB 2.0 Hi-Speed On-TheGo (OTG) Programming Guide

前者是描述IP的架构,信号,配置,寄存器等,有八百多页。供IC设计,验证工程师,和驱动工程师查阅。驱动开发要频繁参考其寄存器部分,要做到每一个寄存器的每一个bit的作用都要了解,我们后面就会一步步参考它进行驱动的编写。当然要成为高手肯定要有很好的内力修为,这就需要对其架构等其他部分也要熟悉,所以其他部分我们后面也会一起慢慢阅读消化。

后者是编程指导,驱动编写主要参考这一部分进行,也有五百多页,这个文档我们后面也会详细的阅读

如果需要这两个文档的可以公众号留言或者加我微信,可以分享给你,仅供分享学习之用。

总结

    这一篇是我们正式进入USB驱动开发的第一篇, 与其他所有的USB书籍或者文章不一样,我们一开始不直接讲USB协议, 我们先从具体的USB IP入手,USB的底层驱动编写实践入手再边实践边了解协议。理论结合实践才是好的方式, 心法招式结合基本功练习才有可能练成武功的最高境界,否则就会走火入魔。关于走火入魔的一个很明显的表现就是,很多USB驱动开发工程师或者嵌入式开发人员,一上来就在群里论坛里问求救,xxx了是什么问题,怎么解决,这一看就是基本功都没练习直接就练习少林七十二绝迹的,基本连USB控制器部分的参考手册数据手册,USB规格书都没怎么阅读过的,肯定做不好,必定走火入魔,迷失在各种问题里,哪怕是成为调参侠,调API侠,调库侠,复制粘贴侠最终也可能遇到各种BUG无法解决而终。我们做开发尤其是嵌入式开发,驱动开发,一定要基本功练好,对底层基本原理熟悉,并且经过亲身实践,理论结合实践才能做好,成为USB江湖一代大侠。


嵌入式Lee
嵌入式软硬件技术:RTOS,GUI,FS,协议栈,ARM,总线,嵌入式C,开发环境 and blablaba....多年经验分享,非硬货不发,带你扒开每一个技术背后的根本原理。
 最新文章