新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM922T核ZCP320A處理器PCI總線操作

ARM922T核ZCP320A處理器PCI總線操作

作者: 時(shí)間:2005-03-23 來(lái)源:網(wǎng)絡(luò) 收藏

摘要:本文簡(jiǎn)要說(shuō)明了內(nèi)部集成的接口、編程模式及工作模式,并介紹了作為主設(shè)備時(shí)如何訪問(wèn)外部擴(kuò)展的RTL8139 網(wǎng)卡設(shè)備。為以后的設(shè)計(jì)者提供借鑒及應(yīng)用基礎(chǔ)。

關(guān)鍵詞: RTL8139

采用了ARM公司的核,是ARM9TDMI通用家族中的一員采用哈佛結(jié)構(gòu)內(nèi)部使用5級(jí)流水線支持32位的ARM指令系統(tǒng)和16位的Thumb指令系統(tǒng)包括兩個(gè)相互獨(dú)立的8KB 的數(shù)據(jù)和指令高速緩存,高速緩存行的長(zhǎng)度是8個(gè)字。ARM922T 實(shí)現(xiàn)增強(qiáng)型ARM結(jié)構(gòu)v4MMU以提供對(duì)指令和數(shù)據(jù)地址的轉(zhuǎn)換和訪問(wèn)許可檢測(cè)。ARM922T 支持ARM調(diào)試結(jié)構(gòu)協(xié)以及Tracking ICE。

ZCP320A內(nèi)部使用三條AHB連接實(shí)現(xiàn)功能所需的主從設(shè)備。每條AHB總線連接一個(gè)主設(shè)備和多個(gè)從設(shè)備。根據(jù)總線連接的主設(shè)備的不同,三條總線分別被命名為COREBUS(ARM9 核作為該總線的主設(shè)備)、PBUS(PCI橋作為該總線的主設(shè)備)和DBUS(DMA控制器作為該總線的主設(shè)備)。這三條總線由總線管理模塊統(tǒng)一進(jìn)行管理。

ZCP320A集成的PCI總線接口是一個(gè)符合PCI協(xié)議2.2的總線接口。由于ZCP320A的內(nèi)部總線是符合AMBA AHB協(xié)議的總線,所以在ZCP320A中設(shè)計(jì)了一個(gè)AHB-PCI的橋來(lái)實(shí)現(xiàn)AMBA AHB協(xié)議到PCI協(xié)議的轉(zhuǎn)換。PCI總線通過(guò)AHB-PCI橋連接到內(nèi)部AHB總線。

1 PCI總線接口概述

在ZCP320A中設(shè)計(jì)了一個(gè)AHB-PCI的橋來(lái)實(shí)現(xiàn)AMBA AHB協(xié)議到PCI協(xié)議的轉(zhuǎn)換。PCI總線通過(guò)AHB-PCI橋連接到內(nèi)部AHB總線。如圖1所示。

配置地址寄存器的位31是配置使能位。在進(jìn)行配置時(shí)必須將該位設(shè)置為1。30-24位是保留位;23-16位是總線號(hào),直接連接在ZCP320A的PC 接口的總線為0號(hào)總線。15-11位是設(shè)備號(hào),它主要取決于硬件信號(hào)IDSEL連接到哪個(gè)地址線(AD16-AD31)上,AD16-AD31分別表示設(shè)備號(hào)0-15。10-8位是功能號(hào),對(duì)于單功能設(shè)備,其值為0。7-2是外部PCI設(shè)備的PCI配置空間寄存器偏移量。

要訪問(wèn)RTL8139,需要對(duì)其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來(lái)查找PCI總線是否存在該設(shè)備。由于8139的INTA直接連接到ZCP320A處理器的外部中斷1引腳,所以不需要對(duì)配置空間的0x3c進(jìn)行寫。從此以后我們可以利用0x10000000作為RTL8139的基地址來(lái)訪問(wèn)RTL8139的寄存器。如訪問(wèn)偏移地址0x0000~0x0005來(lái)讀取8139的MAC地址,即

for(i=0;i6;i++)

mac[i] = *(UCHAR *)(0x10000000 + i);

接下來(lái)我們就可以編寫RTL8139的驅(qū)動(dòng)程序了,在此就論述了。

3.3 訪問(wèn)外部PCI設(shè)備需要注意的事項(xiàng)

ZCP320A要通過(guò)PCI橋?qū)ν獠康腜CI設(shè)備進(jìn)行配置訪問(wèn)需要執(zhí)行的步驟如下:

(1) 在硬件上要保證連接正確,主要有所要配置的從設(shè)備的IDSEL連接到哪一根地址線上,也就是它的設(shè)備號(hào)是多少。

(2)對(duì)PCI配置地址寄存器(0xcf8)進(jìn)行正確配置,使它和硬件連接一致,主要指總線號(hào)和設(shè)備號(hào)。

(3)對(duì)PCI配置數(shù)據(jù)寄存器(0xcfc)進(jìn)行讀/寫訪問(wèn),從而實(shí)現(xiàn)對(duì)外部PCI設(shè)備的配置訪問(wèn)。

另外要注意的是由于作配置訪問(wèn)的時(shí)候要對(duì)配置地址和數(shù)據(jù)寄存器進(jìn)行訪問(wèn),而這兩個(gè)寄存器屬于橋上的寄存器區(qū),所以要先對(duì)寄存器區(qū)進(jìn)行鎖定,然后才能進(jìn)行配置寫。

4 PCI從設(shè)備工作模式

在AHB-PCI 橋的輸入通道,橋作為PCI總線的從設(shè)備同時(shí)作為AHB PBUS 的主設(shè)備,外部擴(kuò)展的PCI設(shè)備則為主設(shè)備。橋從PCI總線上接收傳輸命令并在PBUS上發(fā)起相應(yīng)的操作訪問(wèn)CPU的資源并反饋回去,通過(guò)FIFO將數(shù)據(jù)在PCI總線和PBUS之間傳輸實(shí)現(xiàn)兩種總線協(xié)議的轉(zhuǎn)換。

PBUS和PCI總線是PCI橋作為PCI從設(shè)備同時(shí)作為PBUS上的AHB主設(shè)備時(shí)的兩條連接總線,這兩條總線相互獨(dú)立又通過(guò)PCI橋聯(lián)系起來(lái)。

如圖4所示。

外部PCI主設(shè)備可以通過(guò)AHB-PCI橋來(lái)訪問(wèn)PBUS上的SDRAM、FLASH以及PCI數(shù)據(jù)緩沖區(qū)A、B等。

至于PCI作為從設(shè)備,一般比較少用。所以在此不再介紹。

5 結(jié)束語(yǔ)

ZCP320A內(nèi)部集成的PCI總線接口,大大簡(jiǎn)化了系統(tǒng)設(shè)計(jì)??梢詿o(wú)縫擴(kuò)展PCI設(shè)備,例如網(wǎng)卡、顯卡等。訪問(wèn)外部擴(kuò)展的PCI設(shè)備只需按照上述說(shuō)明即可。



關(guān)鍵詞: 總線 操作 PCI 處理器 ZCP320A ARM922T

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