WinCE 5.0 USB Mass Storage疑问

eastley 2010-01-13 09:49:50
大家好,我的WinCE 5.0系统使用Usb Mass Storage功能,把Pocket Mory1作为存储设备开放时,从PC端拷贝数据到Pocket Mory1时,点击触摸屏进行操作,系统没有任何反应;把SD卡作为存储设备开放时,从PC端拷贝数据到SD卡时,点击触摸屏操作系统,操作是正常的;当不连接PC,直接把数据从SD卡拷贝到PocketMory1时,点击触摸屏操作系统也是正常的。

我的Nand还划分了另外一个分区PocketMory,用来存放系统文件(包括注册表),也就是说PocketMory1只是用来存储数据,那么为什么通过USB Mass Storage功能把PocketMory1开放出来,进行数据写入的时候,系统会不响应触摸事件呢。

开始我怀疑是不是我的Nand读写不是DMA模式引起的,后来改成DMA模式,速度提了上来,但是效果还是一样;

通过编写测试文件测试,然后通过EVC抓取CPU占用率,发现大多数情况下往Nand写数据时CPU占用率只有16%,偶尔会有峰值,达到90%以上;

后来怀疑是不是USB设备驱动的问题,但是把SD卡开放出来,写操作时系统又是正常的。

不知道是不是文件系统固有的问题,或者线程优先级等的问题,还请高手指点,谢谢!
...全文
299 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wen_hua 2010-01-15
  • 打赏
  • 举报
回复
MARK
guopeixin 2010-01-14
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 guopeixin 的回复:]
引用 12 楼 eastley 的回复:
引用 10 楼 guopeixin 的回复:
引用 9 楼 eastley 的回复:
引用 8 楼 guopeixin 的回复:
引用 7 楼 eastley 的回复:
引用 5 楼 guopeixin 的回复:
引用 4 楼 guopeixin 的回复:
samsung flash驱动设计的问题,采用了所有r/w操作经由kerneliocontrol转接到oal的方式,所以优先级比较高,导致操作flash的时候系统cpu loading很高
如果想解决这个问题,可以改一下架构或者采用ms 的driver

另外,你点击触摸屏没有反应的时候,可不可以做如下尝试
1. 拷贝文件之前,在device上运行一个测试程序,如播放对象存储中音频文件的播放器,当触摸屏没有反应的时候看测试程序能够正常工作;
2. 在touch driver中每次检测到用户点击的时候输出log信息,看触摸屏没有反映的时候是否有中断的log信息输出

谢谢,1、如果如你所说,我把SD卡上的数据拷贝到Pocketmory1时,系统是正常的,又如何解释?
      2、先打开SD卡上的音频文件播放,通过USB Mass Storage拷贝数据到Nand时,音频播放会停在那里,直到拷贝完成才继续播放。

to:1、如果如你所说,我把SD卡上的数据拷贝到Pocketmory1时,系统是正常的,又如何解释?
在没有看到所有线程对cpu占用的具体时间之前所有的分析都是推测
这个应该是SD卡和Mass Storage情况下USB速度的差异导致拷贝文件的时候用在flash Write上的时间长短有关
另外,“2. 在touch driver中每次检测到用户点击的时候输出log信息,看触摸屏没有反映的时候是否有中断的log信息输出”的结果是?


To:1:是的,我现在确实都只是根据表象来推测;
  2:把触摸屏驱动打印LOG打开,发现是有LOG输出的,虽说不是很流畅,打印如下:
DdsiTouchPanelGetPoint:: *pUncalX=2959, *pUncalY=1888
up
*pUncalX=2959,*pUncalY=1888


那就基本上可以确定是优先级导致的该问题,解决方法如前面说的
不过,其实这个也不算是啥问题,因为连接usb的时候用户基本上不可能同时做这么多的操作


USB Mass Storage是一种情况,但是应用层软件在执行写操作的时候,点击触摸屏有时也会没有反应,或者很慢,这就不能容忍了,如果修改构架的话应该怎么入手呢?能否给个指导思路,谢谢了:)我觉得使用MS的Driver时间会比较久。

