新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于MPC8280的PCI驅(qū)動(dòng)設(shè)計(jì)

基于MPC8280的PCI驅(qū)動(dòng)設(shè)計(jì)

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

摘要 芯片MPC8280的主頻最高為450 MHz,僅靠運(yùn)行在其上的軟件雖可實(shí)現(xiàn)路由交換功能,但交換容量?jī)H約為40 Mbit·s-1,無(wú)法滿(mǎn)足多路千兆交換性能要求。利用MPC8280的口外接千兆交換芯片BCM56514,能突破這一性能瓶頸?;贛PC8280的驅(qū)動(dòng),使得MPC8280通過(guò)卻嬋占潿列床僮鰲⑴渲每占潿列床僮骱I/O空間的讀寫(xiě)操作,并實(shí)現(xiàn)對(duì)BCM56514的配置、控制及路由表的更新,從而使MPC8280在路由交換領(lǐng)域得以應(yīng)用。

本文引用地址:http://m.butianyuan.cn/article/201609/305032.htm

近年來(lái),多媒體通信技術(shù)應(yīng)用迅猛發(fā)展,對(duì)網(wǎng)速的要求也迅速提升。為適應(yīng)這一趨勢(shì),與網(wǎng)絡(luò)相關(guān)的終端設(shè)備和路由交換設(shè)備的性能均亟需提升。在當(dāng)今中國(guó),計(jì)算機(jī)作為網(wǎng)絡(luò)終端設(shè)備,網(wǎng)口的標(biāo)配速率已由100 Mbit·s-1改為1 000 Mbit·s-1,交換機(jī)、路由器等作為路由交換設(shè)備,交換容量量級(jí)也由原來(lái)100 Mbit·s-1上升到1 000 Mbit·s-1甚至10 Gbit·s-1。MPC8280是由Freescale公司推出的雙地址總線(xiàn)雙處理器芯片,自其推出以來(lái),因其豐富的外圍接口已在航空航天、通信電子、醫(yī)療器械、交通設(shè)施等領(lǐng)域得到廣泛應(yīng)用,然而在今日迫切需求的大容量路由交換領(lǐng)域,卻因其最高主頻為450 MHz的限制,依靠運(yùn)行在MPC8280上的軟件扣除中斷處理、系統(tǒng)管理等開(kāi)銷(xiāo)外,實(shí)現(xiàn)的交換容量?jī)H為40 Mbit·s-1,在多路千兆交換應(yīng)用中存在性能瓶頸。利用MPC8280的PCI口外接千兆交換芯片BCM56514,使得運(yùn)行在MPC8280上的軟件僅作路由計(jì)算和路由表的維護(hù),而將交換控制交由BCM56514實(shí)現(xiàn),可突破性能瓶頸。完成PCI是這一方法能得以實(shí)施的先決條件,MPC8280通過(guò)PCI操作、操作和I/O空間讀寫(xiě)操作,實(shí)現(xiàn)對(duì)交換芯片的配置、控制及路由表的更新,從而使MPC 8280在大容量路由交換領(lǐng)域得到成熟應(yīng)用。

1 PCI知識(shí)介紹

PCI為Peripheral Component Interconnect的縮寫(xiě),是一種總線(xiàn)規(guī)范,用于外圍設(shè)備互聯(lián)。目前使用2.2版本的PCI規(guī)范。主要由時(shí)鐘信號(hào)(PCI_CLK)、控制信號(hào) (FRAME、IRDY、DEVSEL、TRADY、STOP、IDSEL)、地址數(shù)據(jù)復(fù)用信號(hào)AD[31:0]及校驗(yàn)和錯(cuò)誤指示信號(hào)(SERR、PERR)構(gòu)成。地址和數(shù)據(jù)信號(hào)可擴(kuò)展到64 bit,時(shí)鐘信號(hào)常用33 MHz,可擴(kuò)展到66 MHz,速率可達(dá)528 MByte/s。采用分段分層結(jié)構(gòu),其總線(xiàn)拓?fù)浣Y(jié)構(gòu)如圖1所示。

基于MPC8280的PCI驅(qū)動(dòng)設(shè)計(jì)

2 PCI

PCI驅(qū)動(dòng)通過(guò)配置寄存器,完成總線(xiàn)初始化,并提供PCI、PCI、PCI I/O空間讀寫(xiě)和中斷函數(shù)接口。上層應(yīng)用利用這些操作接口發(fā)現(xiàn)外部交換芯片,并能獲取交換芯片信息,實(shí)現(xiàn)對(duì)外接交換芯片的配置管理、路由表更新、狀態(tài)回讀等操作,最終實(shí)現(xiàn)PCI。

2.1 PCI驅(qū)動(dòng)流程設(shè)計(jì)

