SPARC結構與實(shí)時(shí)內核的移植
4.系統中斷
時(shí)鐘節拍
對于一個(gè)多任務(wù)系統,時(shí)鐘節拍是必不可少的。ERC32CPU提供2個(gè)定時(shí)器,根據系統硬件采用的晶振源頻率,可通過(guò)設置對應定時(shí)器控制寄存器的計數值,通過(guò)產(chǎn)生一定周期的系統中斷來(lái)實(shí)現時(shí)鐘節拍。對于時(shí)鐘節拍的處理子程序,所選內核不同,其自帶子程序也不同。在定時(shí)中斷到來(lái),只需將子程序入口地址添加到中斷服務(wù)子程序中即可。
中斷嵌套
當在系統開(kāi)發(fā)中需要不同優(yōu)先級中斷,并可能發(fā)生中斷嵌套的情況時(shí),需要在進(jìn)入中斷服務(wù)子程序之前設置中斷優(yōu)先級,然后打開(kāi)Trap,以允許在較長(cháng)的中斷服務(wù)子程序中響應更高優(yōu)先級的中斷。在退出中斷服務(wù)子程序后,關(guān)閉Trap,將該中斷優(yōu)先級屏蔽掉,然后退出中斷。
堆棧段
在堆棧的管理上存在堆棧幀的概念,并且每個(gè)幀的分配與產(chǎn)生都對應一個(gè)新的窗口和一個(gè)新的線(xiàn)程或者中斷。根據中斷的棧結構和線(xiàn)程棧結構的不同,可在程序初始化部分分配兩個(gè)堆棧段。一個(gè)堆棧段對應普通線(xiàn)程的堆棧分配和管理,一個(gè)對應中斷棧的分配和管理。這樣在每個(gè)段中各幀的大小一致,不會(huì )在 Overflow Trap和Underflow Trap時(shí)讀寫(xiě)內存出錯??梢酝ㄟ^(guò)增加兩個(gè)變量LEVEL,SKP來(lái)協(xié)調兩個(gè)堆棧段的使用。使用兩個(gè)堆棧的中斷嵌套服務(wù)子程序流程圖如圖4。
5.總結
SPARC結構中比較復雜的部分就是寄存器窗口的概念,但在使用中,效率也高很多。如果能了解寄存器窗口的工作原理,并能正確使用Window flush操作,在軟件設計上將會(huì )得到高的可靠性。
本文作者的創(chuàng )新點(diǎn)為,將能實(shí)現自動(dòng)控制需求的小型uC/OS內核移植到具有高可靠性SPARC結構的ERC32 CPU。ERC32 CPU是專(zhuān)門(mén)針對航天應用而設計的CPU,采用SPARC V7指令集。航天工程的控制不像消費電子的控制那么復雜,但在可靠性和實(shí)時(shí)性方面要求比較苛刻,能夠移植滿(mǎn)足需求的小型內核,如uC/OS到ERC32,在工程上有很大的應用價(jià)值。
參考文獻:
1.The SPARC Architecture Manual Version 8,SPARC International,Inc.1998.
2.Jean J.Labrosse,邵貝貝,嵌入式實(shí)時(shí)操作系統uC/OS-II(第二版),北京航空航天大學(xué)出版社
3.Rad.Hard 32-bit SPARC Embedded Processor User Guide, Atmel Inc.2004
4.陳繼榮,Linux操作系統實(shí)時(shí)性分析及改進(jìn)策略,微計算機信息,2005,11期,67頁(yè)
評論