呵呵,软件总会多多有些问题的,看怎么权衡了
我觉得有两种方法可以解决这个问题:
1。 更新driver架构,使用ms架构(这个要看你对两种架构优缺点的权衡了);
2. 改变hw,采用类似于inand之类的(如魅族M8就采用了movinand+sd架构,就不会出现lz的情况)
[/Quote]
只是个人愚见,仅供参考,呵呵
guopeixin 2010-01-14
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 eastley 的回复:]
引用 10 楼 guopeixin 的回复:
引用 9 楼 eastley 的回复:
引用 8 楼 guopeixin 的回复:
引用 7 楼 eastley 的回复:
引用 5 楼 guopeixin 的回复:
引用 4 楼 guopeixin 的回复:
samsung flash驱动设计的问题,采用了所有r/w操作经由kerneliocontrol转接到oal的方式,所以优先级比较高,导致操作flash的时候系统cpu loading很高
如果想解决这个问题,可以改一下架构或者采用ms 的driver

另外,你点击触摸屏没有反应的时候,可不可以做如下尝试
1. 拷贝文件之前,在device上运行一个测试程序,如播放对象存储中音频文件的播放器,当触摸屏没有反应的时候看测试程序能够正常工作;
2. 在touch driver中每次检测到用户点击的时候输出log信息,看触摸屏没有反映的时候是否有中断的log信息输出

谢谢,1、如果如你所说,我把SD卡上的数据拷贝到Pocketmory1时,系统是正常的,又如何解释?
      2、先打开SD卡上的音频文件播放,通过USB Mass Storage拷贝数据到Nand时,音频播放会停在那里,直到拷贝完成才继续播放。

to:1、如果如你所说,我把SD卡上的数据拷贝到Pocketmory1时,系统是正常的,又如何解释?
在没有看到所有线程对cpu占用的具体时间之前所有的分析都是推测
这个应该是SD卡和Mass Storage情况下USB速度的差异导致拷贝文件的时候用在flash Write上的时间长短有关
另外,“2. 在touch driver中每次检测到用户点击的时候输出log信息,看触摸屏没有反映的时候是否有中断的log信息输出”的结果是?


To:1:是的,我现在确实都只是根据表象来推测;
  2:把触摸屏驱动打印LOG打开,发现是有LOG输出的,虽说不是很流畅,打印如下:
DdsiTouchPanelGetPoint:: *pUncalX=2959, *pUncalY=1888
up
*pUncalX=2959,*pUncalY=1888


那就基本上可以确定是优先级导致的该问题,解决方法如前面说的
不过,其实这个也不算是啥问题,因为连接usb的时候用户基本上不可能同时做这么多的操作


USB Mass Storage是一种情况,但是应用层软件在执行写操作的时候,点击触摸屏有时也会没有反应,或者很慢,这就不能容忍了,如果修改构架的话应该怎么入手呢?能否给个指导思路,谢谢了:)我觉得使用MS的Driver时间会比较久。
[/Quote]
呵呵,软件总会多多有些问题的,看怎么权衡了
我觉得有两种方法可以解决这个问题:
1。 更新driver架构,使用ms架构(这个要看你对两种架构优缺点的权衡了);
2. 改变hw,采用类似于inand之类的(如魅族M8就采用了movinand+sd架构,就不会出现lz的情况)
eastley 2010-01-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 guopeixin 的回复:]
引用 9 楼 eastley 的回复:
引用 8 楼 guopeixin 的回复:
引用 7 楼 eastley 的回复:
引用 5 楼 guopeixin 的回复:
引用 4 楼 guopeixin 的回复:
samsung flash驱动设计的问题,采用了所有r/w操作经由kerneliocontrol转接到oal的方式,所以优先级比较高,导致操作flash的时候系统cpu loading很高
如果想解决这个问题,可以改一下架构或者采用ms 的driver

