Linux 和并行端口 IDE 设备

PARIDE v1.03 (c) 1997-8 Grant Guenther <grant@torque.net> PATA_PARPORT (c) 2023 Ondrej Zary

1. 简介

由于并行端口接口在个人计算机上的简单性和几乎普遍性,许多外部设备,如便携式硬盘、CD-ROM、LS-120 和磁带驱动器,都使用并行端口连接到其主机。尽管有些设备(特别是扫描仪)使用临时方法通过并行端口接口传输命令和数据,但大多数外部设备实际上与内部型号相同,只是增加了并行端口适配器芯片。一些最初的并行端口适配器仅仅是用于多路复用 SCSI 总线的机制。(ZIP 驱动器中使用的 Iomega PPA-3 适配器就是这种方法的一个例子)。然而,大多数当前设计采用不同的方法。适配器芯片在外部设备中复制了一个小型 ISA 或 IDE 总线,并且通信协议提供了读写设备寄存器以及数据块传输的功能。有时,通过并行电缆寻址的设备是标准的 SCSI 控制器,如 NCR 5380。“ditto”系列外部磁带驱动器使用 ISA 复制器来接口软盘控制器,该控制器再连接到软盘磁带机构。然而,绝大多数外部并行端口设备现在都基于标准的 IDE 类型设备,无需中间控制器。例如,如果打开一个并行端口 CD-ROM 驱动器,会发现一个标准的 ATAPI CD-ROM 驱动器、一个电源和一个将标准 PC 并行端口电缆与标准 IDE 电缆互连的适配器。通常可以将 CD-ROM 设备与使用 IDE 接口的任何其他设备进行互换。

本文档描述了 Linux 中对并行端口 IDE 设备的支持。它不包括并行端口 SCSI 设备、“ditto”磁带驱动器或扫描仪。并行端口 IDE 子系统支持许多不同的设备,包括

  • MicroSolutions backpack CD-ROM

  • MicroSolutions backpack PD/CD

  • MicroSolutions backpack 硬盘驱动器

  • MicroSolutions backpack 8000t 磁带驱动器

  • SyQuest EZ-135, EZ-230 & SparQ 驱动器

  • Avatar Shark

  • Imation Superdisk LS-120

  • Maxell Superdisk LS-120

  • FreeCom Power CD

  • Hewlett-Packard 5GB 和 8GB 磁带驱动器

  • Hewlett-Packard 7100 和 7200 CD-RW 驱动器

以及市场上大多数克隆产品和无名产品。

为了支持如此广泛的设备,pata_parport 实际上分为两部分。其中一个基础的 pata_parport 模块,它提供了一个接口给内核 libata 子系统、注册表以及一些访问并行端口的常用方法。

第二部分是为每个并行端口 IDE 适配器芯片提供的一组低级协议驱动程序。感谢来自世界各地 Linux 用户的关注和鼓励,几乎所有已知的适配器协议都得到了支持。

aten

ATEN EH-100

(香港)

bpck

Microsolutions backpack

(美国)

comm

DataStor (旧式) “commuter” 适配器

(台湾)

dstr

DataStor EP-2000

(台湾)

epat

Shuttle EPAT

(英国)

epia

Shuttle EPIA

(英国)

fit2

FIT TD-2000

(美国)

fit3

FIT TD-3000

(美国)

friq

Freecom IQ 数据线

(德国)

frpw

Freecom Power

(德国)

kbic

KingByte KBIC-951A 和 KBIC-971A

(台湾)

ktti

KT Technology PHd 适配器

(新加坡)

on20

OnSpec 90c20

(美国)

on26

OnSpec 90c26

(美国)

2. 使用 pata_parport 子系统

在配置 Linux 内核时,您可以选择将 pata_parport 驱动程序内置到内核中,或者将其构建为模块。

