1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
目前RTT所有的驱动都是在设备启动时注册上去的,后续不去操作的方式实现。
那我现在有一个疑惑,USB设备在使用过程中,如果在某种情况下需要枚举成HID设备,在另一种情况下又需要枚举成CDC设备,甚至有时还需要枚举成UAC设备,此时如何做到动态修改类型? |
|
相关推荐
7个回答
|
|
把启动注册调用的函数改成全局函数接口,程序里调用
但是有个问题,多数只有注册,没有卸载的过程。需要自己实现卸载,切换的时候先卸载前一种再注册成新的 理论上是可以的,实际操作也没有多少难点儿。 |
|
|
|
有个问题确认下,卸载时,u***devices这一层是可以操作的,但是问题是,卸载时是否需要做芯片级的操作,比如关闭phy芯片之类的?毕竟rt的u*** devices框架看起来没有考虑卸载这回事,芯片原厂也就没有针对卸载这种场景做驱动适配了
|
|
|
|
芯片外设寄存器多数关掉中断,禁止使能就好了。当你启用其它配置的时候会重新配置大多数寄存器的。
重点在 rtt 驱动框架这层,需要做的工作还是有的。注册了设备得卸载,不然会出现内存泄露,或者下载再想注册失败等等。 |
|
|
|
USB分为USB HOST和USB Device。
对于USB Device,在编写USB device驱动的时候,在写代码时就知道当前USB需要被枚举成什么设备,比如CDC设备,这个设备驱动写死了的。 对于USB HOST,HOST驱动,在USB Device未插入的时候,肯定不知道设备是什么类型的,但是当USB设备插入的时候,就会有枚举过程,USB HOST此时就知道当前设备的类型,然后根据设备的类型,加载对应的驱动 不知道上面的解释,是否相对好理解! |
|
|
|
问题就在这,大部分场景下肯定是写死的,但是也存在不写死的情况。比如升级时切换到USB DFU状态来加快升级速度,正常工作时保持正常模式;有些产品,需要在设备端主动设置是否打开成USB MAS设备,这也涉及到切换。
RTT的USB device框架看起来在设计的时候就没考虑过卸载这回事,认为上电后就在一种工作模式下。 |
|
|
|
USB Device,在插入USB HOST后,只能是确定的某种设备类型,应该不存在你说的这种,第一次插入是CDC,第二次插入是AUDIO,即使要实现你说的这种情况,那也应该是该USBdevice代码中会有切换功能,比如第一次插入是CDC,然后有一个开关,切换,第二次插入变成了USB AUDIO,但不管怎么说,在插入的某个时间点,肯定是确定的设备类型。
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
583 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
2207 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1227 浏览 0 评论
1776 浏览 0 评论
1462 浏览 0 评论
74786 浏览 21 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 13:41 , Processed in 0.604957 second(s), Total 55, Slave 48 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号