表1给出了利用上述方法对三个PnP卡的识别结果,其中两块PnP卡是Accton公司设计的10M以太网卡,另一块是利用Crystal公司的CS4235设计的3D声卡。
从表1可清楚看到,由于网卡是同一厂家生产的,故其序列标识符的前四个字节相同。同时根据DSP对PnP卡的识别流程可知,第一轮可识别出声卡,第二轮识别出网卡2,最后识别出网卡1。
4 DSP对PnP卡的资源配置
本文以NE2000兼容网卡为例,通过对I/O端口地址的配置来阐述DSP是如何对PnP卡进行资源配置的。该网卡使用的芯片为Realtek公司生产的RTL8019,芯片中I/O配置寄存器如表2所示。
当识别出该网卡后,就可把该网卡的资源数据读出,下面就是从该PnP卡上读出的有关I/O端口地址配置的资源:
TAG I/O Format
Item byte 47H
I/O information 00H
Min.I/O base bits 7-0 20H
Min.I/O base bits 15-8 02H
Max.I/O base bits 7-0 80H
Max.I/O base bits 15-8 03H
Base alignment 20H
Range length 20H
从上面的资源数据可以看出,该网卡的I/O端口可以配置为220H到380H之间的地址空间,占用的空间范围为20H,同时要求该地址的步进大小为20H,即只能选择220H~23FH,240H~25FH等,依此类推。现假设要给该网卡配置地址空间为300H~31FH,则只需给I/O配置寄存器60H写入03H,61H写入00H即可。对IRQ、DMA的配置与I/O端口的配置过程是一样的。
5 避开PnP协议“关键字”的接口方法[3]
从上述PnP卡的识别与配置过程可见,如果是在PC机环境中,那么这一过程可自动完成;而在用户所设计的系统中,这一过程就显得有些烦琐,且意义不是很大。能不能避开PnP协议直接对每块PnP卡进行编程,就象对老的ISA卡那样操作呢?实际上,大多数芯片确实提供了这种简洁、快速的方法,统称为“某某公司关键字”接口方法。以前文中所述声卡为例介绍这种接口方法。下面所给出的五个步骤完成后,该声卡就和老的ISA声卡操作过程一样了;唯一的不足是如果系统中使用了两块该类型的声卡,即使它们的序列标识符不同,该方法也失效。