注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

飞扬时空

专心专注 精雕细琢

 
 
 

日志

 
 

【转载】【好文推荐】在DOS下使用USB存储设备  

2010-05-16 02:25:09|  分类: 电脑应用 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在DOS下使用USB存储设备

注:以下内容是我制作DOS启动盘时为驱动USB2.0 U盘等设备时在网络上收集而来,原出处已不清楚,仅供参考。

这里的USB存储设备是指USB Mass Storage Device,
包括优盘,闪存读卡器,MP3,USB移动硬盘, USB的外置软驱,光驱,ZIP,MO驱动器等

背景:关于UHCI/OHCI/EHCI
UHCI(Universal Host Controller Interface)及OHCI(Open Host Controller Interface)是两类USB控制器,不同的电脑上控制器类型会有所不同。在Windows的设备管理器中可以查看你的电脑中用的是UHCI还是OHCI
EHCI(Enhanced Host Controller Interface)是USB2.0高速设备的虚拟控制器
通常支持UHCI/OHCI即表示支持USB1.1,支持EHCI表示支持USB2.0高速设备

第一类驱动程序:DUSE
DUSE的功能比较齐全,可识别设备的热拔插,支持EHCI, 但貌似所能支持的设备不是很多
使用方法:在config.sys中用device命令加载DUSE.EXE或启动后用DUSELDR加载
我的优盘和读卡器没有办法用DUSE驱动,所以这里只是简单介绍一下。
详细的参数说明可以看那个DUSE User's Guide。

第二类驱动程序:USBASPI+Di1000dd+...
这类驱动程序是把USB设备映射为一个SCSI设备,提供一个ASPI(Advanced SCSI Programming Interface高级SCSI编程接口),然后再加载相关的SCSI设备驱动。
优点是兼容性相当好,支持的设备比较广泛。
我用其成功地驱动过优盘,读卡器和MP3。这类驱动还可和DOSLFN一起使用来访问长文件名,加载UCDOS后更能处理中文长文件名。
此外可直接被PQ等分区软件所识别(FDISK貌似有一些问题)
缺点是不能支持热拔插。
驱动程序只在启动时识别一次设备,以后就不认了,即使是同一个设备,拔了再插上也不行。要换盘必须重启。

使用方法:
一、首先在config.sys中加载USB到ASPI的映射程序
注意:在DOS执行相应的device命令之前需要把USB设备接好,或者加上/w参数。否则不能识别,USBASPI不驻留内存,后续的设备驱动也将报错。
如果启动时来不及,可以开机后按下Pause暂停,按任意键继续,也可以在config里配个多配置菜单停一下。方法很多,可以自由发挥。

常见的USBASPI有几个:
1. NOVAC Co. Ltd.的ASPI for UHCI/OHCI USB mass-storage Ver 1.07
2. Panasonic的ASPI Manager for USB Mass-storage Ver 2.06

其中V1.07启动速度很快,但只支持USB1.1,如果主板是USB2.0,有6个USB口的,只能把设备接到头两个USB口(USB0和USB1,具体参考主板说明书,通常是在两个PS/2口旁边)上,否则不能识别。
V2.06支持USB2.0,设备接哪里都可以识别,但加载时检测设备是慢得一塌糊涂,跟死机差不多。
另外还有一个Medialogic Corp.的ASPI Manager for USB mass-storage Version 2.01,我没怎么用过。从加载时的显示来看貌似和V1.07的差不多。这是从一个叫DAT.EXE的程序生成的启动盘里提出来的,这个盘上还有一个1394的驱动!这个等下再讲。

常用参数:
/w 加载时暂停,以便让用户有时间接入USB设备
/v 显示详细的总线信息,可用于故障诊断等
/r 有USB软驱时使用

V2.06的专用参数
/e 只允许USB2.0设备
/o 只检测OHCI控制器
/u 只检测UHCI控制器
/l# 指定设备的LUN序号(貌似指在SCSI菊花链上的ID)
/nocbc 不扫描PCMCIA的USB接口卡
/norst 不重置已经被BIOS接管的USB设备(如启用USB Legacy Support后的键盘鼠标)

其它参数
/p=xxx0 指定UHCI的IO地址
/m=xx 貌似V1.07专用,指定OHCI的IO地址为xx000h,xx可取D0-DF
注:在系统中有OHCI控制器时最好不要使用EMM386,要用也必须加上X=D000-DFFF参数,以防止冲突

示例
device=usbaspi.sys /v /w


另外还有ASPIOHCI,ASPIUHCI,APSIEHCI等也是USB到ASPI的映射程序,但能够识别的控制器和设备种类有限。

二、然后在config.sys中加载相关的SCSI驱动

说明:因为没有具体设备,所以除了优盘、读卡器和MP3外,我都没有实际验证过驱动程序的兼容性如何。对于优盘、读卡器和MP3也仅限于少数样本。

i)优盘,读卡器,MP3,移动硬盘
使用SCSI硬盘驱动
我常用的是di1000dd.sys
这个是NOVAC Co. Ltd的ASPI Disk Manager V2.00

另外DAT.EXE做的那个盘里有一个NJ32DISK.SYS,
是Workbit Corp.的Ninja SCSI-32 UDE ASPI DISK Driver Ver 1.06
都差不多,不需要什么参数

网上还可能见到一个APSIDISK.SYS的,也是同样的功能。

示例
device=di1000dd.sys


