yswtxiao 发表于 2018-8-20 11:32:44

想请教一个关于USB做host时文件读写问题!

我在用RTOS2的相关组件时,用到了他的USB Host组件,然后我有几个有疑问的地方。
1.usbStatus USBH_Port_Suspend (uint8_t ctrl, uint8_t port)这个函数的第二个参数port是hub的端口号,这个是怎么来的。调用这个函数的时候挂起其中一个端口号,我的理解是这个hub上有很多个端口(我是在PC机上看到的,一个hub有十几个port),每个端口都对应一个端口号,当外部设备插入时,这个hub就回告诉主机当前设备插入了哪个端口号,这个过程是在枚举的过程中实现的。而我用的STM32的一个host对应的hub只有一个port,所以我们用的时候这个port直接传0就可以了么?还是这个hub有多个port,如果有多个port,我哪里能看到最大port数量。
2.同样,在设备插入host以后,host是怎么分配device的。在这个函数uint8_t USBH_Device_GetController(uint8_t         device)中,我是怎么知道我插入的设备的device是多少?
3.假如我现在用的是大容量存储设备。在插入的设备枚举成功后,会调用这个函数 void USBH_MSC_Initialize (uint8_t instance),这个函数的传入参数instance是设备类的实例化编号,我想知道这个编号又是怎么来的,这个instance和device有什么区别。
4.在设备枚举成功后,host是自动从0开始往后分配device的么?还是有什么分配依据。我在用文件系统挂载的时候用的U0:,它是怎么映射到具体的USB设备的。例如:我插入了一个U盘,这时候host认为这个插入的U盘是device0,然后我调用fmount()函数来挂载U0:的时候,它能自动认为U0这个盘符就是对应的device0。
以上就我我在用这整个USB组件时的疑问,希望有大神给我解读下。谢谢啦!


eric2013 发表于 2018-8-21 10:17:03

RTOS2的HOST我也没有用过,帮顶下吧。

yswtxiao 发表于 2018-8-21 11:02:42

eric2013 发表于 2018-8-21 10:17
RTOS2的HOST我也没有用过,帮顶下吧。

哈哈,谢谢版主支持。
我根据说明文档和它的应用案例,大致估算,这个文件系统的访问盘符映射的应该就是HOST枚举device后大容量存储类的instance。例如:“U0:”,在它的文件系统底层,应该是对应的就是MSC的instance 0。
页: [1]
查看完整版本: 想请教一个关于USB做host时文件读写问题!