分类: 嵌入式
2013-07-09 20:51:46
本章将通过AM79C97X网络通信芯片的例子来说明网卡的驱动原理。该通信芯片不仅具有网络通信功能,而且还建有PCI接口控制管理功能。在操作系统通过对AM79C97X的PCI接口的自动配置为该设备分配内存资源和IO资源,这些内存资源和IO资源将是CPU控制AM79C97X网络通信芯片的主要的主要通道。
表4.1列出了AM79C97X芯片的PCI配置寄存器。在配置寄存器的10h地址记录了该PCI设备对IO资源的要求:32字节;在配置寄存器的14h地址记录了该PCI设备对内存资源的需求:32字节。其实这两个地址所映射的内容是一样的,即CPU控制AM79C97X芯片的主要接口。一般来说既有IO接口又有内存接口的情况下,首先选用内存接口,因为内存接口访问速度要远高于IO接口。
表5.1列出了映射到内存空间的32字节所对应的含义。
表格 5.1 am79C97x
偏移 |
字节数 |
寄存器 |
00h~0Fh |
16 |
APROM |
10h |
2 |
RDP |
12h |
2 |
RAP |
14h |
2 |
Reset Register |
16h |
2 |
BDP |
18h~1Fh |
8 |
保留 |
其中APROM是AM79C97X芯片外接一个串行的EEPROM,在H_RESET信号之后,EEPROM的内容会自动读入到AM79C97X芯片的相应位置,其中头16字节会自动读入APROM空间。表5.2列出了APROM空间的数据结构。
表格 5.2 APROM空间的数据结构
偏移 |
字节数 |
寄存器 |
00h~05h |
6 |
MAC地址 |
06h~0Bh |
6 |
保留 |
0Ch~0Dh |
2 |
checksum |
0Eh |
1 |
'W' |
0Fh |
1 |
'W' |
RAP为寄存器地址端口。在AM79C97X芯片中除了配置寄存器之外,还有两类寄存器:CSR(配置和状态寄存器)、BSR(总线状态寄存器)。要访问CSR寄存器时,首先在RAP寄存器中写入CSR寄存器的地址,然后直接访问RDP就完成了相应CSR寄存器的访问。BSR的访问原理相同。其中RDP用于控制AM79C97X芯片以及状态的获取,BDP用于配置总线接口单元以及LED指示灯的控制。关于BSR和CSR寄存器的详细内容可以参考AM79C97X的数据手册。
复位寄存器:对复位寄存器的读操作将激发AM79C97X芯片产生一个软件复位操作。