另外,你点击触摸屏没有反应的时候,可不可以做如下尝试
1. 拷贝文件之前,在device上运行一个测试程序,如播放对象存储中音频文件的播放器,当触摸屏没有反应的时候看测试程序能够正常工作;
2. 在touch driver中每次检测到用户点击的时候输出log信息,看触摸屏没有反映的时候是否有中断的log信息输出

谢谢,1、如果如你所说,我把SD卡上的数据拷贝到Pocketmory1时,系统是正常的,又如何解释?
      2、先打开SD卡上的音频文件播放,通过USB Mass Storage拷贝数据到Nand时,音频播放会停在那里,直到拷贝完成才继续播放。

to:1、如果如你所说,我把SD卡上的数据拷贝到Pocketmory1时,系统是正常的,又如何解释?
在没有看到所有线程对cpu占用的具体时间之前所有的分析都是推测
这个应该是SD卡和Mass Storage情况下USB速度的差异导致拷贝文件的时候用在flash Write上的时间长短有关
另外,“2. 在touch driver中每次检测到用户点击的时候输出log信息,看触摸屏没有反映的时候是否有中断的log信息输出”的结果是?


To:1:是的,我现在确实都只是根据表象来推测;
  2:把触摸屏驱动打印LOG打开,发现是有LOG输出的,虽说不是很流畅,打印如下:
DdsiTouchPanelGetPoint:: *pUncalX=2959, *pUncalY=1888
up
*pUncalX=2959,*pUncalY=1888


那就基本上可以确定是优先级导致的该问题,解决方法如前面说的
不过,其实这个也不算是啥问题,因为连接usb的时候用户基本上不可能同时做这么多的操作

[/Quote]
USB Mass Storage是一种情况,但是应用层软件在执行写操作的时候,点击触摸屏有时也会没有反应,或者很慢,这就不能容忍了,如果修改构架的话应该怎么入手呢?能否给个指导思路,谢谢了:)我觉得使用MS的Driver时间会比较久。
eastley 2010-01-14
  • 打赏
  • 举报
回复
另外,一次正常的触摸点击打印如下:
DdsiTouchPanelGetPoint:: *pUncalX=1868, *pUncalY=2016
down 1868 2016
DdsiTouchPanelGetPoint:: *pUncalX=1868, *pUncalY=2016
TSP_GetXY: 1- x= 2368, y=1940
TSP_GetXY: 2- x= 2382, y=1988
TSP_GetXY: 3- x= 2384, y=2028
TSP_GetXY: 4- x= 2385, y=2076
TSP_GetXY: *px=2383, *py=2008
invalid touch pen
*Final:*pUncalX=2383, *pUncalY=2008
DdsiTouchPanelGetPoint:: *pUncalX=2383, *pUncalY=2008
TSP_GetXY: 1- x= 2395, y=2082
TSP_GetXY: 2- x= 2398, y=2083
TSP_GetXY: 3- x= 2398, y=2085
TSP_GetXY: 4- x= 2445, y=2089
TSP_GetXY: *px=2398, *py=2084
invalid touch pen
*Final:*pUncalX=2383, *pUncalY=2008
DdsiTouchPanelGetPoint:: *pUncalX=2383, *pUncalY=2008
TSP_GetXY: 1- x= 2380, y=2089
TSP_GetXY: 2- x= 2380, y=2091
TSP_GetXY: 3- x= 2383, y=2099
TSP_GetXY: 4- x= 2429, y=2102
TSP_GetXY: *px=2381, *py=2095
invalid touch pen
*Final:*pUncalX=2381, *pUncalY=2095
DdsiTouchPanelGetPoint:: *pUncalX=2381, *pUncalY=2095
up
*pUncalX=2381,*pUncalY=2095
DdsiTouchPanelGetPoint:: *pUncalX=2381, *pUncalY=2095
up
*pUncalX=2381,*pUncalY=2095
guopeixin 2010-01-14
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 eastley 的回复:]
引用 8 楼 guopeixin 的回复:
引用 7 楼 eastley 的回复:
引用 5 楼 guopeixin 的回复:
引用 4 楼 guopeixin 的回复:
samsung flash驱动设计的问题,采用了所有r/w操作经由kerneliocontrol转接到oal的方式,所以优先级比较高,导致操作flash的时候系统cpu loading很高
如果想解决这个问题,可以改一下架构或者采用ms 的driver

