[摘要]在萬物物聯的時代,嵌入式物聯網設備的數量大幅增加。隨著需求的不斷提高,嵌入式物聯網產品方案的設計靈活性應當得到足夠的重視。來自華為的國產開源物聯網實時操作系統LiteOS內核精簡、安全性、實時性高。在移動物聯網終端有著廣泛的應用前景。本文介紹了一種基于SOPC平臺的華為LiteOS的移植,對通過使用FPGA平臺的芯片系統應用方案設計具有一定的參考價值。
本文源自王浩天; 汲偉明, 科技經濟導刊 發表時間:2021-04-25
[關鍵詞]實時操作系統;鴻蒙LiteOS;FPGA;移植
1.研究背景
實時操作系統,尤其是物聯網操作系統是嵌入式物聯網設備中不可或缺的組成部分。隨著嵌入式物聯網產品的需求復雜度的大幅提高,嵌入式系統的功能和智能化需求也隨之增多,軟件的復雜度不斷提高。相較于直接操作底層硬件,嵌入式實時操作系統能夠更合理、更有效地利用系統資源[1],其在方案制定和實現階段有著低成本,短開發周期的特點。常見的嵌入式實時操作系統架構如圖1所示。
另一方面,雖然網絡傳輸技術正在不斷進步,但受制于成本原因,在低成本方案上運用高性能網絡傳輸模組的可行性較低,中低端嵌入式物聯網產品方案通常網絡帶寬低,很難通云計算進行高效進行實時圖像處理和采集作業,而使用自身的MCU實現方法速度較慢,丟幀現象普遍,很難滿足速度、精度的要求[2]。
FPGA以其相對低功耗,高實時性,可重構性強等特點,非常適合芯片方案的設計和驗證,而通過FPGA的邏輯電路對圖像進行簡單預處理,易于維護且高效[3]。
而基于FPGA的片上可編程系統(SystemonProgrammableChip,SOPC)以其靈活度高,可裁減的特點[4],非常適合用于物聯網芯片的系統方案設計環節。
綜上所述,在基于FPGA的SOPC中運行實時操作系統能夠在兼具性能的同時對復雜軟件和應用有良好的適應性,這些特性使得此種SOPC平臺在嵌入式物聯網產品的方案設計環節上有較好的應用前景。
2.華為鴻蒙LiteOS操作系統
2.1LiteOS系統結構特征
華為LiteOS是一個基于任務優先級搶占調度機制內核的操作系統。華為LiteOS整體遵從分層設計,自下而上可分為:內核層、系統服務層、框架層和應用層。系統功能按照:系統->子系統->功能模塊,依次級展開。在不同的設備環節和使用場景下,華為LiteOS支持根據實際需求裁剪非必要的子系統或功能塊。其基礎內核最小可裁剪至10k,因此具有良好的可移植性。
2.2LiteOS進程機制
業內產生的物聯網操作系統種類繁多,這其中包括AndroidThings,AmazonFreeRTOS,ThreadX等[5]。LiteOS與μC/OS-II類似,采用搶占式調度機制來控制內核進程,并通過為每個用戶態進程分配獨立的進程空間,使進程之間互不可見,以此實現進程間隔離[6]。
在LiteOS中,進程的狀態主要有如圖三所示的五種(阻塞和阻塞掛起同為一個進程態)。當進程創建后,LiteOS會為每一個進程分配進程空間,在該進程中只能操作自己進程空間的資源,無法操作除公共資源外的其他資源。在使用進程時,允許進程掛起,恢復,延時等操作,同時也可以設置某個進程調度優先級和調度策略。當進程結束的時候,進程會主動釋放持有的進程資源,但該進程持有的pid資源需要通過父進程才能回收。LiteOS的進程狀態轉移如圖四所示。
2.3LiteOS的進程優先級管理
進程是資源分配和獨立運行的基本單位,是操作系統的核心概念[7]。LiteOS內核的進程模塊可以提供多個獨立進程,并實現了進程間通信和進程切換。LiteOS內核中的進程采用搶占式調度機制,支持時間片輪轉調度方式和FIFO調度機制。LiteOS內核的進程一共有32個優先級(0-31),可被配置的進程優先級共有22個,其最高優先級為10,最低優先級為31。高優先級的進程可搶占低優先級進程,低優先級進程必須在高優先級進程阻塞或結束后才能被CPU調度。
3.片上可編程系統
SOPC(SystemonProgrammableChip,可編程片上系統),即用可編程邏輯技術將整個系統集成到一塊芯片上。SOPC通常是指基于FPGA(Field-ProgrammableGateArray,現場可編程門陣列)的帶1個或多個軟核或者硬核微處理器以及一些外圍設備的片上系統SoC(SystemOnChip)[8]。SOPC的優勢在于其在設計過程中,能夠快速高效地適應需求升級所帶來的硬件變更,以達到縮短開發周期,降低開發成本的目的。目前,主流的嵌入式軟核處理器有:NiosII處理器[9]和MicroBlaze[10]處理器以及ARM公司提供的軟核。筆者根據LiteOS提供的可運行平臺以及泛用性綜合考慮,最終選擇了使用ARM公司的Cortex-M3處理器。
4.物聯網操作系統LiteOS在SOPC上的移植
本文移植的平臺為來自Xilinx的ZYNQFPGA平臺。在FPGA內部運行ARMCortex-M3內核,并在此內核上完成LiteOS的移植工作。與在傳統MCU上移植操作系統不同,在SOPC上移植操作系統,需要先在FPGA上搭建移植平臺的環境。
4.1基于FPGA的Cortex-M3軟核的搭建
ARM公司的Cortex-M3軟處理器(下稱M3),具有低功耗、高性能、價格低的特點,因此在嵌入式方案設計領域得到了廣泛的應用[11]。基于FPGA搭建的M3軟處理器由于其自身軟核的特點,擁有非常多的配置項。筆者使用Vivado工具對M3進行搭建,M3軟處理器的配置如圖5所示。由于在M3軟處理器上移植LiteOS需要使用Keil進行在線調試和代碼文件燒錄,因此筆者在配置M3軟處理器時,保留了JTAG端口和串行通信端口,并通過AXI總線與其他模塊相連。M3內核擁有多達256個中斷,筆者在此僅使用其中的76個。在2.1節中介紹了LiteOS的最小內核僅需10k的內存大小,因此這里給CM3內核分配256k的flash內存。M3軟處理器搭建的示意圖如圖6所示。
4.2LiteOS在SOPC上的移植驗證
為了驗證LiteOS在SOPC上的移植情況是否成功,筆者在ZYNQ開發板上通過對LiteOS的單/多任務創建進行移植驗證。在4.1節中,筆者在搭建Cortex-M3軟核時,將串行通信端口保留,并通過FPGA的可編程引腳直接連接至開發板上的CH340芯片上。根據在2.2節中介紹了LiteOS的任務創建方式,在LiteOS中創建任務需要使用LOS_KernelInit函數對內核進行初始化,當初始化完成后,即可對任務進行初始化,并編寫串行通信輸出函數,最終在任務啟動函數LOS_Start中啟動任務。
通過對串行通信傳輸數據的獲取可知,輸出數據與程序內部預設數據相同,Cortex-M3軟核已在LiteOS的控制下完成了單任務串口輸出驗證。
5.結語
本文介紹了華為LiteOS開源物聯網實時操作系統的基本原理,并針對LiteOS于運行在SOPC上的Cortex-M3嵌入式軟核的移植進行了說明。通過在LiteOS上運行的串行通信任務對LiteOS在SOPC上的運用方式進行了說明,取得一定的效果。對基于SOPC平臺構建物聯網系統的設計有一定的參考價值。
論文指導 >
SCI期刊推薦 >
論文常見問題 >
SCI常見問題 >