社区
嵌入开发(WinCE)
帖子详情
wince 2440 usb mass storage问题请教!
abo77281
2009-01-08 02:41:06
在wince下作mass storage功能,现在功能已经能够实现,sd卡在pc端能够出现一个硬盘。现在想研究下mdd的code,有个问题要请教:
sd卡在wince系统下会出现一个硬盘,当连接上pc usb线的时候,进入mass storage模式,这个盘会消失, 这个动作是开始于在pdd层通知mdd层attach的时候,还是在通知reset的时候开始做的?
...全文
669
19
打赏
收藏
wince 2440 usb mass storage问题请教!
在wince下作mass storage功能,现在功能已经能够实现,sd卡在pc端能够出现一个硬盘。现在想研究下mdd的code,有个问题要请教: sd卡在wince系统下会出现一个硬盘,当连接上pc usb线的时候,进入mass storage模式,这个盘会消失, 这个动作是开始于在pdd层通知mdd层attach的时候,还是在通知reset的时候开始做的?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lllchr88
2010-03-12
打赏
举报
回复
我也在研究。看了两天还没头绪。学习下。
abo77281
2009-01-21
打赏
举报
回复
[Quote=引用 17 楼 Larry_Liang_cn 的回复:]
在windows mobile/wince下的USB驱动做得N复杂。
我们还用到了OTG,开启了很多USB功能。
驱动架构变成了:
OTG Driver(MDD,PDD)
Function Driver(MDD,PDD) Host Driver(MDD,PDD)
在Function驱动下还有STORAGE,SERIAL,RNDIS,PC-CAMERA四个Client驱动
在Host驱动下还有STORAGE,HID两个Client驱动。
[/Quote]
USB驱动的确很复杂,看的比较痛苦.
看yangkunzhen 兄研究的很细.很希望他能够好好指点我下!
也希望其他高手赐教!
Seven_zhangxw
2009-01-20
打赏
举报
回复
学习ing
Larry_Liang_cn
2009-01-20
打赏
举报
回复
在windows mobile/wince下的USB驱动做得N复杂。
我们还用到了OTG,开启了很多USB功能。
驱动架构变成了:
OTG Driver(MDD,PDD)
Function Driver(MDD,PDD) Host Driver(MDD,PDD)
在Function驱动下还有STORAGE,SERIAL,RNDIS,PC-CAMERA四个Client驱动
在Host驱动下还有STORAGE,HID两个Client驱动。
abo77281
2009-01-20
打赏
举报
回复
[Quote=引用 14 楼 yangkunzhen 的回复:]
to abo77281,
在bot.cpp文件中有一个BOT_InternalInit 函数,这个函数中会调用g_pUfnFuncs->lpStart(g_hDevice, BOT_DeviceNotify, NULL, &g_hDefaultPipe);(Note:pUfnFuncs这个usb context是通过IO Control从MMD层得到的) 可以看出他是向MDD层注册一个callback函数。同样在MDD层也会向PDD层注册一个callback函数UfnMdd_Notify,如果你细心看UfnMdd_Notify这个function的code的话,你会发现一个SendDeviceNotification函数…
[/Quote]
to yangkunzhen:
我在你说的这个函数BOT_InternalInit 中加有调试信息,但是从dnw看,没有访问到它.比较困扰,是不是我的调试信息有问题:RETAILMSG(1, (_T("--BOT_InternalInit--\r\n")));
abo77281
2009-01-19
打赏
举报
回复
[Quote=引用 11 楼 yangkunzhen 的回复:]
to abo77281,
block.cpp里面的STORE_Init中会调用dismount(g_hStore);将整个DSK unmount掉
而STORE_Init这个函数是在attach事件来的时候调用的
[/Quote]
to yangkunzhen:
thank you.还有问题请教:
我有跟踪code,在usb的pdd层发出的Notify(attach or reset or detach)没有传到block.cpp里面,而是传到了eum.cpp里面,STORE_Init这个函数没有访问.没有跟踪到dismount disk.
是否还有他解?
abo77281
2009-01-19
打赏
举报
回复
[Quote=引用 11 楼 yangkunzhen 的回复:]
to abo77281,
block.cpp里面的STORE_Init中会调用dismount(g_hStore);将整个DSK unmount掉
而STORE_Init这个函数是在attach事件来的时候调用的
[/Quote]
to yangkunzhen:
thank you.还有问题请教:
我有跟踪code,在usb的pdd层发出的Notify(attach or reset or detach)没有传到block.cpp里面,而是传到了eum.cpp里面,STORE_Init这个函数没有访问.没有跟踪到dismount disk.
是否还有他解?
yangkunzhen
2009-01-19
打赏
举报
回复
to abo77281,
在bot.cpp文件中有一个BOT_InternalInit 函数,这个函数中会调用g_pUfnFuncs->lpStart(g_hDevice,
BOT_DeviceNotify
, NULL, &g_hDefaultPipe);(Note:pUfnFuncs这个usb context是通过IO Control从MMD层得到的) 可以看出他是向MDD层注册一个callback函数。同样在MDD层也会向PDD层注册一个callback函数UfnMdd_Notify,如果你细心看UfnMdd_Notify这个function的code的话,你会发现一个SendDeviceNotification函数(不用说也知道这个函数要干嘛了吧,呵呵~~)。
所以 一个notification chain也就形成了。
yangkunzhen
2009-01-18
打赏
举报
回复
to abo77281,
block.cpp里面的STORE_Init中会调用dismount(g_hStore);将整个DSK unmount掉
而STORE_Init这个函数是在attach事件来的时候调用的
Seven_zhangxw
2009-01-14
打赏
举报
回复
学习中
abo77281
2009-01-13
打赏
举报
回复
to all
感谢各位回帖!
[Quote=引用 6 楼 yangkunzhen 的回复:]
应该是在attach的时候,在MDD层,当有一个attach事件发生的时候,MDD层负责dismount相关的Disk(将所有这个Disk的partition全部dismount掉)
当PC端remove掉USB mass storage的时候,MDD层会关闭这个Disk的handle,然后在storage manager中有一个PNP thread 负责将这个dismount掉的DISk从新的mount上。
[/Quote]
请教,dismount Disk的时候应该是访问的block.cpp里面的STORE_Init和STORE_Close这两个函数,不知道我这样理解对不对。
我在这两个函数的开始部分加了调试信息,RETAILMSG(1, (_T("--STOREinit--\r\n"))); 但并没有访问到。
xqhrs232
2009-01-11
打赏
举报
回复
看看USBFN这部分驱动程序你就明白了
Ricky_hu
2009-01-11
打赏
举报
回复
学习下。。。
yangkunzhen
2009-01-11
打赏
举报
回复
应该是在attach的时候,在MDD层,当有一个attach事件发生的时候,MDD层负责dismount相关的Disk(将所有这个Disk的partition全部dismount掉)
当PC端remove掉USB mass storage的时候,MDD层会关闭这个Disk的handle,然后在storage manager中有一个PNP thread 负责将这个dismount掉的DISk从新的mount上。
Seven_zhangxw
2009-01-11
打赏
举报
回复
[Quote=引用 4 楼 abo77281 的回复:]
引用 3 楼 gooogleman 的回复:
引用 2 楼 abo77281 的回复:
to gooogleman :
usb真是个好东西,研究中。。。
的确是好,但是我发觉我现在C++还得学习一段时间再去看那些代码比较合适。
同意,呵呵,分层驱动加上pubilc的code,结构比较庞大,研究code要大量时间。usb协议有看过的话,code也比较好理解。
[/Quote]
坚决同意,WINCE这些大块好复杂啊
abo77281
2009-01-08
打赏
举报
回复
[Quote=引用 3 楼 gooogleman 的回复:]
引用 2 楼 abo77281 的回复:
to gooogleman :
usb真是个好东西,研究中。。。
的确是好,但是我发觉我现在C++还得学习一段时间再去看那些代码比较合适。
[/Quote]
同意,呵呵,分层驱动加上pubilc的code,结构比较庞大,研究code要大量时间。usb协议有看过的话,code也比较好理解。
gooogleman
2009-01-08
打赏
举报
回复
[Quote=引用 2 楼 abo77281 的回复:]
to gooogleman :
usb真是个好东西,研究中。。。
[/Quote]
的确是好,但是我发觉我现在C++还得学习一段时间再去看那些代码比较合适。
abo77281
2009-01-08
打赏
举报
回复
to gooogleman :
usb真是个好东西,研究中。。。
gooogleman
2009-01-08
打赏
举报
回复
我的也比较郁闷,我使用鼠标,同步软件连接就断了。
关于你的问题,我还没有能力回答哦。
WinCE
5.0中文模拟器SDK(VS2005) Part2
目前权限只能上传45MB大小的文件,只能分包压缩上传了,需要用的请将两个压缩包都下载下来再解压缩。
WinCE
6.0中文模拟器
WinCE
6.0中文模拟器的SDK,支持.NET Compact Framework、MFC、ActiveSync。可代替先前传上来的两个版本。
WinCE
5.0中文模拟器SDK(VS2005)
VS2005中可用的
WinCE
5.0中文模拟器SDK,支持文件和注册表保存。
TCP和MODBUS-TCP通讯调试软件V1.2_
Wince
_Winxp_通用版
本软件可以运行于
WINCE
5 /
WINCE
6 /
WINCE
7 及 WINXP/ WIN7 等系统下, 软件设计环境 VB2005,要求装有 NET2.0 环境,对您学习MODBUS/TCP有帮助, 还可做TCP调试器, 此软件免费使用。 功能如下: 1.多网卡支持,点击“网卡X”处可自动切换网卡IP。 2.增加MODBUS寄存器个数至9999。 3.修改一次最多读写寄存器个数120个。 4.增加WIN7等高版本系统支持。 5.欢迎交流,指正,本软件免费。 软件运行要求: 1.
WINCE
系统上可以直接运行。 2.WINXP 系统上没装 VS2005 或更高版的 VS 软件的用户,可以到网 上先下载 NET2.0 安装包,20M左右,安装了NET2.0安装包后可用。
CnCommv1.5源码、范例及文档
版本: CnComm v1.50 用途: WINDOWS/
WINCE
多线程串口通讯库 语言: C++ (ANSI/UNICODE) 平台: WINDOWS(WIN98/NT/2000/XP/2003/Vista);
WINCE
5.0 模拟器; Pocket PC 2003 模拟器; 硬件: PC串口; 串口服务器;
USB
串口; 虚拟串口; 编译: BC++ 5(free tool); C++ BUILDER 4, 5, 6, X; EVC 4(sp4); G++ 3, 4; Intel C++ 7, 8, 9; VC++ 6(sp6), .NET, 2003, 2005; 作者: llbird 邮箱: wushaojian@21cn.com 博客: http://blog.csdn.net/wujian53 http://www.cppblog.com/llbird 维护: 2002.10 - 2009.4
嵌入开发(WinCE)
19,500
社区成员
41,567
社区内容
发帖
与我相关
我的任务
嵌入开发(WinCE)
硬件/嵌入开发 嵌入开发(WinCE)
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章