另外,你点击触摸屏没有反应的时候,可不可以做如下尝试
1. 拷贝文件之前,在device上运行一个测试程序,如播放对象存储中音频文件的播放器,当触摸屏没有反应的时候看测试程序能够正常工作;
2. 在touch driver中每次检测到用户点击的时候输出log信息,看触摸屏没有反映的时候是否有中断的log信息输出

谢谢,1、如果如你所说,我把SD卡上的数据拷贝到Pocketmory1时,系统是正常的,又如何解释?
      2、先打开SD卡上的音频文件播放,通过USB Mass Storage拷贝数据到Nand时,音频播放会停在那里,直到拷贝完成才继续播放。

to:1、如果如你所说,我把SD卡上的数据拷贝到Pocketmory1时,系统是正常的,又如何解释?
在没有看到所有线程对cpu占用的具体时间之前所有的分析都是推测
这个应该是SD卡和Mass Storage情况下USB速度的差异导致拷贝文件的时候用在flash Write上的时间长短有关
另外,“2. 在touch driver中每次检测到用户点击的时候输出log信息,看触摸屏没有反映的时候是否有中断的log信息输出”的结果是?


To:1:是的,我现在确实都只是根据表象来推测;
  2:把触摸屏驱动打印LOG打开,发现是有LOG输出的,虽说不是很流畅,打印如下:
DdsiTouchPanelGetPoint:: *pUncalX=2959, *pUncalY=1888
up
*pUncalX=2959,*pUncalY=1888

[/Quote]
那就基本上可以确定是优先级导致的该问题,解决方法如前面说的
不过,其实这个也不算是啥问题,因为连接usb的时候用户基本上不可能同时做这么多的操作
eastley 2010-01-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 guopeixin 的回复:]
引用 7 楼 eastley 的回复:
引用 5 楼 guopeixin 的回复:
引用 4 楼 guopeixin 的回复:
samsung flash驱动设计的问题,采用了所有r/w操作经由kerneliocontrol转接到oal的方式,所以优先级比较高,导致操作flash的时候系统cpu loading很高
如果想解决这个问题,可以改一下架构或者采用ms 的driver

另外,你点击触摸屏没有反应的时候,可不可以做如下尝试
1. 拷贝文件之前,在device上运行一个测试程序,如播放对象存储中音频文件的播放器,当触摸屏没有反应的时候看测试程序能够正常工作;
2. 在touch driver中每次检测到用户点击的时候输出log信息,看触摸屏没有反映的时候是否有中断的log信息输出

谢谢,1、如果如你所说,我把SD卡上的数据拷贝到Pocketmory1时,系统是正常的,又如何解释?
      2、先打开SD卡上的音频文件播放,通过USB Mass Storage拷贝数据到Nand时,音频播放会停在那里,直到拷贝完成才继续播放。

to:1、如果如你所说,我把SD卡上的数据拷贝到Pocketmory1时,系统是正常的,又如何解释?
在没有看到所有线程对cpu占用的具体时间之前所有的分析都是推测
这个应该是SD卡和Mass Storage情况下USB速度的差异导致拷贝文件的时候用在flash Write上的时间长短有关
另外,“2. 在touch driver中每次检测到用户点击的时候输出log信息,看触摸屏没有反映的时候是否有中断的log信息输出”的结果是?
[/Quote]

To:1:是的,我现在确实都只是根据表象来推测;
2:把触摸屏驱动打印LOG打开,发现是有LOG输出的,虽说不是很流畅,打印如下:
DdsiTouchPanelGetPoint:: *pUncalX=2959, *pUncalY=1888
up
*pUncalX=2959,*pUncalY=1888
kyzf 2010-01-13
  • 打赏
  • 举报
回复
MARK.
eastley 2010-01-13
  • 打赏
  • 举报
回复
应该和触摸屏没有关系,我播放SD卡的音乐时传输文件,音乐就会停止,传输完成后音乐接着播放,感觉文件传输独占了CPU资源。
博说医械研发 2010-01-13
  • 打赏
  • 举报
