bl4330752
驱动牛犊
驱动牛犊
  • 注册日期2004-05-19
  • 最后登录2005-03-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2038回复:5

请问U盘的写保护状态是如何取得的?

楼主#
更多 发布于:2005-03-01 14:11
请问U盘的写保护状态是如何取得的?

用BUS HOUND 观察数据,在PC上好像是通过MODE SENSE 命令查询的,下面是捕捉到的数据:
  19    CDB    1a 00 1c 00  c0 00        MODE SENSE        
  19    CDB    1a 00 3f 00  c0 00        MODE SENSE        
  17.1  DO     55 53 42 43  c8 58 8a ff  USBC.X..        
               c0 00 00 00  80 00 06 1a  ........  
               00 1c 00 c0  00 00 00 00  ........  
               00 00 00 00  00 00 00     .......  
  17.2  DI     03 00 80 00               ....    
  17.2  RSET                                      
  17.2  DI     55 53 42 53  c8 58 8a ff  USBS.X..
               bc 00 00 00  00           .....    
  19    DI     03 00 80 00               ....    
  19    SSTS   12                        data overrun  
请问其中的RSET是如何实现的? SSTS 为 12 又是怎么回事?

[编辑 -  3/1/05 by  bl4330752]
fujionline
驱动牛犊
驱动牛犊
  • 注册日期2003-01-08
  • 最后登录2005-09-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-03-02 08:59
对于可移动设备来说,host配置完USB device后OS会下modesense(6)来检测设备的属性,最简单的写保护就是在返回数据的第三个字节的最高位设为1就可以了,其他都不用管,是os的行为。
bl4330752
驱动牛犊
驱动牛犊
  • 注册日期2004-05-19
  • 最后登录2005-03-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-03-04 17:06
对于可移动设备来说,host配置完USB device后OS会下modesense(6)来检测设备的属性,最简单的写保护就是在返回数据的第三个字节的最高位设为1就可以了,其他都不用管,是os的行为。


您好,我做的是HOST,通过MODE SENSE(6) 命令也得到了需要的数据,可是不清楚BUS HOUND 中的 RSET 行为到底做了些什么。
如果不进行这个RSET动作,下面的命令DEVICE就只是NAK了。

请多指教!
fujionline
驱动牛犊
驱动牛犊
  • 注册日期2003-01-08
  • 最后登录2005-09-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-03-04 23:20
我的想法是,不知道你用的U盘用的是什么方式告知host它的状态,我上面说的方法在PC上是不会引起usb busreset动作的,不过由于另外的一个情况,就是u盘连在系统上的时候你拨动写保护开关的时候,怎么样通知系统状态的改变(你是不是这个时候抓的bus hound?),我用的是返回CSW error,引发os的request sense。可能还有别的方式可以做到这点,也许会引发os的bus reset。
Clamfly
驱动牛犊
驱动牛犊
  • 注册日期2005-01-21
  • 最后登录2006-02-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-03-06 15:30
好像就是恢复CSW_CHECK_CONDITION,不过如果当前命令有DATA传输的话,DATA传输阶段不可缺少,否则就会有BUS Reset。
Clamfly
驱动牛犊
驱动牛犊
  • 注册日期2005-01-21
  • 最后登录2006-02-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-03-06 15:37
不过你的问题应该时data overrun吧,传输了比Host要求还多的数据。
游客

返回顶部