MF Porting之USB驱动开发

简介: 花费了近三个礼拜的时间,终于完成了TI开发板的USB驱动开发,现在回头想一想,其实也没有什么,具体硬件方面的通信由DM355实现了,软件层面的数据交互由MF Porting实现了,所做的也就是熟悉了解USB通信协议和DM355 USB相关的寄存器。

花费了近三个礼拜的时间,终于完成了TI开发板的USB驱动开发,现在回头想一想,其实也没有什么,具体硬件方面的通信由DM355实现了,软件层面的数据交互由MF Porting实现了,所做的也就是熟悉了解USB通信协议和DM355 USB相关的寄存器。

在开发驱动的过程中,觉得有这么几个难点,一是DM355支持三种USB模式:devicehostOTGUSB相关的寄存器比较多,并且由于该CPU推出才半年,不仅说明书语焉不详,相关示例程序也没有,所以开发起来挺费功夫的;二是USB协议比我以前接触的网口、串口通信要复杂多了,要通过状态机等等机制才能一步步完成相关通信过程。

 

    

    

 

MF默认的USB驱动支持V1.10协议,仅支持两个端点(0是默认端点,所有的USB设备都支持),默认的配置如下:

一、驱动描述表(18 byte

1、类型=device1

2USB支持的版本是V1.10

3、设备类、子类、协议都为0

4、端点0的最大包字节数为8

5、厂商ID=0x15A2

6、产品ID=0x0026

7、设备发行版本V1.00

8、厂商信息索引=1

9、产品名字索引=2

10、序列号产品索引=0

11、配置描述表的数目=1

二、标准配置描述表(9 byte

配置标识=2  =0  总长度=配置描述表长度+接口描述表长度+两个端口描述表长度

1、类型=CONFIGURATION2

2、配置信息总长度=配置描述表长度+接口描述表长度+两个端口描述表长度

3、支持的接口数=1

4、该配置的标识=1

5、配置描述符索引=0

6、属性:自给电源

7USB的总线电源耗费量=280mA

三、标准接口描述表(9 byte

1、类型=INTERFACE4

2、接口号=0   (如果存在多个接口,该序号是接口索引号)

3、可选设置的索引值=0

4、端点数=2   0表示仅支持缺省端点)

5、接口类=0xFF,表示由厂商自己说明

6、接口子类=1

7、接口协议=1

8、接口字符串描述索引=0

四、端点1描述表(7 byte

1、类型=ENDPOINT5

2、地址=1,输入端点

3、传送类型=批传送

4、最大包大小=64

5、时间间隔为0,该传输模式忽略该值

五、端点2描述表(7 byte

1、类型=ENDPOINT5

2、地址=2,输出端点

3、传送类型=批传送

4、最大包大小=64

5、时间间隔为0,该传输模式忽略该值

六、厂商名字

七、产品名字

八、显示名字

九、friendly namee7e70ea2

十、sideshow OS版本: MSFT100

十一、sideshow相关配置信息

字符串语言是U.S. English    0x0409

----------------------------------

顺便说一句,目前正在移植Sideshowsideshow借助串口驱动的接口实现USB通信(也就是说当串口等于约定的32的时候(COM33)操作的是USB设备)。

相关文章
|
10月前
|
芯片
MTK平台驱动调试指南 GPIO设置篇
MTK平台驱动调试指南 GPIO设置篇
567 1
|
10月前
|
存储 内存技术
MTK flash配置方法(转)
MTK flash配置方法(转)
142 1
|
Ubuntu
野火IMX6ULL PRO移植最新buidroot根文件系统(2022.02.04)
野火IMX6ULL PRO移植最新buidroot根文件系统(2022.02.04)
321 0
|
JavaScript 物联网 芯片
AliOS Things 硬件抽象层(HAL)对接系列2 — SPI driver porting
HAL层(Hardware abstraction layer) 的目的是为了屏蔽底层不同芯片平台的差异,从而使驱动层上面的软件不会随芯片平台而改变。AliOS Things定义了全面的HAL抽象层,这个系列主要介绍AliOS ThingsHAL层与不同芯片平台对接的poring要点,并举例说明。
3017 0
SideShow Gadget开发[2]
开发常规Gadget理论上不拘于什么开发语言,只要能输出符合SCF格式的数据流即可。不过这里还是推荐使用C#(或基于.NET开发平台开发语言),可以直接引用相关开发库,非常简单的生成符合SCF格式的界面要素
595 0
|
JavaScript 物联网 芯片
AliOS Things 硬件抽象层(HAL)对接系列1 — GPIO driver porting
HAL层(Hardware abstraction layer 硬件抽象层) 的目的是为了屏蔽底层不同芯片平台的差异,从而使驱动层上面的软件不会随芯片平台而改变。AliOS Things定义了全面的HAL抽象层,这个系列主要介绍AliOS ThingsHAL层与不同芯片平台对接的poring要点,并举例说明。
3681 0
|
Linux 开发工具 git
初玩OpenWRT之编译TP-Link WR841N V8固件
0x00 安装依赖 安装git以下载OpenWrt源码。安装编译工具以进行交叉编译: sudo apt-get update sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip feeds中的部分软件包可能只能通过subversion (缩写: svn)或者mercurial下载源代码。
3064 0
zz-rtl8188eu的linux-usb-wifi调试及驱动编译150210
//zz//#######################################################################zz-rtl8188eu的linux-usb-wifi调试及驱动编译150210zz-Write:    @2015-2-4 22:11:14  ...
2444 0