如何在LINUX下实现硬件的自动检测 - 并行设备的自动检测
- UID
- 1066743
|
如何在LINUX下实现硬件的自动检测 - 并行设备的自动检测
6.1 并行设备检测的一般过程在Linux下要实现连接在并口上的设备检测,要求设备必须是支持IEEE1284协议的。对于不支持IEEE1284通讯协议的并行设备,是无法完成自动检测的。同样在定制系统内核时,也必须在并行端口支持(Parallelport support)选项中选中IEEE 1284 transfermode这一项。在并口检测开始时,检测程序应检查是否存在/proc/sys/dev/parport目录(针对2.4.x内核),若不存在则尝试插入模块parport。加载parport模块一般有三种方式:
- 静态插入模块
insmod parport.o
或 insmod parport_pc.o io=0x3bc,0x378,0x278 irq=none,7,auto
废除系统缺省的检测值 - kmod(/etc/modules.conf)加载
alias parport_lowlevel parport_pc
options parport_pc io=0x378,0x278 irq=7,auto
内核的并口探测程序用于获得IEEE1284设备标识信息。在并口被检测时,连接到其上的设备被分析。探测的信息在/proc/sys/dev/parport/。 - 在编译并口代码进入内核之后,使用内核加在参数
如:加入LILO命令行
parport=0x3bc parport=0x378,7 parport=0x278,auto,nofifo
parport=0
禁止内核parport支持
parport=auto
内核自动检测 在成功的插入了此模块之后,这时/proc文件系统下就会存在目录/proc/sys/dev/parport,但是此时此目录下的文件大部分为空,没有任何内容。这时您就可以根据并口连接的设备,尝试插入相应的内核驱动模块。例如,当连接并口打印机时,您可以插入模块lp。使用如下命令:
insmod lp parport=0 (对于打印机连接在并口0(LPT1))
在成功插入此模块之后,而且在连接的并口设备支持IEEE1284协议时,这时此目录下的autoprobe,modes等文件会出现设备上读出的设备描述以及设备配置信息。由此信息,您可以在CUPS中选择对应的打印机驱动程序,完成打印机的配置。
6.2/proc/sys/dev/parport/文件结构目录树:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| parport
|-- default
| |-- spintime
| `-- timeslice
|-- parport0
| |-- autoprobe
| |-- autoprobe0
| |-- autoprobe1
| |-- autoprobe2
| |-- autoprobe3
| |-- devices
| | |-- active
| | `-- lp
| | `-- timeslice
| |-- base-addr
| |-- irq
| |-- dma
| |-- modes
| `-- spintime
`-- parport1
|-- autoprobe
|-- autoprobe0
|-- autoprobe1
|-- autoprobe2
|-- autoprobe3
|-- devices
| |-- active
| `-- ppa
| `-- timeslice
|-- base-addr
|-- irq
|-- dma
|-- modes
`-- spintime
|
文件文件内容devices/active使用那个端口的设备驱动程序列表。在当前使用端口的设备前会出现一个"+"号。串"none"意味着没有设备驱动程序使用这个端口。base-addr并行端口的基地址或再不只一个端口时由tab分隔的多个基地址。irq并行端口的IRQ,若不使用时则用-1dma并行端口的dma通道,若没有使则用-1modes并行端口的硬件模式PCSPPPC风格的SPP寄存器可用(标准并行端口)TRISTATE 端口是双向的COMPAT打印机的硬件加速可用EPP EPP协议的硬件加速可用(增强并行端口)ECPECP协议的硬件加速可用DMA DMA可用autoprobe已经获得的IEEE-1284设备标识信息autoprobe[0-3]从遵循IEEE-1284.3的雏菊链路设备取出的设备信息spintime忙循环等待外设响应的微秒数。调节此值可以改善外设的性能。这是端口级的设置。它应用于此端口上的所有设备timeslice设备驱动程序允许保持端口声明的微秒数。这只是一个建议,驱动程序在必要时可以忽略。default/*在注册新端口时,它取出缺省的spintime。在注册新设备时,它取出缺省时间片。
例如,在系统连接了HP LaserJet6L打印机之后,此目录下关键文件的内容为:
1
2
3
4
5
6
7
8
9
10
11
12
13
| /proc/sys/dev/parport/parport0/autoprobe:
CLASSRINTER; (连接的设备为打印机)
MODEL:HP LaserJet 6L; (打印机类型描述)
MANUFACTURER:Hewlett-Packard; (制造商类型)
DESCRIPTION:Hewlett-Packard LaserJet 6L Printer;
/proc/sys/dev/parport/parport0/modes:
PCSPP,TRISTATE
/proc/sys/dev/parport/parport0/base-addr:
888 1912
/proc/sys/dev/parport/parport0/irq:
-1
/proc/sys/dev/parport/parport0/dma:
-1
|
|
|
|
|
|
|