孫豐祥,許學芳,程玉偉
( 國電南京自動化股份有限公司, 南京 210061)
?
Spartan6芯片μC/OS-II的可搶占式嵌套中斷控制方法
孫豐祥,許學芳,程玉偉
( 國電南京自動化股份有限公司, 南京 210061)
介紹了Spartan6芯片搭載MicroBlaze軟核的硬件平臺,以及集成了μC/OS-II操作系統(tǒng)的軟件平臺;給出了在此軟硬件平臺上的可搶占、可嵌套的中斷機制的實現(xiàn)方法;靈活地運用面向底層硬件代碼與操作系統(tǒng)代碼之間的參數(shù)傳遞,協(xié)調(diào)了中斷處理與任務調(diào)度之間的關系。闡述了方案的原理,給出了程序流程圖;通過試驗,驗證了可搶占、可嵌套的中斷機制的正確性與可行性。
Spartan6;μC/OS-II;中斷搶占;中斷嵌套
Xilinx公司推出了32位軟核MicroBlaze,用來替代片上的微控制器,可以有效地縮小PCB板的面積和器件數(shù)量,降低整個系統(tǒng)的成本。MicroBlaze采用 32位哈佛RISC架構,32位獨立的地址總線和數(shù)據(jù)總線。Spartan6 FPGA為Xilinx公司的低成本、低功耗FPGA。第6代Spartan系列含最多150 000個邏輯單元、高級儲存器支持、250 MHz DSP Slice和3.125 Gbps低功耗收發(fā)器。本設計中首次采用Spartan6芯片搭載MicroBlaze軟核作為硬件平臺應用于保護裝置中,在此硬件平臺上開發(fā)適用于對穩(wěn)定性要求苛刻的電力自動化技術產(chǎn)品。
Spartan6芯片搭載MicroBlaze軟核的保護裝置的硬件平臺開發(fā)中[1],需求分析中明確要求,硬件平臺需要提供定時器中斷、串口中斷、CAN總線中斷、以太網(wǎng)接口中斷以及A/D采樣中斷等多個中斷信號。基于Spartan6芯片開發(fā)的平臺首次在保護裝置中應用;Spartan6芯片是Xilinx公司的一款FPGA芯片,此款芯片資源豐富,性能可靠,具有PFGA所特有的可靈活配置的特性,各項指標滿足在非電量保護裝置中應用。但是芯片原有的中斷控制器資源與所選用μC/OS-II操作系統(tǒng)配合,不支持中斷間的搶占與嵌套[2];如果不同優(yōu)先級的中斷同時被觸發(fā),原有的中斷機制無法區(qū)分中斷優(yōu)先級的高低。雖然原有中斷控制器上面可以設置多中斷的優(yōu)先級,但是匯編代碼中卻缺乏相應的處理機制,使之前設置的中斷優(yōu)先級失去意義;應用過程中只能盡量地縮短中斷服務程序代碼,力爭把中斷服務程序時間縮到最短;但是實際運用中仍然無法避免多個中斷被同時觸發(fā)的情況發(fā)生,嚴重時可能會導致系統(tǒng)死機。因此有必要開發(fā)一種可搶占的并且可嵌套的中斷處理機制,解決上述問題。
對于本硬件平臺在多中斷同時響應時不能區(qū)分中斷優(yōu)先級高低的問題,通過硬件工程修改設置、改變參數(shù)等常規(guī)方法都無法解決。由于本硬件平臺移植了μC/OS-II操作系統(tǒng),因此只能在μC/OS-II操作系統(tǒng)關于中斷處理的相關底層代碼中加入我們自主研發(fā)的中斷控制方法,來解決上述問題。根據(jù)μC/OS-II操作系統(tǒng)的特點,μC/OS-II操作系統(tǒng)每次是在中斷退出時通過調(diào)用中斷級的任務調(diào)度函數(shù),從而實現(xiàn)多任務的切換。因此需要在中斷嵌套時禁止任務切換,保證系統(tǒng)運行穩(wěn)定。Spartan6芯片的軟核Microblaze中的中斷控制器提供了硬件上的中斷優(yōu)先級設置,但是驅(qū)動程序以及μC/OS-II中并沒有區(qū)分優(yōu)先級,使硬件設置的優(yōu)先級失去作用[3]。因此本方案中通過查表獲得當前運行任務最高的優(yōu)先級后,屏蔽所有低優(yōu)先級任務。每次清除上述最高優(yōu)先級中斷后立刻開放此中斷,保證中斷可以嵌套。
在主函數(shù)中首先初始化中斷向量表;當中斷被觸發(fā)后跳入?yún)R編代碼,跳入?yún)R編程序后首先進行壓棧處理進行保護現(xiàn)場操作;同時考慮到μC/OS-II中的任務調(diào)度是在中斷退出時執(zhí)行的,因此在中斷嵌套的過程中不進行任務調(diào)度;所以此處采用計數(shù)器統(tǒng)計進入中斷次數(shù);如果進入中斷,計數(shù)器加1,如退出中斷計數(shù)器減1;通過計數(shù)器的值作為判斷條件,判斷是否允許任務調(diào)度,從而確保中斷嵌套時禁止任務調(diào)度。隨后讀取中斷使能寄存器與中斷向量寄存器的值,獲取當前被觸發(fā)的中斷中的最高的優(yōu)先級。通過查表處理屏蔽比當前中斷優(yōu)先級低的所有中斷,并開放比當前中斷優(yōu)先級高的所有中斷,從而實現(xiàn)在多中斷同時被觸發(fā)時,優(yōu)先級高的首先得到執(zhí)行,并且可搶占其他正在運行的低優(yōu)先級的中斷;同時,允許比當前中斷優(yōu)先級高的中斷對當前中斷的搶占。然后清除當前中斷的標志位,使其重新開放,實現(xiàn)中斷的可嵌套;然后跳轉(zhuǎn)出匯編程序,將當前最高優(yōu)先級的中斷參數(shù)傳遞到C代碼中的中斷處理函數(shù)以及操作系統(tǒng)中的任務調(diào)度函數(shù),C代碼獲得此最高優(yōu)先級中斷參數(shù)后,會進入相應的中斷處理函數(shù);同時μC/OS-II操作系統(tǒng)進行任務切換并重新調(diào)用匯編程序,恢復中斷現(xiàn)場;C代碼會清除中斷為下一次進入中斷做好準備。 軟件流程框圖如圖1所示。

