張靜 李娟
摘要 以國產(chǎn)處理器飛騰1500A/4多核處理器為硬件平臺,通過分析處理器的硬件特征以及國產(chǎn)嵌入式實時操作系統(tǒng)的體系結(jié)構(gòu),提出了基于飛騰1500A/4的銳華國產(chǎn)嵌入式實時操作系統(tǒng)處理器支持包適配技術(shù),詳細介紹了關(guān)鍵功能模塊的實現(xiàn)方式,對提升我國國產(chǎn)軟硬件的自主可控水平具有重要意義。
【關(guān)鍵詞】飛騰1500A/4 銳華 嵌入式實時操作系統(tǒng)CSP
飛騰1500A/4處理器是國防科技大學(xué)自主研發(fā)的國產(chǎn)處理器芯片,主頻1.5GHz,兼容ARMV8指令集,集成4個SMP架構(gòu)的xiaomi處理器核(飛騰C660),支持PCIE、UART、GMAC等豐富的外設(shè)接口。
銳華嵌入式實時操作系統(tǒng)是華東計算技術(shù)研究所自主研制的國產(chǎn)嵌入式實時操作系統(tǒng)。產(chǎn)品通過了信息產(chǎn)業(yè)部華東工程軟件測評中心以及總裝備部測評機構(gòu)的第三方軟件測試,支持PowerPC、X86、ARM、國產(chǎn)龍芯、飛騰等主流處理器,且目前已經(jīng)在多種軍事裝備中廣泛應(yīng)用。
1 銳華嵌入式實時操作系統(tǒng)
銳華嵌入實時操作系統(tǒng)具有強實時、可裁剪、可擴展等特性,其結(jié)構(gòu)如圖1所示。
銳華嵌入式實時操作系統(tǒng)組成分為:
1.1 軟硬件適配層
主要包括處理器支持包河板級支持包,實現(xiàn)針對處理器及板卡的初始化、任務(wù)上下文切換管理、中斷/異常管理管理以及設(shè)備驅(qū)動等功能,屏蔽底層硬件區(qū)別,為操作系統(tǒng)提供統(tǒng)一接口。其中處理器支持包與CPU類型密切相關(guān)。
1.2 嵌入式實時操作系統(tǒng)核心
嵌入式實時操作系統(tǒng)核心提供強實時內(nèi)核,支持實時調(diào)度、內(nèi)存管理、時鐘管理、定時器管理等功能,支持SMP多核并行處理架構(gòu),提供任務(wù)管理、任務(wù)通信、對象管理等操作系統(tǒng)功能,提供符合POSIX規(guī)范的操作系統(tǒng)接口。
1.3 外圍支撐模塊
外圍支撐模塊主要包括文件系統(tǒng)、網(wǎng)絡(luò)協(xié)議棧、I/O管理等功能,為用戶提供統(tǒng)一的文件、字符設(shè)備、塊設(shè)備以及網(wǎng)絡(luò)設(shè)備操作接口。運行管理提供動態(tài)加卸載功能,可靈活加載用戶應(yīng)用,并提供實時監(jiān)控功能。
本文主要研究內(nèi)容為處理器支持包的實現(xiàn),研究實現(xiàn)基于國產(chǎn)飛騰1500A/4處理器的軟硬件優(yōu)化適配技術(shù)。
2 處理器支持包
處理器支持包主要實現(xiàn)操作系統(tǒng)對飛騰1500A/4國產(chǎn)處理器的優(yōu)化適配,為操作系統(tǒng)核心提供統(tǒng)一實現(xiàn)接口,屏蔽處理器體系結(jié)構(gòu)差異,是本設(shè)計中的主要研究內(nèi)容。
飛騰15 00A/4兼容ARMV8指令集,支持SMP架構(gòu)。本設(shè)計中操作系統(tǒng)為32位地址空間模式,因此飛騰1500A/4工作在32位模式即ARM AArch32模式,設(shè)計中采用兼容ARMV7的32位指令集。
基于飛騰1500A/4處理器的處理器支持包適配關(guān)鍵技術(shù)為:
2.1 任務(wù)上下文切換
任務(wù)上下文切換是操作系統(tǒng)多任務(wù)運行的關(guān)鍵,在任務(wù)切換時將當前運行任務(wù)的寄存器保存在堆棧中,在任務(wù)恢復(fù)時將之前保存的任務(wù)上下文恢復(fù)使任務(wù)繼續(xù)運行。由于操作系統(tǒng)運行過程中任務(wù)切換頻繁,因此該部分功能的實現(xiàn)要高效、簡潔,在本設(shè)計中采用匯編語言實現(xiàn)。
通過Context Ctrl結(jié)構(gòu)體保存任務(wù)運行時所需的寄存器值,使用Context_Ctrl *excuting和heir分別表示任務(wù)切換時正在運行的任務(wù)和將要運行任務(wù)的寄存器地址。飛騰15 00A/4處理器在AArch32模式下需要保存的寄存器主要為:rO—rl0,fp,r12,lr(r14)、cpsr和pe值,其中cpsr為處理器當前狀態(tài)寄存器,本設(shè)計中主要用來保存任務(wù)切換時的中斷使能狀態(tài)(cpsr bit7),pe值(r15寄存器)為保存任務(wù)切換時刻的運行地址。在SVC模式下,基于飛騰1500A/4的任務(wù)上下文切換流程圖如圖2所示。
2.2 中斷處理
飛騰1500A/4處理器的中斷處理設(shè)計關(guān)鍵部分為:
(1)中斷向量表地址設(shè)置及初始化;
(2)中斷現(xiàn)場保存及恢復(fù)。
在中斷使能前,需要設(shè)置VBAR寄存器以確定中斷向量表地址,即系統(tǒng)產(chǎn)生中斷/異常時的跳轉(zhuǎn)地址。然后將中斷處理程序拷貝到設(shè)置的向量表地址處,以實現(xiàn)對中斷現(xiàn)場保存和恢復(fù)以及中斷的處理。
為保證實時操作系統(tǒng)的中斷響應(yīng)時間,中斷現(xiàn)場保存及恢復(fù)采用匯編語言實現(xiàn),且中斷服務(wù)程序盡可能短,以避免系統(tǒng)鎖中斷時間過長而影響實時性?;陲w騰1500A/4的中斷處理流程如圖3所示。
中斷返回時,如果沒有更高優(yōu)先級的任務(wù),則直接恢復(fù)到被中斷打斷的任務(wù)中運行;否則切換到更高優(yōu)先級的任務(wù)中運行。
2.3 多核同步與互斥
基于飛騰1500A/4多核處理器的同步于互斥主要實現(xiàn)多核操作系統(tǒng)的完整性保護,防止一個程序?qū)Y源進程訪問的過程中,該資源又被其他程序訪問、引用或修改。針對飛騰1500A/4處理器,需要研究實現(xiàn)適用于多核系統(tǒng)的底層同步原語,主要為原子操作、自旋鎖、以及內(nèi)存屏障。
飛騰1500A/4處理器提供“不可被中斷的”原子操作指令ldrex和strex,分別用來取和存內(nèi)存中的數(shù)據(jù)。本設(shè)計中通過該對指令實現(xiàn)基本的原子操作,如原子加、減、設(shè)置、獲取、原子與、清除等。
為了保證讀內(nèi)存和寫內(nèi)存完全按照順序執(zhí)行,飛騰15 00A/4處理器提供內(nèi)存屏障指令“dmb”,基于該指令實現(xiàn)內(nèi)存讀屏障、寫屏障和讀寫屏障。
銳華操作系統(tǒng)在獲取自旋鎖和釋放自旋鎖之間采用完全內(nèi)存屏障,保證讀內(nèi)存和寫內(nèi)存完全按照順序執(zhí)行,通過原子操作指令設(shè)置和獲取自旋鎖的狀態(tài)。根據(jù)不同的使用場景,多核操作系統(tǒng)中的設(shè)計了禁止搶占的自旋鎖和禁止中斷的自旋鎖。為保證實時性,禁止中斷的自旋鎖根據(jù)應(yīng)用場景又分為公平自旋鎖和非公平自旋鎖。公平自旋鎖針對需要高性能自旋鎖同時對公平性和確定性要求較高的應(yīng)用場景,非公平自旋鎖針對需要高性能自旋鎖但是對公平性和確定性要求相對不高的應(yīng)用場景。
3 結(jié)語
以國產(chǎn)飛騰1500A/4多核處理器為硬件平臺,通過分析國產(chǎn)銳華多核嵌入式操作系統(tǒng)及處理器的硬件架構(gòu),提出了機遇銳華操作系統(tǒng)的飛騰1500A/4處理器優(yōu)化適配關(guān)鍵技術(shù)及實現(xiàn)方式。目前,基于飛騰1500A//4的銳華嵌入式操作系統(tǒng)已經(jīng)在項目中進行應(yīng)用,滿足用戶應(yīng)用需求,為其他嵌入式操作系統(tǒng)在飛騰處理器上的適配具有一定的參考作用,對國產(chǎn)處理器及嵌入式操作系統(tǒng)的應(yīng)用推廣具有重要意義,進一步提升我國基礎(chǔ)軟硬件的自主可控水平。
參考文獻
[1]趙星星,羅克露,張軍等,嵌入式實時操作系統(tǒng)移植技術(shù)的研究與應(yīng)用[J].計算機工程,2007,33 (17): 90-92.
[2]Jean J.Labros se著,邵貝貝等譯.嵌入式實時操作系統(tǒng)μC/OS-II(第二版)[M].北京:北京航空航天大學(xué)出版社,2003.
[3]周民軍,基于ARM的嵌入式操作系統(tǒng)的設(shè)備驅(qū)動程序設(shè)計[D].武漢:武漢理工大學(xué),2010:1-3.
[4] PHYTIUM飛騰.FT-15 00A/4數(shù)據(jù)手冊Vl.5 [Z].2016.
[5] ARM. Arm architecture ReferenceMannual ArmV8, for Armv8-Aarchitecture
profile [Z]. 2013. http://www.arm.com.