无忧启动论坛

标题: (原创)USBASPI.SYS新研究: Scan阶段卡死的理论解释 [打印本页]

作者: wuwuzz    时间: 2009-6-16 18:23
标题: (原创)USBASPI.SYS新研究: Scan阶段卡死的理论解释
(本帖内容,未经许可,请勿转贴、引用、盗用、摘录、改写,谢谢合作!)

一、题外话

(一)首先,诸位同学心里要明确一个结论: 尽管USBASPI.SYS存在问题,但它是
“目前能得到的、综合效果最好的驱动”,所以才值得耗费时间、精力
进一步分析。解释4点:

1、综合效果好的原因
USBASPI.SYS使用了ASPI(高级SCSI编程界面的缩写,它是Adaptec提出的一种
SCSI
外设硬件无关的通用软件接口,市场占有率高。MS、ANSI提出的另外2种
接口没能流行起来);
并且,USBASPI.SYS的ASPI编程设计有优化,实效佳。
其他驱动则不同时具备这2个条件。


2、为什么要牵扯到SCSI
USB的命令标准就是通过精简修改SCSI标准而来,驱动USB不使用SCSI的方式才叫奇怪!

3、使用方式
(1)若要使用单个USB驱动,USBASPI.SYS就行了,其他duse、usbmass之类就算了;
(2)若要多个USB驱动同时加载联用,应以USBASPI.SYS为主力+其他不使用ASPI接口的作辅助;
(3)USBASPI.SYS只是对USB mass storage海量存储设备(如DISK/CD/MO)做驱动映射,非海量
存储设备,如USB键盘、鼠标、扫描仪、打印机等不要接,避免冲突死机!

4、一句话描述
在USBASPI.SYS方式下,U盘主控---就相当于接在PCI上的SCSI卡。


(二)日本鬼子非常坏,没有给出USBASPI.SYS的详细资料,但这并不能阻碍我们通过其他线索
(如ASPI)来入手分析。我一直希望大家见到问题能够知难而进,查找资料研究,知其所以然,
以作为今后操作改进的指导,而不是挂在那里停滞不前。


[ 本帖最后由 wuwuzz 于 2009-6-16 18:35 编辑 ]
作者: wuwuzz    时间: 2009-6-16 18:24
二、转入正题,Scan卡死分析

主要论据来自我对Adaptec PCI SCSI卡驱动和Linux PCI内核选项有关资料信息的解读。

(一) 问题出在Scan PCI BUS上。ASPI manager确定PCI SCSI卡是否安装,有3种扫描方式:

1、通过PCI BIOS调用INT 1Ah扫描PCI BUS;
2、通过Intel PCI config Mechanism1扫描PCI BUS;
3、通过Intel PCI config Mechanism2扫描PCI BUS。


大多数PCI系统(主板)不能同时支持3种扫描方式。

第2、3种方式是不通过BIOS,强制直接访问硬件,与Intel芯片组有关,大多数芯片组使用
Mechanism1,只有很老的芯片组才使用Mechanism2。两者的区别在于:在PCI系统中发挥重要
作用的CF8H/CFCH寄存器使用方式不同。
选错Mechanism1/Mechanism2会造成系统挂起或重启。

第1种方式则与上面相反,不直接访问硬件,而是完全信任BIOS(大多数情况下它并不可信),
通过BIOS访问。这种方式的问题有很多,其中一条是,
通过PCI BIOS调用来获取中断路由表,
但这种调用在不少机器上都有缺陷,会导致系统挂起! 但在某些机器上却又是唯一获取中断
路由表的手段! 晕~

(二)用winhex打开USBASPI.SYS,通过分析字符串,我们有理由推断,USBASPI.SYS应该是采用
第1种方式扫描PCI BUS。这种方式的问题见上面分析。

Scan问题,我们基本上无力解决,只能尽量调整BIOS,尤其是IRQ选项去与USBASPI.SYS协调。
更进一步的解决办法还是USBASPI.SYS在版本升级时,增加PCI BUS扫描选项。除了PCI BIOS调用,
还应有Mechanism1扫描选项。


[ 本帖最后由 wuwuzz 于 2009-6-16 18:33 编辑 ]
作者: szl1990    时间: 2009-6-16 19:37
沙发,~~~太深奥了,不懂,不过对在DOS下加载USB驱动很感兴趣。
作者: fujianabc    时间: 2009-6-16 23:31
那一些垃圾主板插着usb开机自检时卡死,是不是也与此问题有关?
作者: CWD    时间: 2009-6-17 00:59
优盘 作为国产技术,在参与行业标准制定上完全没有行为能力,以致直到今天仍然还没有一份通用的启动引导标准出炉,好在其在移动实际应用方面过关斩将坐上了第一把交椅,引导程序开发作者、硬件厂商、系统商家(包括微软)都前呼后继的伸出了橄榄枝,相信今后将会如当年DDR 般勇,成为一代楷模。。。

[ 本帖最后由 CWD 于 2009-6-17 13:23 编辑 ]
作者: wuwuzz    时间: 2009-6-17 07:16
原帖由 CWD 于 2009-6-17 00:59 发表
USB 作为国产技术,在参与行业标准制定上完全没有行为能力,以致直到今天仍然还没有一份通用的启动引导标准出炉,好在其在移动实际应用方面过关斩将坐上了第一把交椅,引导程序开发作者、硬件厂商、系统商家(包 ...


不。USB启动标准早就制定了---UMSD bootability spec,内容是:BOOT主要还是遵循(继承)
以往的老介质(FD/CD等)BOOT标准,并针对UMSD海量存储设备做了UFI格式上的细微调整。

[ 本帖最后由 wuwuzz 于 2009-6-17 07:27 编辑 ]
作者: aidixiao    时间: 2009-6-17 08:27
分析的太好了,好好学习领会!
作者: CWD    时间: 2009-6-17 13:22
原帖由 wuwuzz 于 2009-6-17 07:16 发表


不。USB启动标准早就制定了---UMSD bootability spec,内容是:BOOT主要还是遵循(继承)
以往的老介质(FD/CD等)BOOT标准,并针对UMSD海量存储设备做了UFI格式上的细微调整。

呃。。。我在5楼的第一个词说错了,是“优盘”而不是“USB”,把“USB”说成国产技术英特尔非跟我死过不可。。。哈哈!
作者: wuwuzz    时间: 2009-6-18 17:51
原帖由 fujianabc 于 2009-6-16 23:31 发表
那一些垃圾主板插着usb开机自检时卡死,是不是也与此问题有关?


我没有相关资料,不能确定,推测有关。这个情况也是发生在BIOS SCAN初始化阶段。
作者: 张建余    时间: 2009-6-19 02:19
原帖由 wuwuzz 于 2009-6-18 17:51 发表


我没有相关资料,不能确定,推测有关。这个情况也是发生在BIOS SCAN初始化阶段。

我发现的这个问题:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=141951&highlight=,是否也与USBASPI.SYS在 Scan阶段卡死有关呢?
希望大师进一步研究。

[ 本帖最后由 张建余 于 2009-6-19 02:21 编辑 ]
作者: aserlee    时间: 2009-6-22 23:42
技术话题,看看,了解了解,支持支持~!
作者: hzdjzx    时间: 2009-7-21 02:29
学习充电中~~~~~~~
作者: jrs13579    时间: 2009-7-21 08:18
支持研究,造福人民!
作者: perhapszy    时间: 2009-9-7 15:28
学习。。。。。。。。。。。
作者: 歌理    时间: 2009-9-7 23:12
这样的帖子就要顶!!!!!!!!!!!!




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3