szzy
驱动牛犊
驱动牛犊
  • 注册日期2002-08-12
  • 最后登录2007-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3857回复:15

scsi miniport driver问题,在线寻帮助!

楼主#
更多 发布于:2004-05-27 15:24
公司做的scsi miniport driver 有一个bug,详细情况如下:
这个驱动是专门为SD和MMC卡而做的,现在的问题是我可以FORMAT MMC 卡,但是不能FORMAT SD 卡,而这两个卡用的是同一个IP,而且驱动也是一样的。看驱动代码发觉子所以不能格式化是因为在SCSIStartio例程里面SRB->CDB[0]不等于SCSIOP_READ,在mmc格式化时就有SCSIOP_READ操作。我查了一些资料发现srb的数据结构都是操作系统的port driver 填充的。我现在想问的是我们有办法操作这些数据结构吗?为什么同样的操作引起在SCSIStartio例程里路径不同?(是不是驱动的初始化的引起的?)这个问题困扰我好几天了,哪位做过这方面的清给于赐教,非常谢谢!
szzy
驱动牛犊
驱动牛犊
  • 注册日期2002-08-12
  • 最后登录2007-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-06-23 13:08
AllenZh or terrychen,
      我们的芯片能对128m的SD卡进行正常的读写和格式化(FAT32,NTFS)。但是现在唯独不能对64M的SD卡进行格式化(FAT32,NTFS)。我想问你们一下如果SCSIOP_READ_CAPACITY读出来的容量不对,我还能对我的卡能进行正常的读写吗?现在我的卡问题是不能格式化,要是copy大文件则速度比较慢。
terrychen
驱动小牛
驱动小牛
  • 注册日期2002-04-15
  • 最后登录2014-03-13
  • 粉丝0
  • 关注0
  • 积分174分
  • 威望68点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-06-23 11:08
SCSIOP_READ_CAPACITY的问题AllenZh说得差不错,mode_sense的问题你不用介意,那个命令是去读一些scsi的配置页,如果没有check condition更好了。说明你们的配置页都不缺
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-06-23 09:05
SCSIOP_READ_CAPACITY返回的是否与你的实际大小一致?
是否你的SD卡对大容量不支持,你使用什么格式(Fat16、32还其它)进行格式化的。
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
szzy
驱动牛犊
驱动牛犊
  • 注册日期2002-08-12
  • 最后登录2007-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-06-22 18:47
terrychen or AllenZh:
     前一段时间出差了,回来继续check这个问题。我们的block size定义为512字节。我想问一下你是怎么确认Max LBA是对的还是错的?我仔细检查了所有SD卡的command发现也都是对的。64M的SD卡可以正常进行读写的,如果Max LBA是错的,应该是不能进行读写SD卡的吧.另一个问题是在我的驱动里我怎么能得到mode_sense的check condition?
szzy
驱动牛犊
驱动牛犊
  • 注册日期2002-08-12
  • 最后登录2007-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-06-01 09:39
terrychen and AllenZh

thank you very much and i will check my code according to your suggestion.

terrychen
驱动小牛
驱动小牛
  • 注册日期2002-04-15
  • 最后登录2014-03-13
  • 粉丝0
  • 关注0
  • 积分174分
  • 威望68点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-06-01 09:28
AllenZh,说得很有道理,问题我个人感觉startio里面问题可能大些,SCSIOP_TEST_UNIT_READY(最多)
SCSIOP_MODE_SENSE
SCSIOP_READ_CAPACITY(最多)
SCSIOP_VERIFY(比较多)(比较多)具体的返回的数值有问题么?比如说你SCSIOP_READ_CAPACITY,返回的block size和Max LBA对么?一个个好好再看看
而且我经常看到mode_sense会返回check condition的情况,你最好check一下
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-05-31 22:54
AllenZh
为什么同样规格的卡(容量不一样)有的卡可以格式化有的却不行?
我现在是不是可以定为问题主要是出在startio例程里面?
非常谢谢!

你是怎么确定卡只是容量不一样的?
又有什么理由是startio呢?
为什么不可能是卡不一样(当然不仅包括容量)呢?
为什么不可能是其它地方呢?
你仔细查阅一下scsi规范,尤其看看初试化部分,是不是有问题
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
szzy
驱动牛犊
驱动牛犊
  • 注册日期2002-08-12
  • 最后登录2007-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-05-31 17:38
AllenZh
非常谢谢你的建议,只是公司有严格的保密制度,代码就。。。。实在是不好意思。