首先通過(guò)設(shè)置寄存器,使芯片跳出PCI重啟狀態(tài),接著根據(jù)系統(tǒng)的地址分配對(duì)Outbound和Inbound寄存器組進(jìn)行配置,然后對(duì)PCI使用的字節(jié)序、錯(cuò)誤狀態(tài)和Master模式進(jìn)行配置,最后使能PCI。使用UML的活動(dòng)圖對(duì)PCI驅(qū)動(dòng)流程設(shè)計(jì)建模如圖2所示。

基于MPC8280的PCI驅(qū)動(dòng)設(shè)計(jì)

2.2 配置空間讀寫(xiě)設(shè)計(jì)

指令按照一定的數(shù)據(jù)格式優(yōu)先寫(xiě)到CONFIG_ADDR寄存器,然后通過(guò)向CONFIG_DATA寄存器填入數(shù)據(jù),完成寫(xiě)操作,或從CONFIG_DATA讀出數(shù)據(jù),完成讀操作。無(wú)論CONFIG_ADDR寄存器的數(shù)據(jù)是否需要改變,每次操作都必須先對(duì)CONFIC_ADDR寄存器操作,然后才可對(duì)CONFIC_DATA寄存器操作,否則操作無(wú)效。指令數(shù)據(jù)格式如圖3所示。

基于MPC8280的PCI驅(qū)動(dòng)設(shè)計(jì)

配置空間操作時(shí),地址譯碼過(guò)程如下:例如Device Number為0b01011時(shí),對(duì)應(yīng)的十進(jìn)制數(shù)為11,則Bit[31:11]中的Bit11置1,其他Bit為0,此時(shí)在硬件上將IDSEL信號(hào)連接到Bit11的PCI設(shè)備將被選中;若Device Number為0b01100時(shí),對(duì)應(yīng)的十進(jìn)制數(shù)為12,則Bit[31:11]中的Bit12置1,其他Bit為0,此時(shí)在硬件上將IDSEL信號(hào)連接到Bit12的PCI設(shè)備將被選中;Device Number的特殊定義如下;0b01010將選定Bit[31];0b11111將執(zhí)行特別操作;0b00000將對(duì)PCI橋自身進(jìn)行操作。譯碼結(jié)果的格式如圖4所示。

基于MPC8280的PCI驅(qū)動(dòng)設(shè)計(jì)

共有兩種操作類(lèi)型:了ype 0操作和Type1操作。Type0操作適用于目標(biāo)設(shè)備和PCI橋在同一總線(xiàn)上,PCI橋直接根據(jù)從上層總線(xiàn)接收到指令中的Device Number進(jìn)行地址譯碼,并將Bit[31:11]數(shù)據(jù)中對(duì)應(yīng)的Bit置1,Bit[1:0]設(shè)置成0x00,在PCI總線(xiàn)配置操作的地址時(shí)段,將譯碼結(jié)果發(fā)送到PCI總線(xiàn)的AD[31:0]上。

Type1操作適用于目標(biāo)設(shè)備和PCI橋不在同一總線(xiàn)上,需經(jīng)過(guò)PCI橋?qū)⑼暾臄?shù)據(jù)繼續(xù)向下傳遞。當(dāng)PCI橋在配置空間操作的地址時(shí)隙從AD[31:0]收到指令時(shí),判斷目標(biāo)設(shè)備是否在其負(fù)責(zé)的范圍內(nèi),若不在,將不處理。若在,則將AD[31:0]的數(shù)據(jù)和PCI_C/_BE完整的向下傳遞;若發(fā)現(xiàn)目標(biāo)設(shè)備為本層設(shè)備,將操作變?yōu)門(mén)ype0操作,選中目標(biāo)設(shè)備。

2.3 內(nèi)存空間讀寫(xiě)設(shè)計(jì)

MPC8280的PCI內(nèi)存讀寫(xiě)分為MPC8280主動(dòng)發(fā)起的PCI內(nèi)存空間讀寫(xiě)和MPC8280被動(dòng)引起的PCI內(nèi)存空間讀寫(xiě)。在進(jìn)行PCI內(nèi)存空間讀寫(xiě)時(shí),需地址譯碼。

MPC8280主動(dòng)發(fā)起的PCI內(nèi)存空間讀寫(xiě),MPC8280側(cè)地址譯碼流程如圖5所示。先對(duì)操作地址進(jìn)行判斷,若落在MPC8280的內(nèi)部存儲(chǔ)器映射寄存器(IMMR)范圍內(nèi),接著就需判斷是否落在PCI寄存器,根據(jù)判斷結(jié)果決定是否對(duì)PCI寄存器進(jìn)行操作或不做處理。若不是落在MPC8280的IMMR范圍,需判讀是否落在PCI OutBound空間,若落于PCI OutBound空間,則需根據(jù)寄存器的配置,對(duì)地址進(jìn)行譯碼,并將譯碼后的結(jié)果在地址時(shí)隙被發(fā)送到PCI總線(xiàn)的地址管腳,若未落在PCI OutBound空間,卻落于PCIBR0或PCIBR1寄存器定義的范圍內(nèi),則將地址直接通過(guò)地址時(shí)隙發(fā)送至PCI總線(xiàn)的地址管腳。


上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