首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

如何在LINUX下实现硬件的自动检测 - 并行设备的自动检测

如何在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

返回列表