回复
和文件系统没有关系,可能是你的NAND驱动或者触摸屏驱动有问题吧,我的MASS STORAGE通过PC往NAND的盘符里边写数据的时候可以用触摸屏。
guopeixin 2010-01-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 eastley 的回复:]
引用 5 楼 guopeixin 的回复:
引用 4 楼 guopeixin 的回复:
samsung flash驱动设计的问题,采用了所有r/w操作经由kerneliocontrol转接到oal的方式,所以优先级比较高,导致操作flash的时候系统cpu loading很高
如果想解决这个问题,可以改一下架构或者采用ms 的driver

另外,你点击触摸屏没有反应的时候,可不可以做如下尝试
1. 拷贝文件之前,在device上运行一个测试程序,如播放对象存储中音频文件的播放器,当触摸屏没有反应的时候看测试程序能够正常工作;
2. 在touch driver中每次检测到用户点击的时候输出log信息,看触摸屏没有反映的时候是否有中断的log信息输出

谢谢,1、如果如你所说,我把SD卡上的数据拷贝到Pocketmory1时,系统是正常的,又如何解释?
      2、先打开SD卡上的音频文件播放,通过USB Mass Storage拷贝数据到Nand时,音频播放会停在那里,直到拷贝完成才继续播放。
[/Quote]
to:1、如果如你所说,我把SD卡上的数据拷贝到Pocketmory1时,系统是正常的,又如何解释?
在没有看到所有线程对cpu占用的具体时间之前所有的分析都是推测
这个应该是SD卡和Mass Storage情况下USB速度的差异导致拷贝文件的时候用在flash Write上的时间长短有关
另外,“2. 在touch driver中每次检测到用户点击的时候输出log信息,看触摸屏没有反映的时候是否有中断的log信息输出”的结果是?
eastley 2010-01-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 guopeixin 的回复:]
引用 4 楼 guopeixin 的回复:
samsung flash驱动设计的问题,采用了所有r/w操作经由kerneliocontrol转接到oal的方式,所以优先级比较高,导致操作flash的时候系统cpu loading很高
如果想解决这个问题,可以改一下架构或者采用ms 的driver

另外,你点击触摸屏没有反应的时候,可不可以做如下尝试
1. 拷贝文件之前,在device上运行一个测试程序,如播放对象存储中音频文件的播放器,当触摸屏没有反应的时候看测试程序能够正常工作;
2. 在touch driver中每次检测到用户点击的时候输出log信息,看触摸屏没有反映的时候是否有中断的log信息输出
[/Quote]
谢谢,1、如果如你所说,我把SD卡上的数据拷贝到Pocketmory1时,系统是正常的,又如何解释?
2、先打开SD卡上的音频文件播放,通过USB Mass Storage拷贝数据到Nand时,音频播放会停在那里,直到拷贝完成才继续播放。
StephenGaoYu 2010-01-13
  • 打赏
  • 举报
回复
学习
guopeixin 2010-01-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 guopeixin 的回复:]
samsung flash驱动设计的问题,采用了所有r/w操作经由kerneliocontrol转接到oal的方式,所以优先级比较高,导致操作flash的时候系统cpu loading很高
如果想解决这个问题,可以改一下架构或者采用ms 的driver
[/Quote]
另外,你点击触摸屏没有反应的时候,可不可以做如下尝试
1. 拷贝文件之前,在device上运行一个测试程序,如播放对象存储中音频文件的播放器,当触摸屏没有反应的时候看测试程序能够正常工作;
2. 在touch driver中每次检测到用户点击的时候输出log信息,看触摸屏没有反映的时候是否有中断的log信息输出
guopeixin 2010-01-13
  • 打赏
  • 举报
回复
samsung flash驱动设计的问题,采用了所有r/w操作经由kerneliocontrol转接到oal的方式,所以优先级比较高,导致操作flash的时候系统cpu loading很高
如果想解决这个问题,可以改一下架构或者采用ms 的driver

19,503

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