<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

          ARM922T核ZCP320A處理器PCI總線操作

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

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

          關(guān)鍵詞: RTL8139

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

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

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

          1 PCI總線接口概述

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

          配置地址寄存器的位31是配置使能位。在進行配置時必須將該位設(shè)置為1。30-24位是保留位;23-16位是總線號,直接連接在ZCP320A的PC 接口的總線為0號總線。15-11位是設(shè)備號,它主要取決于硬件信號IDSEL連接到哪個地址線(AD16-AD31)上,AD16-AD31分別表示設(shè)備號0-15。10-8位是功能號,對于單功能設(shè)備,其值為0。7-2是外部PCI設(shè)備的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總線是否存在該設(shè)備。由于8139的INTA直接連接到ZCP320A處理器的外部中斷1引腳,所以不需要對配置空間的0x3c進行寫。從此以后我們可以利用0x10000000作為RTL8139的基地址來訪問RTL8139的寄存器。如訪問偏移地址0x0000~0x0005來讀取8139的MAC地址,即

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

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

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

          3.3 訪問外部PCI設(shè)備需要注意的事項

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

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

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

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

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

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

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

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

          如圖4所示。

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

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

          5 結(jié)束語

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



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

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();