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设备)。

相关文章
|
3月前
|
人工智能 API 开发工具
京东:对接白条API提供分期付款,降低消费门槛
本文详解京东白条API集成,涵盖技术原理、分步对接流程及Python代码实现,帮助开发者快速接入分期付款功能。通过API调用实现信用评估与分期计算,降低消费门槛,提升电商转化率。内容基于官方文档,确保准确可靠。
230 8
|
3月前
|
API PHP 开发者
别再混淆 PHP8.1 中纤程 Fibers 和协程 Coroutines 了 一文搞懂它们的区别
协程是可暂停的函数,PHP通过yield实现;Fibers是PHP 8.1+的轻量执行单元,可手动控制执行流程。协程适用于异步I/O,Fibers更灵活,为异步框架提供底层支持,让PHP能写出同步风格的异步代码,提升并发性能。(239字)
515 5
|
机器学习/深度学习 人工智能 运维
智能运维:未来之路的探索与实践
在数字化浪潮中,智能运维如同航船之舵,引领企业乘风破浪。本文将深入探讨智能运维的发展趋势,从自动化到智能化的转变,以及人工智能、大数据等技术如何赋能传统运维,提升效率与价值。我们将一同见证智能运维如何重塑IT服务管理的未来。
|
存储 关系型数据库 MySQL
基于SpringBoot+Vue作业管理系统(源码+部署说明+演示视频+源码介绍+lw)(2)
基于SpringBoot+Vue作业管理系统(源码+部署说明+演示视频+源码介绍+lw)
641 1
|
Ubuntu Linux 芯片
linux系统中wifi驱动的配置与编译实现方法
linux系统中wifi驱动的配置与编译实现方法
1618 1
|
安全 JavaScript 前端开发
恶意软件警报:BitRAT和Lumma Stealer伪装成假浏览器更新
恶意软件警报:BitRAT和Lumma Stealer伪装成假浏览器更新
|
人工智能 测试技术
探索人工智能在测试领域的新纪元:AI编写测试用例的前景
本文介绍了测试用例的重要性及其基本组成元素,如模块、标题、前置条件等。通过实践演练展示了如何利用ChatGPT自动生成测试用例,包括关键词精确匹配、模糊匹配、异常输入和搜索结果为空的场景。通过向ChatGPT提供详细需求和格式规范,可以得到Markdown格式的测试用例,然后导入Excel进行归档。关键在于清晰阐述需求、逐步细化任务,并对ChatGPT的回复进行调整优化。
|
安全 Linux 芯片
【重要通知】阿里云关于Intel处理器Meltdown和Spectre安全漏洞处理持续更新公告
近日,Intel处理器被爆出严重安全隐患,可导致操作系统内核信息泄露、应用程序越权访问系统内核数据等问题。漏洞披露前,阿里云已与Intel同步关键安全信息,并持续就修复方案做验证。
8996 0
|
域名解析 缓存 Prometheus
Kubernetes 集群 DNS 服务发现原理
本文介绍 Kubernetes 集群中 DNS 服务发现原理。
14855 0
|
网络安全 数据安全/隐私保护 JavaScript
使用Xshell构建远程转发
阿里云服务器构建隧道实现远程转发,使得可以通过服务器公网IP访问到本地提供服务的主机
866 1
 使用Xshell构建远程转发