无论哪种情况,您都需要选择“并行端口 IDE 设备支持”和至少一种并行端口通信协议。如果您不知道您的驱动器中使用了哪种并行端口适配器,可以首先检查 DOS 安装软盘上的文件名和任何文本文件。或者,您可以查看适配器芯片本身的标记。这通常足以识别正确的设备。

您可以选择所有协议模块,并让 pata_parport 子系统为您尝试所有模块。

对于上面列出的“品牌”产品,以下是您将使用的协议和高级驱动程序:

制造商

型号

协议

MicroSolutions

CD-ROM

bpck

MicroSolutions

PD 驱动器

bpck

MicroSolutions

硬盘驱动器

bpck

MicroSolutions

8000t 磁带

bpck

SyQuest

EZ, SparQ

epat

Imation

Superdisk

epat

Maxell

Superdisk

friq

Avatar

Shark

epat

FreeCom

CD-ROM

frpw

Hewlett-Packard

5GB 磁带

epat

Hewlett-Packard

7200e (CD)

epat

Hewlett-Packard

7200e (CD-R)

epat

除非使用 probe=0 参数,否则所有并行端口和所有协议驱动程序都会自动探测。因此,只需“modprobe epat”即可使 Imation SuperDisk 驱动器工作。

手动创建设备

# echo "port protocol mode unit delay" >/sys/bus/pata_parport/new_device

其中

端口

并行端口名称(或“auto”表示所有并行端口)

协议

协议名称(或“auto”表示所有协议)

模式

模式号(协议特定)或 -1 用于探测

单元

单元号(仅适用于 backpack,见下文)

延迟

I/O 延迟(参见下面的故障排除部分)

如果您正在使用 MicroSolutions backpack 设备,您还需要知道每个驱动器的单元 ID 号。这通常是驱动器序列号的最后两位数字(但请阅读 MicroSolutions 关于此的文档)。

如果您省略末尾的参数,将使用默认值,例如:

使用所有协议探测所有并行端口

# echo auto >/sys/bus/pata_parport/new_device

使用协议 epat 和模式 4 (EPP-16) 探测 parport0

# echo "parport0 epat 4" >/sys/bus/pata_parport/new_device

使用所有协议探测 parport0

# echo "parport0 auto" >/sys/bus/pata_parport/new_device

使用协议 epat 探测所有并行端口

# echo "auto epat" >/sys/bus/pata_parport/new_device

删除设备

# echo pata_parport.0 >/sys/bus/pata_parport/delete_device

3. 故障排除

3.1 如果可能,请使用 EPP 模式

人们在使用 pata_parport 驱动程序时报告的最常见问题是关于并行端口的 CMOS 设置。目前,没有任何协议模块支持 ECP 模式或任何 ECP 组合模式。如果可以,请使用您的 CMOS 设置程序将并行端口设置为 EPP 模式。

3.2 检查端口延迟

某些并行端口无法以全速可靠地传输数据。为了弥补错误,协议模块在每次访问 I/O 端口之间引入了“端口延迟”。每个协议都为此延迟设置了一个默认值。在大多数情况下,用户可以覆盖默认值并将其设置为 0,从而实现更高的传输速率。在某些罕见情况下(特别是使用较旧的 486 系统时),默认延迟不够长。如果您遇到数据传输损坏或意外故障,您可能希望增加端口延迟。

3.3 某些驱动器需要打印机复位

市场上似乎有一些“无名”外部驱动器并非总能正确启动。我们注意到一些基于 OnSpec 和较旧 Freecom 适配器的驱动器存在此问题。在这些罕见情况下,通常可以通过在并行端口上执行“打印机复位”来重新初始化适配器。由于复位操作在多设备环境中可能具有破坏性,pata_parport 驱动程序不会自动执行此操作。但是,您可以通过以下方式强制进行打印机复位:

insmod lp reset=1
rmmod lp

如果您遇到这些边缘情况之一,您应该将您的 pata_parport 驱动程序构建为模块,并在加载 pata_parport 驱动程序之前安排进行打印机复位。