Vendor ID Device ID Command Reg Status Reg Revision ID Class Code Cache Line Latency Timer Header Type BIST Base Address 0 Base Address 1 Base Address 2 Base Address 3 Base Address 4 Base Address 5 CardBus CIS pointer Subsystem Vendor ID Subsystem Device ID Expansion ROM Base Add Reserved(PCI Capability List) Reserved IRQ Line IRQ Pin Min_Gnt Max_Lat
class code 设备的类型标识,类寄存器是16位的值。它的高八位确定基类,如SCSI设备的分类码位0x0100。Linux系统的定义见中的声明。现在摘录如下:
Port Name Location Type ADDRESS 0x0279 (Printer status port) Write-only WRITE_DATA 0x0A79 (Printer status port + 0x0800) Write-only READ_DATA Relocatable in range 0x0203 to 0x03FF Read-only Table 1. 自动配置端口
Wait for Key 在加电重设之后或在响应重设与等待命令之后所有卡进入此状态。在此状态下没有命令被激活直到初始键被检测。 Wait for Key在正常系统操作过程中是pnp卡的缺省状态。在配置和激活操作之后,软件应设置所有的卡到此状态。 Sleep 在此状态,pnp卡等待Wake[CSN]命令。此命令会由CSN值设置一个或多个卡进入Isolation或Config状态。在Wake[CSN]命令的写数据位[7:0]的值与卡的CSN匹配时,卡离开Sleep状态。若Wake[CSN]命令写数据为0,所有的没有指定CSN的卡会进入Isolation状态。若Wake[CSN]命令写数据为非0,Wake[CSN]命令的CSN参数与卡上分派的CSN匹配的卡会进入Config状态。 Isolation 在此状态,pnp卡响应对隔离寄存器的读请求。一旦卡被隔离,独一无二的CSN被指定,CSN作为卡的唯一标识用于在Wake[CSN]命令中选择此卡。一旦写入CSN,卡过渡到Config状态。 Config 在此状态的卡会响应所有的配置命令,包括读卡的资源配置信息以及编程卡的资源选择。
关于ISAPNP设备的详细的硬件信息,您可以参考ISAPNP Specification
3.2 Linux系统下ISAPNP设备的自动检测 ISA设备的自动检测是指对支持Plug and Play ISA规范1.0的ISA设备的检测,对不支持此规范的ISA设备,此检测过程是无法工作的。这时的硬件检测和配置是完全要根据用户的个人经验进行。在进行下述检测过程之前,对于基于2.2.X内核的Linux系统,需要用户安装包isapnptools。对于2.4.x内核,则用户只需在编译内核时加入 ISA Plug and Play support即可。在检测开始之前,必须由用户手动插入模块(modprobe)isapnp.o或者isa-pnp.o(由内核版本决定)。在用户插入上述模块之后,内核会自动生成/proc下对应的描述文件。这些描述文件包括/proc/isapnp,/proc/bus/isapnp/devices,/proc/bus/isapnp/ csn。
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表示板卡标识。以" Logical Device"为行首的小节代表不同的逻辑设备(一块isapnp卡上可以存在多个逻辑设备)。" Device is not active "表示此设备的驱动程序未加载,在设备的驱动程序加载后此处显示" Device is active "。在装入设备对应的驱动程序后,其后的字段以"Active"开始表示设备所占用的资源。例如
Active port 0x240,0xe80,0x388,0x300,0x100(占用的端口号) Active IRQ 5 [0x2] (占用的中断号) Active DMA 1,3 (占用的DMA)
由命令mknod path, b, major, minor,创建设备结点。对于从/dev/hda到/dev/hdh的设备结点的主次设备号为: /dev/hda major = 3, minor = 0 /dev/hdb major = 3, minor = 64 /dev/hdc major = 22, minor = 0 /dev/hdd major = 22, minor = 64 /dev/hde major = 33, minor = 0 /dev/hdf major = 33, minor = 64 /dev/hdg major = 34, minor = 0 /dev/hdh major = 34, minor = 64
现在一般的USB桥接器模块有两种类型,UHCI和OHCI。在决定插入那一个桥接器模块时,可以察看/proc/pci文件来决定。打开此文件,您若发现USB节为 I/O at 0xHHHH格式(例如出现 I/O at 0xe000 [0xe01f]),HHHH为16进制数,则桥接器类型为UHCI。若是它为32 bit memory at 0xHH000000形式(例如出现32 bit memory at 0xee000000),HH为16进制数,则桥接器类型为OHCI。但是若您的桥接器类型不满足上述任何一种情况,唯一的解决办法就是您尝试插入这两种模块,直到成功为止。一般而言,UHCI类型的桥接器它的插入模块是uhci或usb-uhci(由内核版本决定);而对于OHCI类型的桥接器它的插入模块是ohci或usb-ohci。
设备规范 设备类码 接口类码 应用程序特定 - 0xFE 声音接口 0x00 0x01 通信设备 0x02 - CDC控制接口 - 0x02 CDC数据接口 - 0x0A HID 0x00 0x03 HUB 0x09 0x09 批量存储设备 0x00 0x08 监视器 same as HID same as HID 电源设备 same as HID same as HID 物理设备 - 0x05 打印机 - 0x07 供应商特定 - 0xFF
5.2 usb文件系统简介 T = 总线拓扑结构(Lev, Prnt, Port, Cnt, 等),是指USB设备和主机之间的连接方式 B = 带宽 (仅用于USB主控制器) D = 设备描述信息 P = 产品标识信息 S = 串描述符 C = 配置描述信息 (* 表示活动配置) I = 接口描述信息 E = 终端点描述信息
6.1 并行设备检测的一般过程 在Linux下要实现连接在并口上的设备检测,要求设备必须是支持IEEE 1284协议的。对于不支持IEEE 1284通讯协议的并行设备,是无法完成自动检测的。同样在定制系统内核时,也必须在并行端口支持(Parallel port support)选项中选中IEEE 1284 transfer mode这一项。在并口检测开始时,检测程序应检查是否存在/proc/sys/dev/parport目录(针对2.4.x内核),若不存在则尝试插入模块parport。加载parport模块一般有三种方式:
Socket 0: not configured Socket 1: Vcc = 5.0, Vpp1 = 0.0, Vpp2 = 0.0 Card type is memory and I/O IRQ 3 is dynamic shared, level mode, enabled Speaker output is enabled Function 0: Config register base = 0x0800 Option = 0x63, status = 0x08 I/O window 1: 0x0280 to 0x02bf, auto sized I/O window 2: 0x02f8 to 0x02ff, 8 bit
cardctl indent,得到卡的标识信息,包括产品标识信息,制造商标识代码,功能标识代码:
Socket 0: no product info available Socket 1: product info: "LINKSYS", "PCMLM336", "A", "0040052D6400" manfid: 0x0143, 0xc0ab function: 0 (multifunction)