关于USB驱动加载的问题,我试过好几种方法,数码之家提供的devload载入,和无优最常用的loadsys,以及在CONFIG.SYS载入驱动的方法,都无法解决加载USB驱动引起死机的问题.特别是2004年后的主板,更老火的就是一些品牌机的主板,一用USB2.0驱动加载,直接死机,让我隐隐的感觉到,问题不出在加载的驱动文件身上,而是出在加载程序身上.分析如下:
第一.USBCD.SYS、Usbaspi.sys是松下公司针对DOS下使用USB设备开发的驱动.官方说明文件中提到,只要是 Intel、NEC、nVIDIA、VIA、SIS的南桥都能正常驱动.从驱动程序编写的原理来看,既然以上提到的南桥芯片都可以正常驱动,证明了驱动程序中相关的程序代码和调用相关功能是没有问题的.凭这点就能排除问题不出在这两个驱动文件身上,哪为什么有些主板会死机呢?甚至包括一些INTEL和NVIDIA的南桥芯片主板也会死机?因为我们使用的是GRUB和LOADSYS.请继续往下看.
第二.在死机的电脑上,用DOS启动软盘启动电脑,载入USBCD.SYS、Usbaspi.sys.di1000dd.sys 驱动,可以正常在DOS下使用U盘和USBCDROM,到这里我明白了.问题出在GRUB和loadsys这两个程序身上.GRUB使用MAP --MEM虚拟了一个映像,这个映像就是内存中的动态地址.然后把USBCD.SYS、Usbaspi.sys复制到这个映像中,使用LOADSYS载入时....问题出现了.就是这里.动态存储地址.LOADSYS使用的指针,指向了错误的函数地址.如果这里使用的是句柄就不会出现这个问题.而且还有另一种可能,根据Usbaspi.sys相关参数,其中给出EHCI地址,这个地址很可能占用了GRUB虚拟出来的A盘内存地址.破坏了A盘.根据推断,这是唯一合理的解释.由于LOADSYS和GRUB似乎用的是GCC编译的.无法知道内部结构,借此,我又在网上查阅相关资料,其中有一篇文章提到.把U盘单独分一个30MB区域出来装载开机加载DOS文件和USB驱动,启动的时候首先启动此分区,然后在DOS下驱动USBCDROM,一切正常,其中还提到使用EWF缓存技术来保护U盘...大概的意思就是这个,由于文章太长了,实在不好表达清楚.老外的解决办法是用物理软盘加载USB驱动,然后在引导U盘.原理上是一样的
分析得出,问题的关键在于GRUB和LOADSYS这两个程序的兼容性上...所以,尽量使用新版本,推翻了很多网友认为的是USBCD.SYS、Usbaspi.sys文件的问题.
[ 本帖最后由 wsw8810 于 2008-6-26 01:06 AM 编辑 ] |