顶下,留个脚印。。。。。。。。
点赞  2009-9-12 11:18
那三个函数是做HOST用到的吧
点赞  2009-9-12 17:23
是的
点赞  2009-9-14 08:55
引用: 引用 36 楼 kkkcxf1981 的回复:
usbFN 除了MDD下的没看,我已经把PDD下的都仔细看过了,敢问一下,你的SD模拟U盘的功能实现了?


我做过将设备模拟成串口设备的。。而且我们的设备现在也支持将自己当成U盘。。。你要不找个别的BSP来好好的看下别人怎么搞的
点赞  2009-9-14 10:38
谢谢楼上!
点赞  2009-9-16 08:49
既然U盘是走的mass storage协议就不需要改什么
"idVendor"=dword:045E
  "Manufacturer"="Generic Manufacturer (PROTOTYPE--Remember to change idVendor)"
  "idProduct"=dword:FFFF
这些只是显示在PC上边的内容,实际上只要走的mass storage协议,上边的设置是什么没关系。
另外mass sotrage功能通常不需要改PUBLIC下的代码,除非是你的CE设备中有两个盘符,你想在连接PC的时候把这两个盘符都送给PC,PC那边多出来两个移动磁盘,这样才需要改PUBLIC下的代码,我们的产品就是因为要在PC端同时显示NAND FLASH和SD卡这两个盘符才改了PUBLIC下的代码。

CE的U盘功能除了USB DEIVCE的PDD层驱动之外注册表也是十分重要的一项,因为PUBLIC下的MDD层是要读注册表的很多信息,详细的你可以看一下PUBLIC下USBFN的驱动代码,比如27楼所说描述的“DeviceName”这一项是USB驱动通过读这个信息来决定是把哪个盘符DismountStore,所以这里边的值一定要和你之前的FLASH盘符一致,比如说都是DSK1,否则是不行的。这一点你可以在CE设备下看看当连接PC后你的那个FLASH盘符是否还存在,正常情况下是会消失的,没消失肯定会成为无法识别的设备,当然,导致无法识别的设备原因有很多。
建议还是仔细研究一下USB MASS STORAGE枚举过程中的数据通信,然后结合BUS HOUND这个软件,再看PUBLIC下的MDD层代码和BSP中的PDD代码,会调试出来的。
点赞  2009-9-16 10:23
大力感谢Veabol的指教!!

经过几天的努力,昨天终于可以在PC端显示"可移动磁盘"了,但是现在还是不能在查看属性的时候看到它的容量(现在是0字节),看来还得改些地方,还请Veabol继续指教啊

USB的枚举过程很重要,先前我就是卡在了第三个setup包上.
用BUS HOUND只能是当USB枚举成功以后才行,而枚举过程是它捕捉不到的!

如您所说:要在PC端同时显示NAND FLASH和SD卡这两个盘符才改了PUBLIC下的代码,我这产品也需要这样的功能,到时还得向您请教啊,呵呵
点赞  2009-9-18 09:01
bus houd能看到枚举前的一些过程。。比如是USB的集线器和主机的通信。。。。当然这只是在你的USB的复位产生后前的一些信息。。后面的一定要拿到第一个EP中断后才能看到。。。
不过楼主看起来已经要OK了
点赞  2009-9-18 09:24
我这枚举过程是通过串口打应信息出来的,看的很清楚.不过应该有其他的工具可以检测到这过程的
点赞  2009-9-18 09:56
显示0字节的情况我没遇到过,\WINCE500\PUBLIC\COMMON\OAK\DRIVERS\USBFN的代码和BSP中USBFN的驱动结合着看下。
好像在枚举过程中会送出去些mass storage容量等信息吧,记得不清楚了。
可以PUBLIC中的代码多加打印信息,查原因估计会方便一些。
点赞  2009-9-18 10:20
提示: 作者被禁止或删除 内容自动屏蔽
点赞  2009-9-18 10:52
请Veabol大虾赐教!!
用了wince5的源码usbfn,storage目录中 ,现在pc机上有盘符出现,但没容量显示.
可是在通信过程中,PC机老是会发 0x23指令,而此指令并不支持。导致reset。
在网上查到:
一个U盘插上,Windows要连续的发送12h(INQUIRY),23h(READ FORMAT CAPACITIES),25h(READ

CAPACITY),28h(READ10),最后的这个READ10是要读取U盘的MBR。
如果这个READ10成功了,主机可能还会发送MODE SENSE命令。

但是0x23不是SCSI指令集, 此指令是在UFI协议中才定义的。

bInterfaceSubClass这个值决定了使用的是何种命令传输集,1为RBC,2为SFF,4为UFI,6为SCSI.  

而我在注册表,发给PC的interface descriptor中都是为6, 既是SCSI协议,
现在为什么PC机还会发0x23指令呢?难道要将bInterfaceSubClass 改为4 ??
点赞  2009-9-21 11:28
MARK
点赞  2009-9-21 19:54
我也在做这个,这个是我的贴:

http://topic.eeworld.net/u/20090921/15/a659fa47-e939-4f14-b57b-bf835aa3856a.html?61651

各位也帮帮忙了!  谢谢

我的组件添加了,在设备注册表里面也有DSK1:  ,注册表也改了,但我连线之后没有任何反映,


点赞  2009-9-21 20:20
[url=http://topic.eeworld.net/u/20090921/15/a659fa47-e939-4f14-b57b-bf835aa3856a.html?96366][/url]
点赞  2009-9-21 20:21
引用: 引用 50 楼 kkkcxf1981 的回复:
请Veabol大虾赐教!!
用了wince5的源码usbfn,storage目录中 ,现在pc机上有盘符出现,但没容量显示.
可是在通信过程中,PC机老是会发 0x23指令,而此指令并不支持。导致reset。
在网上查到:
一个U盘插上,Windows要连续的发送12h(INQUIRY),23h(READ FORMAT CAPACITIES),25h(READ

CAPACITY),28h(READ10),最后的这个READ10是要读取U盘的MBR。
如果这个READ10成功了,主机可能还会发送MODE SENSE命令。

但是0x23不是SCSI指令集, 此指令是在UFI协议中才定义的。

bInterfaceSubClass这个值决定了使用的是何种命令传输集,1为RBC,2为SFF,4为UFI,6为SCSI.?

而我在注册表,发给PC的interface descriptor中都是为6, 既是SCSI协议,
现在为什么PC机还会发0x23指令呢?难道要将bInterfaceSubClass 改为4 ??


这种情况我没遇到过,不清楚原因
点赞  2009-9-22 08:38
想请教Veabol一下:
你在做U盘功能的时候,应该不需要修改PUBLIC下的就可以在PC上显示U盘的容量,文件系统等内容吧?
点赞  2009-9-22 08:53
Trueman_onlyme兄,你的情况是出在枚举上了,最好先了解下枚举的过程再找原因把
点赞  2009-9-22 08:57
Trueman_onlyme兄,你的情况是出在枚举上了,最好先了解下枚举的过程再找原因把
点赞  2009-9-22 08:58
请问你的打印信息时用什么高出来的
是KITL吗 ?
点赞  2009-9-22 09:12
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复