張靜 李娟



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