ARM922T核ZCP320A处理器PCI总线操作
摘要:本文简要说明了ZCP320A处理器内部集成的PCI总线接口、编程模式及工作模式,并介绍了作为主设备时如何访问外部扩展的RTL8139 PCI网卡设备。为以后的设计者提供借鉴及应用基础。
关键词:ARM922T ZCP320A PCI总线 RTL8139
ZCP320A采用了ARM公司的ARM922T核,ARM922T是ARM9TDMI通用处理器家族中的一员采用哈佛结构内部使用5级流水线支持32位的ARM指令系统和16位的Thumb指令系统包括两个相互独立的8KB 的数据和指令高速缓存,高速缓存行的长度是8个字。ARM922T 实现增强型ARM结构v4MMU以提供对指令和数据地址的转换和访问许可检测。ARM922T 支持ARM调试结构协处理器以及Tracking ICE。
ZCP320A内部使用三条AHB总线连接实现功能所需的主从设备。每条AHB总线连接一个主设备和多个从设备。根据总线连接的主设备的不同,三条总线分别被命名为COREBUS(ARM9 核作为该总线的主设备)、PBUS(PCI桥作为该总线的主设备)和DBUS(DMA控制器作为该总线的主设备)。这三条总线由总线管理模块统一进行管理。
ZCP320A集成的PCI总线接口是一个符合PCI协议2.2的总线接口。由于ZCP320A的内部总线是符合AMBA AHB协议的总线,所以在ZCP320A中设计了一个AHB-PCI的桥来实现AMBA AHB协议到PCI协议的转换。PCI总线通过AHB-PCI桥连接到内部AHB总线。
1 PCI总线接口概述
在ZCP320A中设计了一个AHB-PCI的桥来实现AMBA AHB协议到PCI协议的转换。PCI总线通过AHB-PCI桥连接到内部AHB总线。如图1所示。
配置地址寄存器的位31是配置使能位。在进行配置操作时必须将该位设置为1。30-24位是保留位;23-16位是总线号,直接连接在ZCP320A的PC 接口的总线为0号总线。15-11位是设备号,它主要取决于硬件信号IDSEL连接到哪个地址线(AD16-AD31)上,AD16-AD31分别表示设备号0-15。10-8位是功能号,对于单功能设备,其值为0。7-2是外部PCI设备的PCI配置空间寄存器偏移量。
要访问RTL8139,需要对其PCI配置空间寄存器作如下配置:
REG_WRITE(0xe0000000,0xcf8,0x80001814); /* Access 8139 BAR0 */
REG_WRITE(0xe0000000,0xcfc, 0x10000000); /* Set BAR0=0x100000000 */
REG_WRITE(0xe0000000,0xcf8,0x80001804);
/* Access 8139 Command and Status Register */
REG_WRITE(0xe0000000,0xcfc, 0x02000147);
/* Enable Bus Master and Memory , IO Access */
/* 下面是读取8139的VID和DID */
REG_WRITE(0xe0000000,0xcf8,0x80001800);
/* Access 8139 VID and DID Register */
REG_READ(0xe0000000,0xcfc, VIDDID);
由此,我们可以利用已知的VID和DID来查找PCI总线是否存在该设备。由于8139的INTA直接连接到ZCP320A处理器的外部中断1引脚,所以不需要对配置空间的0x3c进行写操作。从此以后我们可以利用0x10000000作为RTL8139的基地址来访问RTL8139的寄存器。如访问偏移地址0x0000~0x0005来读取8139的MAC地址,即
for(i=0;i6;i++)
mac[i] = *(UCHAR *)(0x10000000 + i);
接下来我们就可以编写RTL8139的驱动程序了,在此就论述了。
3.3 访问外部PCI设备需要注意的事项
ZCP320A要通过PCI桥对外部的PCI设备进行配置访问需要执行的步骤如下:
(1) 在硬件上要保证连接正确,主要有所要配置的从设备的IDSEL连接到哪一根地址线上,也就是它的设备号是多少。
(2)对PCI配置地址寄存器(0xcf8)进行正确配置,使它和硬件连接一致,主要指总线号和设备号。
(3)对PCI配置数据寄存器(0xcfc)进行读/写访问,从而实现对外部PCI设备的配置访问。
另外要注意的是由于作配置访问的时候要对配置地址和数据寄存器进行访问,而这两个寄存器属于桥上的寄存器区,所以要先对寄存器区进行锁定,然后才能进行配置写操作。
4 PCI从设备工作模式
在AHB-PCI 桥的输入通道,桥作为PCI总线的从设备同时作为AHB PBUS 的主设备,外部扩展的PCI设备则为主设备。桥从PCI总线上接收传输命令并在PBUS上发起相应的操作访问CPU的资源并反馈回去,通过FIFO将数据在PCI总线和PBUS之间传输实现两种总线协议的转换。
PBUS和PCI总线是PCI桥作为PCI从设备同时作为PBUS上的AHB主设备时的两条连接总线,这两条总线相互独立又通过PCI桥联系起来。
如图4所示。
外部PCI主设备可以通过AHB-PCI桥来访问PBUS上的SDRAM、FLASH以及PCI数据缓冲区A、B等。
至于PCI作为从设备,一般比较少用。所以在此不再介绍。
5 结束语
ZCP320A内部集成的PCI总线接口,大大简化了系统设计。可以无缝扩展PCI设备,例如网卡、显卡等。访问外部扩展的PCI设备只需按照上述说明即可。
评论