圖1 軟件流程圖
在硬件平臺中設置定時器每1 ms發(fā)生一次中斷,定時器的中斷優(yōu)先級較高。串口不定時地接收到數(shù)據(jù),接收到一次數(shù)據(jù)發(fā)生一次串口接收中斷,定時器中斷優(yōu)先級高于串口接收中斷優(yōu)先級。當中斷被觸發(fā)后相應的中斷信號的電平由低變高,中斷處理函數(shù)完成中斷相關處理后,中斷信號由高電平回復為低電平。將定時器中斷信號與串口接收中斷信號分別引出,并接示波器觀察。圖2中,示波器通道1是定時器中斷波形,通道2是串口接收中斷波形。如圖1所示,定時器中斷先被觸發(fā),串口中斷后被觸發(fā),CPU處理完定時器中斷后才去處理串口中斷的處理程序。圖3中,示波器通道1是定時器中斷波形,通道2是串口接收中斷波形。如圖2所示,串口接收中斷先被觸發(fā),定時器中斷后被觸發(fā),CPU中止串口中斷處理程序而轉(zhuǎn)入定時器中斷的處理程序,定時器中斷處理程序執(zhí)行結束后,繼續(xù)執(zhí)行串口中斷的處理程序。

圖2 低優(yōu)先級中斷不能搶占高優(yōu)先級中斷示意圖
由圖2和圖3可以明確得出結論,低優(yōu)先級中斷不能打斷高優(yōu)先級中斷,需要高優(yōu)先級中斷處理結束后,才處理低優(yōu)先級中斷;反之高優(yōu)先級中斷可以打斷低優(yōu)先級中斷。也就是說中斷的可搶占功能得到了充分的驗證。由于示波器無法明確捕捉到中斷嵌套的實現(xiàn),因此在中斷程序代碼中加標志位計數(shù),進入中斷時,標志位加1,退出時標志位減1;并將標志位的數(shù)值打印出來,以檢測進入同一中斷的的次數(shù)。打印信息證明,中斷嵌套可以正確穩(wěn)定地實現(xiàn),實際運用中結合工程實際情況,兼顧系統(tǒng)穩(wěn)定與運行效率,把嵌套次數(shù)設置為3,既能滿足現(xiàn)場運行的需要又能防止中斷嵌套占用過多的資源。

圖3 高優(yōu)先級中斷可以搶占低優(yōu)先級中斷示意圖

[1] 何賓, 王瑜. 基于Xilinx MicroBlaze多核嵌入式系統(tǒng)的設計[J]. 電子設計工程,2011,19(13):141-144.
[2] 劉艷軍. 嵌人式操作系統(tǒng)μC/OS-II面向數(shù)控系統(tǒng)的改進[J].現(xiàn)代電子技術,2011,34(12):83-86.
[3] 劉釗,杜永鋒,許知博. 基于Xilinx-Spartan6 FPGA的MultiBoot設計的實現(xiàn)[J].電子科技,2012,25(3):28-32.
孫豐祥(工程師),從事繼電保護平臺研究。
◆ USB掛起指示。
◆ 時鐘輸出。
◆ LED變化顯示數(shù)據(jù)傳輸。
◆ 脈沖或邊沿觸發(fā)計數(shù)。
◆ 遠程喚醒。
在評估你的USB橋接器芯片設置時,要選擇可以提供完整橋接器產(chǎn)品組合解決方案的半導體供應商,他們支持幾乎所有主流的通信接口。確保選擇的固定功能的通信橋接器具有免晶振USB操作、片內(nèi)調(diào)壓器、片內(nèi)可編程存儲器和小尺寸封裝選項。為下一個嵌入式應用選擇合適的橋接芯片最終能夠為你節(jié)省大量的開發(fā)工作和費用,并且有助于縮短產(chǎn)品設計上市時間。
表1對比了10種采用常見通信接口的Silicon Labs橋接器產(chǎn)品的特征參數(shù)。
表1 常見通信橋接器


(責任編輯:楊迪娜 收稿日期:2014-04-18)
Interrupt Preemption and Nesting Method Based on Spartan6 and μC/OS-II
Sun Fengxiang, Xu Xuefang, Cheng Yuwei
(Guodian Nanjing Automation Co., Ltd., Nanjing 210061,China)
The hardware Platform based on MicroBlaze was introduced, and the software Platform of the μC/OS-II was integrated in the hardware platform .The method of designing the interrupt which can be preempted and nested was provided;parameters were transferred between the underlying code and the operating system code flexibly. The relationship of interrupt processing and task scheduling was coordinated; the theory of the scheme was recounted, and the software program flow chart was provideding, validating the rightness and feasibility of the theory.
Spartan6;μC/OS-II;interrupt preemption;interrupt nesting
TP399
A
珍
2013-12-17)