阅读:1689回复:13
50分放送(回帖就有分)
本人刚刚接触USB,对很多概念还不清楚。请高手赐教:
假设我的USB设备连了一个RAM,那么如何读取这个RAM的内容? 对于PCI设备可以将这个RAM映射到计算机的存储器或I/O空间,但是USB表示没有进行空间映射,在这种情况下,如何读取RAM呢? 好像是通过管道实现的,但是具体怎么实现呢,其次有读取几个字节呢,读取的数据又放到那里呢? |
|
最新喜欢:bearsa...
|
沙发#
发布于:2003-12-26 12:25
用户被禁言,该主题自动屏蔽! |
|
板凳#
发布于:2003-12-26 15:41
我就是想知道RAM-CPU-主机之间数据传输的机制?
是不是CPU将读取的RAM数据放到端点的FIFO上,并在相应的寄存器中设置数据的长度就可以了。然后,主机驱动程序从端点的FIFO中读取一定该长度的数据。 不知理解的对不对,请高手赐教! |
|
|
地板#
发布于:2003-12-26 16:30
原始数据应该在有USB接口的器件中,通过USB通信,将数据传给USB HOST,然后由HOST将数据与专门的MCU,后者将缓存中的数据传递给RAM,这样才完成了数据的传送,如果是要送给FLASH存储的话,应该将一定的数据量存入到RAM中,然后按扇区的单位一次写到FLASH的指定位置中。
所以,具体的往RAM中写是由MCU完成的,且USB只负责通讯,并不参与数据的管理。 |
|
|
地下室#
发布于:2003-12-27 10:00
整个通路应该是PC应用程序<――>驱动程序<――>Host Controller<――>电缆<――>Device Controller(也就是usb接口器件)<――>MCU<――>外围电路(比如你说的ram)。
也就是说设备方主控的是MCU,你的外围设备如ram、flash要连到mcu上,如果里面有数据,mcu把数据读出放到usb的端点fifo里,再通usb内的收发器传走。 我说明白了吗? |
|
5楼#
发布于:2003-12-29 12:07
那么驱动程序又是如何将设备端传来的数据放到主机的RAM中呢,是不是驱动程序中有读写USB设备的函数?
|
|
|
6楼#
发布于:2003-12-29 12:24
我觉得这需要你的USB的CPU管理的把?他肯定会提供协议之类的东西, “听说回复就有分?呵呵”
|
|
7楼#
发布于:2003-12-30 12:07
你是不是想把USB设备的RAM的内容发给HOST(PC)?
若是:你需要把你的设备做成Mass Storage class. |
|
8楼#
发布于:2003-12-30 15:02
mcu 程序就是固件程序,对吗?
|
|
9楼#
发布于:2003-12-30 18:27
mcu 程序就是固件程序,对吗? 对头! :D |
|
10楼#
发布于:2003-12-30 19:44
整个通路应该是PC应用程序<――>驱动程序<――>Host Controller<――>电缆<――>Device Controller(也就是usb接口器件)<――>MCU<――>外围电路(比如你说的ram)。 3x,说得很明白!看了你的几个回帖,水平很高呀! |
|
|
11楼#
发布于:2003-12-30 20:09
读的数据放到终端(ENDPOINT),
可以通过68013+CPLD+SRAM方式读 |
|
12楼#
发布于:2003-12-31 12:03
fwzfwz1,你自己的理解没错!
|
|
13楼#
发布于:2004-01-06 09:40
不知道我的对你有没有用
我用的是CS5954AM RISC内置BIOS CYPRESS做U盘专用控制器 在U盘中使用的是统一编址,象什么内部RAM、外ROM、I/O都用的是一个连续的地址空间 启动后有专门的BOIS中断提供内存定位和内存分配中断67、68 而USB的读写确如楼上几位所说的USB固件只管控制,USB驱动管管理 USB设备地址是由USB设备枚举中主机分配USB配置地址寄存器来决定的。 如果你想在USB读写上做文章我觉得固件驱动都要做改动,关健是U盘的文件系是由驱动完成的,必须搞清楚他的接口才能在固件做改动,比较麻烦。如果有人要做想同的工作大家可以讨论一下,如果有人用SL11R或CS5954AM的同志 请与我联系 god_dragon1028@mail.china.com 13526598231 |
|