Board logo

标题: 如何在LINUX下实现硬件的自动检测-ISAPNP设备的自动检测 [打印本页]

作者: look_w    时间: 2018-4-15 19:48     标题: 如何在LINUX下实现硬件的自动检测-ISAPNP设备的自动检测

ISAPNP设备的自动检测3.1 ISAPNP设备简介在每个ISAPNP设备加电启动之后,都会进行一个自动配置过程,它的主要步骤如下:
在隔离过程结束时,当前控制的卡被指定一个句柄,称为Card SelectNumber(CSN),用于以后检索此卡。在卡响应其他的命令之前,此卡必须被指定一个CSN。
CSN是一个8位寄存器,加电使所有卡的此寄存器置为0x0。一旦卡的隔离操作结束,此卡的CSN寄存器被指定一个独一无二的值,以使pnp软件能区别所用的卡。isapnp状态如下:
关于ISAPNP设备的详细的硬件信息,您可以参考
3.2Linux系统下ISAPNP设备的自动检测ISA设备的自动检测是指对支持Plug and PlayISA规范1.0的ISA设备的检测,对不支持此规范的ISA设备,此检测过程是无法工作的。这时的硬件检测和配置是完全要根据用户的个人经验进行。在进行下述检测过程之前,对于基于2.2.X内核的Linux系统,需要用户安装包isapnptools。对于2.4.x内核,则用户只需在编译内核时加入        ISA Plug and Playsupport即可。在检测开始之前,必须由用户手动插入模块(modprobe)isapnp.o或者isa-pnp.o(由内核版本决定)。在用户插入上述模块之后,内核会自动生成/proc下对应的描述文件。这些描述文件包括/proc/isapnp,/proc/bus/isapnp/devices,/proc/bus/isapnp/        csn。      
例如,在系统中存在OPL3-SA3类型的声卡时,未挂接设备驱动程序的情况下,/proc/isapnp文件内容如下:
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
35
36
37
38
39
40
41
42
43
44
Card 1 'YMH0020:OPL3-SA3 Sound Board' PnP version 1.0
  Logical device 0 'YMH0021:Unknown'
    Device is not active
    Active DMA 0,0
    Resources 0
      Priority preferred
      Port 0x220-0x220, align 0xf, size 0x10, 16-bit address decoding
      Port 0x530-0x530, align 0x7, size 0x8, 16-bit address decoding
      Port 0x388-0x388, align 0x7, size 0x8, 16-bit address decoding
      Port 0x330-0x330, align 0x1, size 0x2, 16-bit address decoding
      Port 0x370-0x370, align 0x1, size 0x2, 16-bit address decoding
      IRQ 5 High-Edge
      DMA 0 8-bit byte-count type-A
      DMA 1 8-bit byte-count type-A
      Alternate resources 0:1
        Priority acceptable
        Port 0x240-0x240, align 0xf, size 0x10, 16-bit address decoding
        Port 0xe80-0xe80, align 0x7, size 0x8, 16-bit address decoding
        Port 0x388-0x388, align 0x7, size 0x8, 16-bit address decoding
        Port 0x300-0x300, align 0x1, size 0x2, 16-bit address decoding
        Port 0x100-0xffe, align 0x1, size 0x2, 16-bit address decoding
        IRQ 5,7,2/9,10,11 High-Edge
        DMA 0,1,3 8-bit byte-count type-A
        DMA 0,1,3 8-bit byte-count type-A
      Alternate resources 0:2
        Priority functional
        Port 0x220-0x280, align 0xf, size 0x10, 16-bit address decoding
        Port 0x530-0xf48, align 0x7, size 0x8, 16-bit address decoding
        Port 0x388-0x3f8, align 0x7, size 0x8, 16-bit address decoding
        Port 0x300-0x334, align 0x1, size 0x2, 16-bit address decoding
        Port 0x100-0xffe, align 0x1, size 0x2, 16-bit address decoding
        IRQ 3,5,7,2/9,10,11 High-Edge
        DMA 0,1,3 8-bit byte-count type-A
        DMA 0,1,3 8-bit byte-count type-A
  Logical device 1 'YMH0022:Unknown'
    Compatible device PNPb02f
    Device is not active
    Active DMA 0,0
    Resources 0
      Priority preferred
      Port 0x201-0x201, align 0x0, size 0x1, 16-bit address decoding
      Alternate resources 0:1
        Priority functional
        Port 0x201-0x211, align 0xf, size 0x1, 16-bit address decoding




上述信息的第一行表示此ISA设备的板卡数,其后的YMH0020表示板卡标识。以"LogicalDevice"为行首的小节代表不同的逻辑设备(一块isapnp卡上可以存在多个逻辑设备)。"Device is not active"表示此设备的驱动程序未加载,在设备的驱动程序加载后此处显示" Deviceis active"。在装入设备对应的驱动程序后,其后的字段以"Active"开始表示设备所占用的资源。例如
1
2
3
Active port 0x240,0xe80,0x388,0x300,0x100(占用的端口号)
Active IRQ 5 [0x2] (占用的中断号)
Active DMA 1,3    (占用的DMA)




此文件再往下的部分列出的是此卡可以占用的地址空间,一般是一组资源配置方案,上面的例子就包含三组可选的资源配置方案,分别是缺省方案、可选配置方案1(Alternateresources 0:1)和可选配置方案2(Alternate resources 0:2)。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0