terrychen
我刚才察看了一下这些命令返回的数据主要是对 Srb->ScsiStatus和
Srb->SrbStatus的赋值。
SCSIOP_TEST_UNIT_READY返回的是:
Srb->ScsiStatus = SCSISTAT_GOOD;
Srb->SrbStatus = SRB_STATUS_SUCCESS|SRB_STATUS_AUTOSENSE_VALID;

SCSIOP_MODE_SENSE返回的是:
<对senseBuffer和cacheBuffer赋值操作>
Srb->ScsiStatus = SCSISTAT_GOOD;
Srb->SrbStatus = SRB_STATUS_SUCCESS;

SCSIOP_READ_CAPACITY返回的是:
<读capacity的一些操作>
Srb->ScsiStatus = SCSISTAT_GOOD;
Srb->SrbStatus = SRB_STATUS_SUCCESS;

SCSIOP_VERIFY返回的是:
Srb->ScsiStatus = SCSISTAT_GOOD;
Srb->SrbStatus = SRB_STATUS_SUCCESS;

每个Srb完成后都执行了这两步:
ScsiPortNotification(RequestComplete, pdx, Srb);
ScsiPortNotification(NextRequest, pdx, NULL);

为什么同样规格的卡(容量不一样)有的卡可以格式化有的却不行?
我现在是不是可以定为问题主要是出在startio例程里面?
非常谢谢!
terrychen
驱动小牛
驱动小牛
  • 注册日期2002-04-15
  • 最后登录2014-03-13
  • 粉丝0
  • 关注0
  • 积分174分
  • 威望68点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-05-31 11:26
SCSIOP_TEST_UNIT_READY(最多)
SCSIOP_MODE_SENSE
SCSIOP_READ_CAPACITY(最多)
SCSIOP_VERIFY(比较多)(比较多)
都是很正常的.在做format的时候经常要操作的。你看看你对这些命令的返回的数据有问题么
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-05-30 15:58
SCSIOP_TEST_UNIT_READY是用来测试硬件设备的
SCSIOP_READ_CAPACITY是读取容量信息的
相应的命令你可查看scsi规范,具体我就不在这里多说了
至于初试化问题,你需要看具体的scsi设备(不同scsi设备有细微差别)的规范而定,如果可能将你的程序mail给我,这样或许能更快速的定位你的错误。
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
szzy
驱动牛犊
驱动牛犊
  • 注册日期2002-08-12
  • 最后登录2007-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-05-28 17:22
我看了一下PORT驱动在格式化传给我的MINIPORT驱动的命令:
SCSIOP_TEST_UNIT_READY(最多)
SCSIOP_MODE_SENSE
SCSIOP_READ_CAPACITY(最多)
SCSIOP_VERIFY(比较多)
我不知道这种情况是不是何初始化也有关系?
非常谢谢!
terrychen
驱动小牛
驱动小牛
  • 注册日期2002-04-15
  • 最后登录2014-03-13
  • 粉丝0
  • 关注0
  • 积分174分
  • 威望68点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-05-28 16:43
我明白你的意思,你的意思就是说为什么port不给你miniport发read,write命令,但是做格式化也不全是read,write,还有别的命令在里面,我问的是你那些命令既然不是read,write,那是些什么命令?port driver总会发命令的,你看看是什么命令,再看看你的miniport driver里面对这些命令的实现都正确么?
szzy
驱动牛犊
驱动牛犊
  • 注册日期2002-08-12
  • 最后登录2007-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-05-28 16:08
terrychen:
      谢谢你的回复。
      我第一次作scsi miniport 驱动程序,刚开始学,有很多不懂。这次用sandiak 64M 的SD 卡是不能格式化的(不能得到“format complete”提示),但我的美国那边的同事告诉我用
SanDisk 16MB 和Lexar 128MB SD卡时刻以格式化的。你能不能告诉我导致这问题的可能原因吗?(我仔细察看了DEBUG信息,发现POPRT 驱动没有发SCSIOP_READ和SCSIOP_WRITE 指令,现在是不知道为什么PORT 驱动不给我的MINIPORT 驱动发这些指令?)非常谢谢!
terrychen
驱动小牛
驱动小牛
  • 注册日期2002-04-15
  • 最后登录2014-03-13
  • 粉丝0
  • 关注0
  • 积分174分
  • 威望68点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-05-28 13:02
SRB->CDB[0]不是read不是很正常么?port driver是不会错的,SRB->CDB[0]是什么东西?
kangzh
驱动小牛
驱动小牛
  • 注册日期2004-03-09
  • 最后登录2012-08-06
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望22点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-05-27 15:54
ding
游客

返回顶部