ii)USB外置CDROM
用法和普通IDE光驱驱动相似
1.首先要在config.sys里加载一个SCSI光驱驱动
常见的有USBCD.SYS,这是Panasonic的USB CD-ROM Device Driver Version 1.00

网上还可能见到NJUSBCDA.SYS, IBMUSBCD.SYS等,功能相同,兼容性各异

参数
/d:xxxxx 设备名,同IDE光驱驱动

2.然后在autoexec.bat里或启动后手工运行mscdex

示例
config.sys:
device=usbcd.sys /d:mscd001
autoexec.bat:
mscdex /d:mscd001


iii)USB外置软驱
在加载USBASPI **之前** 加载RAMFD.SYS,然后加载USBASPI时加上/r参数

示例
device=RAMFD.SYS
device=USBASPI.SYS /w /v /r


附:
关于DOS版本
通常建议使用DOS 7.10,即Win98SE[4.10.2222A]里的那个。这是最后的“纯”MSDOS官方版本。WinMe带的DOS8.0的io.sys屏蔽了启动到实模式的功能,虽然可以打补丁破解,但不推荐。
DOS 6.22也可以,但没有长文件名支持,没有FAT32支持。我估计DOS 5.0也行的,因为DOS6,7其实都只是在5的基础上修修补补。

关于CMOS设置中的Legacy USB support或类似选项
这些选项最好关掉,因为这样BIOS会接管USB设备,通常会与USBASPI发生冲突。

关于USB键盘鼠标
有些主板的BIOS可直接支持USB键盘鼠标,可以在CMOS设置中打开。但前面讲了这个选项可能会和USBASPI冲突,要用优盘的话就得关掉。
另外有一个叫USBLink软件,包含UHCI.EXE和OHCI.EXE,可用于驱动USB键盘和鼠标。两个程序分别用于不同的控制器。

关于1394上的存储设备
有一些跑题,呵呵。在DAT.EXE做的那个盘里有一个SBP2ASPI.SYS
这个是Medialogic Corp.的ASPI Manager for 1394(SBP2) device Version 1.02,号称可以驱动火线的移动硬盘等设备
用法类似USBASPI,也是把1394设备映射到ASPI,再加载相关的SCSI设备驱动(那张盘上用的NJ32DISK.SYS)
SBP2ASPI.SYS的参数未知,没有/w参数,/v貌似可以,不过我没有具体设备,也看不到
另外发现SBP2ASPI.SYS也是要占用UMB部分地址的,类似USBASPI V1.07在OHCI上的情况,与EMM386冲突,但不清楚冲突的具体地址,没法用X参数避开。
兼容性未知


最后贴一个我的多重启动config.sys示例。其中USBASPI1.SYS是V1.07的,USBASPI2.SYS是V2.06的。
常见的Intel和VIA的主板芯片组所集成的USB控制器都是UHCI的,所以我加上了EMM386且没有加X参数以减少常规内存占用。

config.sys:
[menu]
menuitem=WIN, Windows9x Compatiable (NO EMM386/CDROM/USB/FireWire)
menuitem=CDROM,   ATAPI CDROM Support
submenu=USB107,   USB ASPI Support V1.07 [recommand]
submenu=USB206,   USB ASPI Support V2.06 (Slower bus scaning w/EHCI support)
menuitem=SBP2,    FireWire(IEEE1394) Mass Storage Support V1.02 [experimental]
menudefault=USB107,10

[USB107]
menuitem=USB1,    USB Mass Storage V1.07 Support
menuitem=CD_USB1, USB Mass Storage V1.07 & ATAPI CDROM Support
menuitem=USBCD1, USB Mass Storage V1.07 & USB CDROM Support
menudefault=CD_USB1, 5

[USB206]
menuitem=USB2,    USB Mass Storage V2.06 Support
menuitem=CD_USB2, USB Mass Storage V2.06 & ATAPI CDROM Support
menuitem=USBCD2, USB Mass Storage V2.06 & USB CDROM Support
menudefault=CD_USB2

[COMMON]
files=10
buffers=10
stacks=9,256
lastdrive=z

[WIN]
dos=high,umb
device=himem.sys

[DOS]
dos=high,umb,single
device=himem.sys
device=emm386.exe noems

[CDROM]
include=DOS
devicehigh=oakcdrom.sys /d:mscd000

[USB1]
include=DOS
device=USBASPI1.SYS /v /w
devicehigh=Di1000dd.SYS

[USB2]
include=DOS
device=USBASPI2.SYS /v /w
devicehigh=Di1000dd.SYS

[CD_USB1]
include=DOS
devicehigh=oakcdrom.sys /d:mscd000
device=USBASPI1.SYS /v /w
devicehigh=Di1000dd.SYS

[CD_USB2]
include=DOS
devicehigh=oakcdrom.sys /d:mscd000
device=USBASPI2.SYS /v /w
devicehigh=Di1000dd.SYS

[USBCD1]
include=DOS
device=USBASPI1.SYS /v /w
devicehigh=USBCD.sys /d:mscd000
devicehigh=Di1000dd.SYS

[USBCD2]
include=DOS
device=USBASPI2.SYS /v /w
devicehigh=USBCD.sys /d:mscd000
devicehigh=Di1000dd.SYS

[SBP2]
include=WIN
rem SBP2ASPI.SYS seems incompatible with "EMM386 NOEMS"
device=SBP2ASPI.SYS /v
devicehigh=NJ32DISK.SYS /r
rem devicehigh=Di1000dd.SYS

  评论这张
 
阅读(1699)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016