專利名稱:用于飛騰服務(wù)器的中斷控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及操作系統(tǒng)中斷技術(shù)領(lǐng)域,尤其涉及用于飛騰服務(wù)器的中斷控制方法
背景技術(shù):
飛騰服務(wù)器采用兩路飛騰處理器,每個(gè)處理器由8核64個(gè)硬線程組成,處理器頻率為800MHz 1GHz,通過點(diǎn)到點(diǎn)高速交換芯片提供6個(gè)PCIE2. 0總線插槽,單路最高IO頻率可達(dá)5Gbps。飛騰服務(wù)器采用了 PCI總線標(biāo)準(zhǔn)的南橋CS5536,南橋CS5536芯片內(nèi)部集成了 USB控制器、IDE磁盤控制器、音頻控制器、RTC實(shí)時(shí)時(shí)鐘和鍵盤鼠標(biāo)PS/2接口控制器等硬件接口控制邏輯。單片的8259A包含8個(gè)中斷輸入引腳、I個(gè)中斷輸出引腳、I個(gè)中斷應(yīng)答引腳、級(jí)聯(lián)引腳以及其他控制引腳。通過級(jí)聯(lián)引腳,可以將多個(gè)8259A以“主-從”配置的方式串聯(lián)起來,進(jìn)而擴(kuò)大硬件中斷數(shù)。典型的8259A應(yīng)用方式存在兩種一種是采用獨(dú)立的8259A芯片對(duì)中斷進(jìn)行控制,外圍設(shè)備中斷直接輸入8259A,再通過8259A的中斷輸出引腳傳遞給處理器進(jìn)行中斷處理;另一種是集成在南橋CS5536中8259A的應(yīng)用,通過此中斷控制器直接處理CS5536芯片中支持的設(shè)備中斷,此集成式的設(shè)計(jì)方式一般只用在X86系列的處理器平臺(tái)上,具有X86體系結(jié)構(gòu)依賴性。在X86平臺(tái)上,8259A以處理器接口串行線CIS的帶外方式向處理器發(fā)送中斷信號(hào)。CIS串行數(shù)據(jù)格式如圖I所示CIS提供了 20位的串行數(shù)據(jù)格式,包括2位start,16位data
,和2位stop。其中,data[7]為8259A的中斷位。X86處理器系統(tǒng)能接收和解析CIS,獲取中斷位,并對(duì)處理器流水線進(jìn)行中斷。8259A提供了軟件中斷號(hào)獲取機(jī)制。在不需要軟件干預(yù)的前提下,X86處理器可以直接讀取地址0對(duì)中斷進(jìn)行確認(rèn),并自動(dòng)獲取中斷源的軟件中斷號(hào),然后跳轉(zhuǎn)到中斷向量地址上運(yùn)行相應(yīng)的中斷處理函數(shù)。飛騰服務(wù)器是UltraSPARC (傳統(tǒng)SPARC體系結(jié)構(gòu))體系結(jié)構(gòu),既不提供CIS帶外串行線,也不能自動(dòng)對(duì)地址0進(jìn)行確認(rèn),更不能直接跳轉(zhuǎn)到相應(yīng)的中斷向量地址上。因此需提供一種新的中斷處理方法以便能用集成在南橋CS5536中8259A實(shí)現(xiàn)飛騰服務(wù)器中的中斷處理。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是針對(duì)現(xiàn)有技術(shù)存在的問題,本發(fā)明提供一種實(shí)時(shí)、準(zhǔn)確且有效的用于飛騰服務(wù)器的中斷控制方法。為解決上述技術(shù)問題,本發(fā)明采用以下技術(shù)方案
一種用于飛騰服務(wù)器的中斷控制方法,包括以下步驟
(1)初始化在操作系統(tǒng)內(nèi)核啟動(dòng)過程中,對(duì)南橋CS5536中的硬件控制邏輯部件分配中斷控制器8259A的中斷位,并設(shè)置中斷路由;
(2)中斷觸發(fā)硬件中斷源通過南橋CS5536中的硬件控制邏輯部件產(chǎn)生相應(yīng)類型的中斷信號(hào);在中斷控制器8259A的內(nèi)部寄存器中修改相應(yīng)的中斷位,中斷信號(hào)通過南橋CS5536中的中斷控制器8259A路由輸出為一公共中斷觸發(fā)信號(hào),所述公共中斷觸發(fā)信號(hào)經(jīng)橋接芯片映射轉(zhuǎn)換成中斷消息報(bào)文并傳至PCIE總線;
(3)中斷響應(yīng)飛騰處理器從PCIE總線獲取所述中斷消息報(bào)文,進(jìn)入中斷狀態(tài)并調(diào)用一公共中斷響應(yīng)函數(shù);所述公共中斷響應(yīng)函數(shù)讀取所述中斷控制器8259A的內(nèi)部寄存器獲取中斷位,根據(jù)所述中斷位確定硬件中斷源,并通知飛騰處理器調(diào)用相應(yīng)的中斷處理函數(shù)處理中斷。
作為本發(fā)明的進(jìn)一步改進(jìn)
所述中斷信號(hào)通過南橋CS5536中的中斷控制器8259A路由輸出到南橋CS5536的通用I/O端口 GPI012上,通過邊緣觸發(fā)方式輸出為一公共中斷觸發(fā)信號(hào)。所述中斷消息報(bào)文包括PCIE總線規(guī)范定義的Assert_INTx和Deasser_INTx,所述Assert_INTx為中斷電平信號(hào)從無效狀態(tài)轉(zhuǎn)換成有效狀態(tài),所述Deasser_INTx為中斷電平信號(hào)從有效狀態(tài)轉(zhuǎn)換成無效狀態(tài)。所述步驟的初始化流程包括以下步驟
(1)設(shè)置飛騰處理器訪問GPIO的IO地址;
(2)屏蔽中斷控制器8259A除內(nèi)部級(jí)聯(lián)中斷外的中斷位;
(3)通過對(duì)相關(guān)MSR寄存器的設(shè)置去能所有中斷路由功能;
(4)通過對(duì)GPIO基址的訪問去能GPI012的所有部件的功能;
(5)使能GPI012的需使用的部件的功能設(shè)置;
(6 )根據(jù)硬件連接或設(shè)置,通過設(shè)置相關(guān)MSR寄存器路由中斷源到對(duì)應(yīng)8259A中斷引腳,以設(shè)置中斷路由;
(7)初始化中斷控制器8259A。所述GPI012的需使用的部件具體指GPI012的上拉位、翻轉(zhuǎn)位、AUXl輸出選擇位以及輸出使能位。所述初始化中斷控制器8259A具體為對(duì)ICffl ICW4逐一進(jìn)行初始化,設(shè)置中斷觸發(fā)模式、主/從8259A對(duì)應(yīng)IRO的中斷號(hào)以及ID。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于
本發(fā)明的用于飛騰服務(wù)器的中斷控制方法,飛騰處理器能實(shí)時(shí)接收到硬件中斷源的中斷消息報(bào)文,實(shí)現(xiàn)了飛騰處理器平臺(tái)南橋CS5536各功能部件與飛騰處理器的中斷交互。通過對(duì)中斷觸發(fā)方式的修改,使飛騰處理器能實(shí)時(shí)接收到CS5536設(shè)備的中斷消息報(bào)文;通過中斷確認(rèn)和分發(fā)方式的修改,可以使CS5536相關(guān)設(shè)備控制器驅(qū)動(dòng)準(zhǔn)確實(shí)時(shí)的響應(yīng)并處理各種中斷??梢詽M足CS5536中所有以中斷觸發(fā)為基礎(chǔ)的設(shè)備控制器的要求,在公共的共享中斷源基礎(chǔ)上根據(jù)CS5536中各控制器的中斷狀態(tài)進(jìn)行中斷的確認(rèn)、分發(fā)和響應(yīng)處理。
圖I是CIS串行數(shù)據(jù)格式示意圖。圖2是本發(fā)明實(shí)施例I的總流程示意圖。圖3是DIVIL_LBAR_GPIO寄存器的結(jié)構(gòu)示意圖;其中,BASE_ADDR為IO基地址;LBAR_EN為本地BAR寄存器訪問使能位;I0_MASK為掩碼位;RSVD為保留位。圖4是中斷初始化命令字寄存器的結(jié)構(gòu)示意圖;其中ICWl中的TRIGGER為觸發(fā)模式,O-邊緣觸發(fā)、I-電平觸發(fā);RSVD為保留位;ICW2中的A為8259基準(zhǔn)中斷向量;RSVD為保留位;Master對(duì)應(yīng)的ICW3中用來存放8259A級(jí)聯(lián)的中斷號(hào),而Slave對(duì)應(yīng)的ICW3中用來存放Slave的ID號(hào)。針對(duì)Master和Slave,ICff3寄存器格式都是一樣的,通過訪問IO端口 0x21可以操作Master的ICW3,訪問IO端口 OxAl可以操作Slave的ICW3。ICff4中的AUT0_E0I為中斷結(jié)束處理模式。圖5是本發(fā)明實(shí)施例I的硬件連線邏輯示意圖。圖6是本發(fā)明實(shí)施例I的飛騰服務(wù)器的局部PCIE總線結(jié)構(gòu)示意圖。圖7是本發(fā)明實(shí)施例I的CS5536中斷控制器的連接示意圖。
圖8是本發(fā)明實(shí)施例I的內(nèi)核級(jí)基于硬件的中斷初始化流程示意圖。圖9是本發(fā)明實(shí)施例I的內(nèi)核級(jí)基于硬件的中斷響應(yīng)流程示意圖。圖10是本發(fā)明實(shí)施例2的USB OHCI產(chǎn)生的中斷的初始化流程示意圖。圖11是本發(fā)明實(shí)施例3的測試驅(qū)動(dòng)的結(jié)構(gòu)示意圖。圖12是本發(fā)明實(shí)施例3中的中斷測試驅(qū)動(dòng)的工作流程示意圖。圖13是本發(fā)明實(shí)施例3中的應(yīng)用模塊的工作流程示意圖。
具體實(shí)施例方式以下將結(jié)合說明書附圖和具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)說明。實(shí)施例I :
如圖2所示,以內(nèi)核級(jí)基于硬件的中斷為例,詳細(xì)說明本發(fā)明的用于飛騰服務(wù)器的中斷控制方法。飛騰服務(wù)器采用了 PCI總線標(biāo)準(zhǔn)的南橋CS5536,芯片內(nèi)部集成了 USB控制器、IDE磁盤控制器、音頻控制器、RTC實(shí)時(shí)時(shí)鐘和鍵盤鼠標(biāo)PS/2接口控制器等硬件接口控制邏輯。南橋CS5536通過橋接芯片PLX8112連接到PCIE總線上。這些內(nèi)部硬件控制器邏輯中斷信號(hào)全部通過CS5536內(nèi)部的8259A中斷控制器進(jìn)行路由,橋接芯片PLX8112負(fù)責(zé)將電平形式的中斷信號(hào)轉(zhuǎn)換成PCIE2. 0總線消息形式的中斷信號(hào),并傳遞給處理器芯片。本實(shí)施例的方法開始之前,先對(duì)飛騰服務(wù)器的硬件做如下連接和設(shè)置
如圖5所示,將兩片8259A中斷控制器按主-從級(jí)聯(lián),可提供15個(gè)可接收中斷信號(hào)的中斷引腳。主8259A的INTR# (中斷請(qǐng)求引腳)輸出直接連接到GPI012 (第12個(gè)通用I/O接口)上(主8259A的輸出在邏輯上被路由到GPI012的AUXl輸入上),GPI012的中斷輸出連接到PCIE-PCI橋芯片的PCI_INTA# (中斷引腳)上。GPI012可以配置為輸出端口或者輸入端口。輸出端口包括選擇開關(guān)(用來選擇輸出方式,連接OutputVal可使軟件動(dòng)態(tài)產(chǎn)生輸出信號(hào);AUX1和AUX2為兩個(gè)連接通道)、輸出使能部件(使能輸出模塊)、翻轉(zhuǎn)部件(翻轉(zhuǎn)電平)以及下拉開關(guān)(拉低電平)。(本發(fā)明的中斷過程主要使用輸出端口)。硬件連接和設(shè)置完成后,進(jìn)行中斷控制
(I)初始化。如圖8所示,初始化包括以下步驟 a.橋窗口的初始化。在進(jìn)行GPI012的初始化前,需要指定GPIO的IO地址,此地址由CS5536的IO基址和GPIO寄存器基址組成。如圖6所示,本實(shí)施例的南橋芯片連接在三個(gè)PCIE-PCIE橋和一個(gè)PCIE-PCI橋后,為了讓飛騰處理器能夠訪問到GPIO的IO地址,需要將GPIO的IO地址映射在這四個(gè)橋的IO窗口范圍內(nèi),通過對(duì)這四個(gè)橋配置空間的IO BASE (10基地址,位于橋配置空間OxlC處)和IO LIMIT (10窗口范圍,位于橋配置空間OxlD處)進(jìn)行地址范圍設(shè)置來滿足要求。設(shè)置GPIO 的 IO 地址;設(shè)置 MSR 寄存器 DIVIL_LBAR_GPI0(0x8000000C)(存在于南橋CS5536中,結(jié)構(gòu)如圖3所示),將此DIVIL_LBAR_GPIO寄存器的[8:15]設(shè)成GPIO對(duì)應(yīng)的IO基址(本實(shí)施例設(shè)置為0X5c00-0X5cff) ; [32]使能打開(設(shè)置為1),即允許LBAR的訪問,[44:47]設(shè)置IO的掩碼(本實(shí)施例設(shè)置為Oxf),根據(jù)IO的基址以及IO掩碼確定GPIO的IO地址范圍。 b.屏蔽中斷控制器8259A的中斷位(內(nèi)部級(jí)聯(lián)中斷除外)。本實(shí)施例中,對(duì)IO基址加偏移量為0x21 (主8259A)/0xal (從8259A)的位置進(jìn)行屏蔽中斷位的設(shè)置,將每一位置I。c.去能中斷路由功能。各類中斷源首先會(huì)通過一個(gè)MAM (映射)控制器,然后根據(jù)寄存器配置路由到XPIC(擴(kuò)展的可編程中斷控制器),最后再連到8259A的中斷輸入引腳上,通過對(duì)相關(guān)MSR寄存器設(shè)置去能所有的中斷路由。如圖7所示,中斷源分為四類PRIMARY中斷源、LPC中斷源、Y中斷源以及Z中斷源。四種類型共有15個(gè)中斷輸入引腳,Y類和Z類中斷源需要通過MSR寄存器PIC_YSEL_LOW/HIGH和PIC_ZSEL_LOW/HIGH路由配置到IGX (X為0 15)中的一路,然后從8259A輸入。此時(shí)需要將這些中斷路由全部去能。中斷位和硬件中斷源映射和路由也通過配置相關(guān)MSR寄存器實(shí)現(xiàn)。d.去能GPI012的所有部件的設(shè)置。GPI012模塊包含了控制GPI012的相關(guān)功能部件。如選擇開關(guān)、翻轉(zhuǎn)、輸出輸入使能和上/下拉等功能部件,通過對(duì)GPIO基址的訪問去能GPI012的所有部件功能。e.使能GPI012的設(shè)置。打開GPI012的上拉位、翻轉(zhuǎn)位、AUXl輸出選擇位以及輸出使能位,完成GPI012的初始化。f.使能中斷路由功能。按照規(guī)定,路由中斷源到對(duì)應(yīng)8259A中斷引腳,如RTC(實(shí)時(shí)時(shí)鐘)中斷路由到級(jí)聯(lián)8259A的8號(hào)引腳上,該引腳用來接收RTC產(chǎn)生的中斷信號(hào)。通過對(duì)相關(guān)MSR寄存器設(shè)置所有的中斷路由。g.初始化中斷控制器8259A。如圖4所示,對(duì)ICWl ICW4 (初始化命令字)逐一進(jìn)行初始化,包括中斷觸發(fā)模式、主/從8259A對(duì)應(yīng)IRO的中斷號(hào)以及ID等相關(guān)信息。設(shè)置主/從ICWl為0x11,中斷觸發(fā)模式采用邊緣觸發(fā);設(shè)置主ICW2為0x0,表示中斷向量基準(zhǔn)號(hào)為0,設(shè)置從ICW2為0X8,表示中斷向量基準(zhǔn)號(hào)為8 ;設(shè)置主ICW3為0x4,從ICW3為0x2(ICff3為固定設(shè)置);設(shè)置主/從ICW4為0x1,采用8086/8088模式等。(2)中斷觸發(fā)。如圖5所示,在硬件中斷源(外部設(shè)備)觸發(fā)中斷后,南橋中的設(shè)備控制器產(chǎn)生中斷信號(hào)并交給中斷控制器8259A,8259A接收到中斷信號(hào)后,將IRR (中斷請(qǐng)求寄存器)寄存器對(duì)應(yīng)的位置1,表示有中斷請(qǐng)求到來;中斷信號(hào)通過8259A的INTR#輸出,到達(dá)GPI012并傳到PCI-PCIE橋的PCI_INTA#引腳上,從而傳至PCIE總線。從軟件層面上來說,因?yàn)镃S5536中的設(shè)備都是虛擬的邏輯設(shè)備,系統(tǒng)在初始化時(shí)并沒有認(rèn)為這些邏輯設(shè)備是真實(shí)的PCI設(shè)備,不會(huì)對(duì)這些邏輯設(shè)備進(jìn)行PCI空間的初始化和配置,這樣邏輯設(shè)備驅(qū)動(dòng)將獲取不到相關(guān)的PCI信息,特別是跟中斷相關(guān)的配置,如PCI配置空間中INTERRUPT LINE的值,將導(dǎo)致中斷處理失效,所以在中斷觸發(fā)前,需要首先虛擬出CS5536邏輯設(shè)備的PCI空間,如圖2流程所示。當(dāng)中斷觸發(fā)時(shí),產(chǎn)生自陷,首先調(diào)用公共中斷處理函數(shù),這個(gè)公共處理函數(shù)用來獲取中斷向量號(hào)并調(diào)用CS5536邏輯設(shè)備中斷處理函數(shù),由邏輯設(shè)備中斷處理函數(shù)完成對(duì)應(yīng)中斷處理。(3)中斷響應(yīng)。如圖9所示,飛騰處理器從PCIE總線接收到此中斷消息報(bào)文后,產(chǎn)生自陷,調(diào)用公共中斷響應(yīng)函數(shù),此函數(shù)獲取中斷號(hào)以及中斷號(hào)對(duì)應(yīng)的中斷描述符首地址,并遍歷注冊(cè)在中斷描述符中的中斷處理函數(shù)進(jìn)行中斷處理。根據(jù)硬件布線,CS5536所有內(nèi)部邏輯設(shè)備中斷通過中斷共享的方式發(fā)送給飛騰處理器,所以一個(gè)中斷號(hào)對(duì)應(yīng)著所有CS5536不同內(nèi)部邏輯設(shè)備的中斷,同時(shí)也對(duì)應(yīng)著不同的中斷處理函數(shù),為了區(qū)分此共享中斷號(hào)與CS5536不同內(nèi)部設(shè)備的聯(lián)系,在遍歷中斷處理函數(shù)時(shí),在中斷處理函數(shù)開始處首先讀取IRR寄存器的值用來判斷中斷是否觸發(fā)此中斷處理函數(shù),如果IRR對(duì)應(yīng)中斷位為1,表明此中斷有效,則屏蔽對(duì)應(yīng)位中斷,進(jìn)行后續(xù)中斷處理,待中斷處理完成,取消該位的中斷屏蔽,退出中斷處理函數(shù);如果IRR對(duì)應(yīng)的位不為1,則表明此中斷無效,則直接退出此中斷處理函數(shù)繼續(xù)遍歷,直到遍歷完為止。實(shí)施例2
以USB OHCI (USB開放式住控制器接口)產(chǎn)生的中斷為例,進(jìn)一步說明本發(fā)明用于飛騰服務(wù)器的中斷控制方法。具體步驟如下
該接口驅(qū)動(dòng)支持低速的USB設(shè)備,如:USB鼠標(biāo)或USB鍵盤。本實(shí)施例與實(shí)施例I基于同一臺(tái)FT服務(wù)器,硬件結(jié)構(gòu)相同。(I)如圖10所示,飛騰多核服務(wù)器平臺(tái)中USB OHCI初始化過程如下
USB OHCI為CS5536集成的一個(gè)功能邏輯設(shè)備接口,在USB OHCI初始化過程中,首先創(chuàng)建OHCI的設(shè)備樹節(jié)點(diǎn),后續(xù)USB OHCI驅(qū)動(dòng)會(huì)直接訪問此節(jié)點(diǎn)信息;然后進(jìn)行類同實(shí)施例I的中斷初始化;由于USB OHCI使用PCI MEM空間,接著需要獲取OHCI MEM的基址,同時(shí)使能MEM的訪問,并進(jìn)行MEM劃分,使分配給USB OHCI的MEM空間不與其他沖突;然后按照實(shí)施例I中中斷響應(yīng)的方法對(duì)OHCI中斷響應(yīng)函數(shù)進(jìn)行改寫;虛擬化OHCI配置空間并加載OHCI設(shè)備驅(qū)動(dòng)。進(jìn)而完成整個(gè)USB OHCI初始化的過程。(2)中斷觸發(fā)。將USB鼠標(biāo)和USB鍵盤接入南橋USB HOST控制器接口上。當(dāng)滑動(dòng)鼠標(biāo)或者敲擊鍵盤時(shí),電信號(hào)轉(zhuǎn)化為中斷信號(hào)并通過CS5536中8259A的輸入引腳傳入,再以高電平輸出到GPI012的AUXl通道,進(jìn)行電平翻轉(zhuǎn)等處理后以低電平從GPI012輸出,傳至PCIE總線。(3)中斷響應(yīng)。飛騰處理器從PCIE總線接收到此中斷消息報(bào)文后,通過公共中斷響應(yīng)函數(shù)調(diào)用此USB設(shè)備對(duì)應(yīng)的中斷響應(yīng)函數(shù),此函數(shù)讀取8259A的中斷請(qǐng)求以及irr寄存器(中斷狀態(tài)寄存器),此時(shí)代表鼠標(biāo)或者鍵盤中斷請(qǐng)求的IRR寄存器中的相關(guān)位已經(jīng)置上(當(dāng)觸發(fā)USB設(shè)備事件時(shí),硬件已自動(dòng)對(duì)irr相關(guān)位進(jìn)行設(shè)置。)進(jìn)而調(diào)用鼠標(biāo)或者鍵盤的中斷處理函數(shù)完成后續(xù)中斷處理
實(shí)施例3
采用基于軟件模擬CS5536內(nèi)部設(shè)備的中斷,驗(yàn)證本發(fā)明的用于飛騰服務(wù)器的中斷控制方法,具體步驟如下
如圖11所示,為模擬實(shí)現(xiàn)本發(fā)明,設(shè)計(jì)了一個(gè)中斷測試驅(qū)動(dòng),主要包括三個(gè)模塊中斷初始化模塊、軟觸發(fā)中斷模塊以及軟觸發(fā)中斷處理程序注冊(cè)模塊。采用上述的中斷測試驅(qū)動(dòng)實(shí)現(xiàn)的中斷控制方法,包括以下步驟
(I)初始化,本實(shí)施例的初始化過程與實(shí)施例I和實(shí)施例2基本相同,區(qū)別僅在于初始化的時(shí)間點(diǎn)不同,實(shí)施例I和實(shí)施例2在系統(tǒng)內(nèi)核啟動(dòng)階段完成相關(guān)的中斷初始化,而本實(shí)施例的初始化放在了中斷測試驅(qū)動(dòng)中。(2)中斷觸發(fā)。 如圖12所示,初始化后,加入軟觸發(fā)中斷模塊,它通過設(shè)置南橋MSR寄存器的DIVIL_S0FT_IRQ(軟中斷觸發(fā)寄存器)的第0位來產(chǎn)生和停止中斷觸發(fā)。同時(shí)將此模塊注冊(cè)到ioctldO控制塊)中,這樣當(dāng)上層應(yīng)用發(fā)出中斷觸發(fā)的ioctl命令后,直接調(diào)用此模塊進(jìn)行軟件中斷的觸發(fā)模擬。( 3 )中斷的注冊(cè)和響應(yīng)。如圖13所示,通過request_irq(中斷注冊(cè))接口注冊(cè)對(duì)應(yīng)的中斷處理函數(shù),在中斷處理函數(shù)入口處進(jìn)行IRR寄存器中斷位的判斷,使中斷處理程序只處理屬于自己的中斷請(qǐng)求。即,當(dāng)軟件模擬觸發(fā)一個(gè)中斷后,此中斷處理函數(shù)被調(diào)用,判斷IRR寄存器對(duì)應(yīng)位是否為1,如果為1,繼續(xù)進(jìn)行本次中斷處理,否則退出處理。本實(shí)施例中,設(shè)計(jì)了一個(gè)上層應(yīng)用模塊配合測試驅(qū)動(dòng)一起使用,該應(yīng)用模塊位于應(yīng)用層(驅(qū)動(dòng)位于內(nèi)核層),主要用來產(chǎn)生觸發(fā)中斷的命令,命令通過ioctl接口傳給測試的驅(qū)動(dòng),驅(qū)動(dòng)接收到此命令后會(huì)觸發(fā)8259A產(chǎn)生軟中斷,進(jìn)而讓注冊(cè)的中斷處理函數(shù)響應(yīng)。如圖13所示,上層應(yīng)用模塊的實(shí)現(xiàn)流程如下
a.打開中斷測試驅(qū)動(dòng)用于獲取驅(qū)動(dòng)模塊對(duì)應(yīng)的驅(qū)動(dòng)描述符。當(dāng)測試驅(qū)動(dòng)加載時(shí)會(huì)在/dev目錄下生成對(duì)應(yīng)的設(shè)備驅(qū)動(dòng)節(jié)點(diǎn)(如testdriver),該節(jié)點(diǎn)即為此設(shè)備驅(qū)動(dòng)描述符,通過open(/dev/driver,)函數(shù)即可完成獲取。b.通過ioctl通道向此驅(qū)動(dòng)模塊傳送觸發(fā)中斷的命令。當(dāng)驅(qū)動(dòng)模塊接收到命令會(huì)調(diào)用先前注冊(cè)的軟觸發(fā)中斷模塊發(fā)中斷,同時(shí)注冊(cè)的中斷處理函數(shù)被調(diào)用,此時(shí)會(huì)去讀取8259A的IRR寄存器(中斷觸發(fā)后,硬件已自動(dòng)對(duì)irr相關(guān)位進(jìn)行設(shè)置),如果此寄存器的對(duì)應(yīng)位已經(jīng)置位,表示觸發(fā)的中斷請(qǐng)求已經(jīng)到達(dá),進(jìn)而響應(yīng)此中斷請(qǐng)求。c.釋放已打開的驅(qū)動(dòng)描述符,執(zhí)行完畢。 上述步驟中,通過上層應(yīng)用模塊和中斷測試驅(qū)動(dòng),模擬了采用本發(fā)明的中斷控制方法實(shí)現(xiàn)軟中斷的情況。綜上,本發(fā)明是用于飛騰服務(wù)器的中斷控制方法,能保證飛騰服務(wù)器上CS5536內(nèi)部硬件控制器邏輯觸發(fā)的中斷被及時(shí)準(zhǔn)確響應(yīng),使CS5536設(shè)備正常工作。以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,本發(fā)明的保護(hù)范圍并不僅局限于上述實(shí)施例,凡屬于本發(fā)明思路下的技術(shù)方案均屬于本發(fā)明的保護(hù)范圍。應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理前提下的若干改進(jìn)和潤飾,應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.ー種用于飛騰服務(wù)器的中斷控制方法,其特征在于包括以下步驟 (1)初始化在操作系統(tǒng)內(nèi)核啟動(dòng)過程中,對(duì)南橋CS5536中的硬件控制邏輯部件分配中斷控制器8259A的中斷位,并設(shè)置中斷路由; (2)中斷觸發(fā)硬件中斷源通過南橋CS5536中的硬件控制邏輯部件產(chǎn)生相應(yīng)類型的中斷信號(hào);在中斷控制器8259A的內(nèi)部寄存器中修改相應(yīng)的中斷位,中斷信號(hào)通過南橋CS5536中的中斷控制器8259A路由輸出為一公共中斷觸發(fā)信號(hào),所述公共中斷觸發(fā)信號(hào)經(jīng)橋接芯片映射轉(zhuǎn)換成中斷消息報(bào)文并傳至PCIE總線; (3)中斷響應(yīng)飛騰處理器從PCIE總線獲取所述中斷消息報(bào)文,進(jìn)入中斷狀態(tài)并調(diào)用一公共中斷響應(yīng)函數(shù);所述公共中斷響應(yīng)函數(shù)讀取所述中斷控制器8259A的內(nèi)部寄存器獲取中斷位,根據(jù)所述中斷位確定硬件中斷源,并通知飛騰處理器調(diào)用相應(yīng)的中斷處理函數(shù)處理中斷。
2.根據(jù)權(quán)利要求I所述的用于飛騰服務(wù)器的中斷控制方法,其特征在于,所述中斷信號(hào)通過南橋CS5536中的中斷控制器8259A路由輸出到南橋CS5536的通用I/O端ロ GPI012上,通過邊緣觸發(fā)方式輸出為一公共中斷觸發(fā)信號(hào)。
3.根據(jù)權(quán)利要求I所述的用于飛騰服務(wù)器的中斷控制方法,其特征在于,所述中斷消息報(bào)文包括PCIE總線規(guī)范定義的Assert_INTx和Deasser_INTx,所述Assert_INTx為中斷電平信號(hào)從無效狀態(tài)轉(zhuǎn)換成有效狀態(tài),所述DeaSSer_INTX為中斷電平信號(hào)從有效狀態(tài)轉(zhuǎn)換成無效狀態(tài)。
4.根據(jù)權(quán)利要求I 3中任一項(xiàng)所述的用于飛騰服務(wù)器的中斷控制方法,其特征在干,所述步驟(I)中的初始化流程包括以下步驟 Cl)設(shè)置飛騰處理器訪問GPIO的IO地址; (2)屏蔽中斷控制器8259A除內(nèi)部級(jí)聯(lián)中斷外的中斷位; (3)通過對(duì)相關(guān)MSR寄存器的設(shè)置去能所有中斷路由功能; (4)通過對(duì)GPIO基址的訪問去能GPI012的所有部件的功能; (5)使能GPI012的需使用的部件的功能設(shè)置; (6)根據(jù)硬件連接或設(shè)置,通過設(shè)置相關(guān)MSR寄存器路由中斷源到對(duì)應(yīng)8259A中斷引腳,以設(shè)置中斷路由; (7)初始化中斷控制器8259A。
5.根據(jù)權(quán)利要求4所述的用于飛騰服務(wù)器的中斷控制方法,其特征在于,所述GPI012的需使用的部件具體指GPI012的上拉位、翻轉(zhuǎn)位、AUXl輸出選擇位以及輸出使能位。
6.根據(jù)權(quán)利要求4所述的用于飛騰服務(wù)器的中斷控制方法,其特征在于,所述初始化中斷控制器8259A具體為對(duì)ICWl ICW4逐一進(jìn)行初始化,設(shè)置中斷觸發(fā)模式、主/從8259A對(duì)應(yīng)IRO的中斷號(hào)以及ID。
全文摘要
本發(fā)明公開了一種用于飛騰服務(wù)器的中斷控制方法,包括以下步驟初始化;硬件中斷源通過南橋CS5536中的硬件控制邏輯部件產(chǎn)生相應(yīng)類型的中斷信號(hào),通過南橋CS5536中的中斷控制器8259A路由輸出為一公共中斷觸發(fā)信號(hào),并在中斷控制器8259A的內(nèi)部寄存器中修改相應(yīng)的中斷位,公共中斷觸發(fā)信號(hào)經(jīng)橋接芯片映射轉(zhuǎn)換成中斷消息報(bào)文并傳至PCIE總線;飛騰處理器從PCIE總線獲取中斷消息報(bào)文,進(jìn)入中斷狀態(tài)并調(diào)用一公共中斷響應(yīng)函數(shù),讀取中斷控制器8259A的內(nèi)部寄存器獲取中斷位,從而確定硬件中斷源并處理中斷。本發(fā)明能使飛騰處理器能實(shí)時(shí)接收到CS5536設(shè)備的中斷消息報(bào)文并準(zhǔn)確實(shí)時(shí)的響應(yīng)并處理各種中斷。
文檔編號(hào)G06F13/24GK102622320SQ201210040518
公開日2012年8月1日 申請(qǐng)日期2012年2月22日 優(yōu)先權(quán)日2012年2月22日
發(fā)明者單晉奎, 吳慶波, 孔金珠, 張鐸, 戴華東, 肖斂濤, 鄧林文, 邵立松 申請(qǐng)人:中國人民解放軍國防科學(xué)技術(shù)大學(xué)