資源描述:
《基于PCI總線的中斷機制研究》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、基于PCI總線的中斷機制研究1?概述???高性能PC機一般以PCI總線為系統(tǒng)總線。由于PCI總線協(xié)議較為復(fù)雜,因此在開發(fā)PCI擴展卡時常采用專用的PCI接口芯片。常見的PCI接口芯片有AMCC公司的S59XX系列和PLX公司的PLX905X系列,其中PLX9052(文中稱為9052)使用廣泛。???在應(yīng)用開發(fā)中,常常使用中斷作為CPU和外設(shè)間交換數(shù)據(jù)的方式。但由于PCI總線具有即插即用特性,即PCI設(shè)備的存儲器空間、I/O空間以及中斷等資源都是自動配置的,使得CPU訪問擴展卡的機制與非即插即用系統(tǒng)有較大的不同,尤其是中斷機制比較復(fù)雜。???基于9052接口
2、芯片設(shè)計的PCI擴展卡若以硬件中斷方式和CPU進行數(shù)據(jù)交換,則其過程可概括為以下四個步驟,參見圖1。①若連接到9052本地中斷輸入引腳LINTi[2:1]的外部中斷源有效,且9052內(nèi)部中斷使能,則9052的中斷輸出信號INTA#有效,從而產(chǎn)生PCI中斷請求。②上電時,初始化軟件根據(jù)資源使用情況已自動將PCI中斷引接到系統(tǒng)中斷控制器的某一個中斷引腳(IRQi)上,并將該信息寫入了9052的配置空間中。用戶可通過其配置空間來獲取該配置信息。③若IRQi上的中斷請求未被屏蔽且級別足夠高,則該中斷可以通過系統(tǒng)中斷控制器向CPU提交請求。④若CPU當前開中斷,則響
3、應(yīng)中斷,進入中斷服務(wù)例程進行數(shù)據(jù)交換。???因此,用戶若要實現(xiàn)PCI擴展卡的中斷功能,則不僅需了解高性能PC機的中斷結(jié)構(gòu),還需了解PCI接口芯片的配置空間及中斷機制。芯片組是主板的靈魂。有些主板的芯片組由北橋和南橋組成。高性能的南橋芯片除涵蓋常規(guī)南橋功能外,還具有為微機系統(tǒng)服務(wù)的I/O接口,如中斷控制器、DMA控制器等。為此,本文也稱南橋為SIO(SystemI/O)。不同南橋芯片其集成的中斷控制邏輯復(fù)雜程度不同、功能也有所擴展,但為保持兼容性,其最低兩級的中斷控制器仍與原PC/AT微機一致。2.1SIO中斷控制器???圖1所示的"系統(tǒng)中斷控制器"即是集成
4、于SIO內(nèi)部進行中斷管理的I/O接口,文中稱為SIO中斷控制器,其最低兩級的結(jié)構(gòu)見圖2。每片82C59支持8個中斷源,主片的IR2與從片的INTR相連,兩片共支持15個可屏蔽中斷源,其中,主片的輸入源編號為IRQ0~IRQ7,從片的輸入源編號為IRQ8~IRQ15。???外部中斷源向82C59提出請求后,經(jīng)片內(nèi)的判優(yōu)邏輯判優(yōu),若該請求具有當前最優(yōu)的中斷級別,該片就會通過其INTR引腳向上提中斷請求。CPU收到請求且當前開中斷,則響應(yīng)中斷,進入用戶的中斷服務(wù)例程。???集成在SIO內(nèi)的兩個82C59仍具有原82C59的所有寄存器,各寄存器的功能及格式均保持不
5、變,但SIO中斷控制器中82C59的許多可選功能已固定,不能通過程序改寫。2.2PCI中斷如何納入系統(tǒng)的中斷結(jié)構(gòu)???PCI總線上有4條中斷請求信號線:INTA#、INTB#、INTC#和INTD#,均為漏極開路且低電平有效(相應(yīng)的IRQi應(yīng)編程為電平觸發(fā)方式)。單功能PCI設(shè)備只能使用一條中斷線且為INTA#,多功能PCI設(shè)備可以按PCI規(guī)范的要求使用其它中斷線。SIO可將4個PCI中斷輸入到SIO中,并在上電初始化時根據(jù)資源使用情況分別將它們引接到合適的中斷源上。這樣,PCI中斷就可以通過系統(tǒng)的可屏蔽中斷請求向CPU提出。3?PLX9052的配置空間和
6、中斷機制3.1PCI設(shè)備的配置空間[1]???每個PCI設(shè)備都有一個配置空間,其每一項稱為配置寄存器,每個PCI設(shè)備的配置空間都包括頭標區(qū)。頭標區(qū)中前16個字節(jié)的定義對所有PCI設(shè)備都是相同的,位于0Eh處的配置寄存器給出了頭標類型,01h用于主橋,00h用于其它PCI設(shè)備。00h類型頭標區(qū)的布局見圖3。配置空間是PCI設(shè)備的硬件與PCI設(shè)備的初始化軟件及錯誤處理軟件之間的信息交換區(qū)。有了這個信息交換區(qū),PCI設(shè)備可以向軟件反映其狀態(tài)和要求,軟件可以對PCI設(shè)備進行辯識、配置和控制。上電時初始化軟件首先讀出配置空間中的相關(guān)內(nèi)容,以確定是否已安裝PCI擴展卡
7、以及擴展卡所需的I/O空間和MEM空間等信息,然后根據(jù)系統(tǒng)的資源狀況自動為其配置I/O空間和MEM空間的基地址、擴展卡占用的中斷號等參數(shù)。當CPU要訪問擴展卡上的存儲器地址或I/O端口地址時,只需從配置空間中獲取相應(yīng)的基地址再加上地址偏移量即可。3.2PLX9052的配置空間[2]???由于9052頭標類型字段已硬編碼為0,則其頭標區(qū)布局與圖3所示同。頭標區(qū)偏移3Ch處為中斷線寄存器,其值由系統(tǒng)上電時自動配置,表明9052的中斷引腳INTA#連到了系統(tǒng)中斷控制器的哪個輸入上。通過查詢該寄存器,即可了解系統(tǒng)分配給PCI擴展卡的中斷號。偏移3Dh處為中斷引腳寄
8、存器,其值表明PCI設(shè)備使用了哪一個中斷引腳,對應(yīng)關(guān)系為:1-IN