物聯網技術是這幾年整個電子信息技術最重要的主題,而在物聯網技術中與消費者接觸最為密切的應用,當屬這兩年興起的智能硬體應用。無論是物聯網還是智能硬體應用,都是建立在龐大的嵌入式系統生態之上。
嵌入式作業系統隨嵌入式計算機一起深埋於各種設備中,用戶無法直觀上感知作業系統的存在,也無法直接進行安裝和維護,只能靠設備的運行表徵來間接感受它的存在。事實上,所有帶有數字接口和程序控制的設備,如電子手錶、智能電視、數位相機、汽車、飛機、衛星等都使用嵌入式系統,大眾生活處處可見嵌入式作業系統。智能硬體應用的繁榮,直接帶動了整個嵌入式技術的蓬勃發展。倪光南院士認為,嵌入式系統順應了電子信息產業的最新發展需求。「事實上,作為新一代信息技術的三大代表,物聯網、雲計算和移動網際網路的核心組成部分,都包含了大量嵌入式系統。
廣東中興新支點緊隨市場需求,成功研製了具有自主版權的嵌入式作業系統。消息一經披露就引發了國內外關注及熱議。下面一起來了解下這個新興嵌入式作業系統的全貌:
中興新支點嵌入式作業系統主要由四部分構成:功能增強的引導程序bootloader、優化改造的Linux內核、高效穩定的中間件、簡單友善的集成開發環境。
一、 功能增強的引導程序bootloader
Bootloader是系統上電之後啟動的第一段程序,和X86架構中的bios相似,這段程序主要有兩部分功能:第一個是引導加載系統,這裡指的是Linux內核;第二個是用於調試的,主要用於調試系統和硬體。嵌入式系統的Bootloader種類繁多,有uboot、ppcboot、redboot、vivi等,其中以uboot的應用最廣,支持的硬體也最全面。中興新支點嵌入式作業系統的bootloader就是採用了uboot的這個開源項目的代碼改造的。其中主要優化改造了以下幾點:
1、 網絡功能增強
開源的uboot的網絡功能比較薄弱,基本上只支持tftp的傳說協議,用於傳輸文件。而中興新支點嵌入式作業系統的bootloader則增強了uboot的網絡功能,使得uboot支持TCP和UDP的傳輸協議,客戶可以根據自己的需求在bootlaoder中實現自己的網絡數據傳輸,增加了bootloader的網絡靈活性。
2、 文件系統功能增強
中興新支點嵌入式作業系統的bootloader引導程序對文件系統的支持比較多,包jffs2、yaffs2、ext4、fat32等格式的文件系統。
3、 增加菜單配置項
中興新支點嵌入式作業系統的bootloader增加了菜單配置選項功能,大大簡化了開發人員開發的難度。用戶只需要通過菜單配置選項,配置bootloader的功能,而無需要用戶手動修改uboot的配置宏。
中興新支點嵌入式系統體系結構
二、 優化改造的Linux內核
針對嵌入式行業的特定的需求,如高實時、高穩定、安全的特點。中興新支點嵌入式作業系統對Linux內核做了大量的優化,從而大大的提高了系統的實時性、穩定性、和安全。下面是幾個重要內核優化點:
1、 進程調度改造和優化
進程調度的改造和優化主要分兩個部分:優化和改造調度算法;增加調度點,增強系統的搶佔能力。
優化和改造調度算法
調度算法優化的原則主要是高優先級的進程先執行,而低優先級的進程等待高優先級的進程執行完。然而在SMP環境下,由於每個CPU都有自己單獨的運行的進程隊列,每個CPU都只在自己的隊列上選取進程,內核對進程的調度並不是完全按照優先級來調度的,這嚴重的影響了內核的實時性。優化的方式是在進程調度的時候每次都取得系統中優先級最高的進程,而不是本CPU隊列中的最高的進程。
增加調度點,增強系統的搶佔能力
針對系統長時間得不到調度的情況,導致高優先級的進程不能搶佔低優先級的進程的情況。找出長時間不能調度的代碼,增加調度點,保證高優先級的進程能夠儘快搶佔低優先級的進程,從而提高系統的實時性能。
2、 中斷線程化
在開源Linux 中,中斷具有最高的優先級。不論在任何時刻,只要產生中斷事件,內核將立即執行相應的中斷處理程序,等到所有掛起的中斷和軟中斷處理完畢後才能執行的進程,因此有可能造成實時任務得不到及時的處理。中斷線程化技術之後,中斷將作為內核線程運行而且被賦予不同的優先級,實時任務可以有比中斷線程更高的優先級。這樣,具有最高優先級的實時任務就能得到優先處理,即使在嚴重負載下仍有實時性保證。
3、 信號量優先級繼承
在開源的Linux中,由於信號量不支持優先級繼承,因此可能導致高優先級的進程被低優先級的進程阻塞。舉個例子,系統中運行著三個進程A、B、C,A的優先級最高,B的優先級中,C的優先級最低,進程A和C都需要信號量D,現在進程C最先獲得信號量D,但是在進程C釋放信號量D之前,進程A獲取信號量D,這時由於進程C已經持有了信號量D,因此進程A必須休眠等待,而當進程A放棄CPU的時候,由於進程B的優先級比進程C高,所以最先被調度的是進程B,這樣就相當於進程A這個高優先級的進程被進程B這個中優先級的進程阻塞。而優化之後的信號量由於有了優先級繼承的功能,當進程A獲取信號量D的時候,進程C會繼承進程A的優先級,所以當進程A放棄CPU的時候,最先調度進來的是進程C,這樣就能儘快讓進程C釋放信號量D,而讓進程A最快得到執行。
4、 內存管理機制的改造
內存管理機制的改造主要改造了兩個方面:內存信息統計;用戶態內存申請直接映射。
內存信息統計
開源的Linux內核,未對內存的各項信息提供一個完成的統計顯示,而中興新支點嵌入式作業系統則針對需求,在proc文件系統中新增了六類內存統計信息的功能:物理內存大小;可用物理內存大小;剩餘物理內存大小;高端內存大小;低端內存大小;用戶空間佔用內存大小。通過這些信息,用戶可以清晰的知道系統內存的使用情況。
用戶態內存申請直接映射
開源的Linux中,用戶態分配內存的時候只是分配了虛擬內存,而沒有分配物理內存,而只會等到應用程式直接訪問的時候才會分配物理內存,而一旦物理內存不夠就會導致系統進入oom-kill流程,從而殺死用戶態進程。針對這個問題新支點嵌入式作業系統優化了內存分配機制,在用戶態分配內存的時候直接分配物理內存,如果內存不夠就返回NULL。
三、 高效穩定的中間件
中興新支點嵌入式作業系統提供了一套功能強大、高效的中間件,通過這些中間件可以大大的降低客戶的程序開發的難度,提高開發效率,縮短開發周期。該中間件主要包括以下內容:
1、 多進程、多線程編程庫
中興新支點嵌入式作業系統的中間件提供了一套完善的多線程編程庫,該線程編程庫包括:高效的進程間通信,線程間同步,線程管理等。簡化了進程和線程的創建流程,優化了線程的管理。
2、 網絡庫
在後網際網路時代,網絡已經成為了各個嵌入式設備必須的功能。而網絡編程又往往比較複雜,導致了編程人員不得不花費大部分時間在網絡編程上,而無法專心自己的更關注的業務編程,降低了開發的效率。為了更好的讓客戶更多的關注自己的業務,中興新支點嵌入式作業系統中加入了一個網絡庫,這套庫主要封裝了socket的編程接口,htttp協議、DHCP協議、HTTPS協議、Qos功能,大大簡化了網絡開發的難度。
3、 vxwork適配庫
該庫主要是針對vxwork的用戶遷移到Linux系統而開發的一套庫,這套庫通過Linux平臺實現了幾乎所有的vxworks系統的用戶接口,包括任務的創建、任務間的通信、網絡接口等。通過這套庫vxworks上運行的用戶的業務程序,可以輕鬆的移植到Linux平臺,而不需要根據用戶的業務需求重新設計一套新的代碼。這大大減少了vxworks系統遷移到Linux系統的工作量。
四、 簡單友善的集成開發環境
嵌入式開發往往最讓程式設計師頭疼的是交叉開發調試環境的構建,和各個工具之間的兼容性問題。針對這個問題中興新支點嵌入式作業系統提供了一整套的集成開發調試工具,讓用戶不再需要花費太多的時間和精力在開發環境的構建上。同時這套開發環境還集成了很多調試、分析工具。通過這些工具用戶能夠方便快速的定位程序的問題,解決bug。以下是該套集成開發環境集成的工具:
1、 開發環境的集成
集成了嵌入式的集成開發環境,這些環境中包括:交叉編譯器gcc、增強的bootloader、優化和改造的Linux內核、高效穩定的中間件、遠程調試工具、代碼編輯、項目管理等。通過這些集成,可以大大的提高用戶的開發效率,縮短產品的上市時間。
2、 KProfiler
KProfiler是一款低開銷的系統全局性能監視工具,用於對 Linux 系統進行評測(profiling)和性能監控。通過評測表或圖形,形象的顯示出為特定的處理器事件收集的採樣百分數或數量以用於總結或分析。
KProfiler 可以幫助用戶獲取諸如系統熱點函數及其調用鏈、緩存/TLB 命中率、函數執行效率等信息,能夠幫助用戶排查 CPU 衝高,程序性能無法提升等問題。它收集有關處理器事件的信息,其中包括 TLB的故障、停機、存儲器訪問、緩存命中率。通過收集到的評測數據,用戶可以很容易地找出性能問題。
KProfiler 可以工作在不同的體系結構上,包括X86、 arm(包括 nommu)、ppc(powerpc)、mips 等。
3、 KCov
KCov是一款代碼覆蓋率分析工具,通過該工具可以定位沒用的或者不執行的代碼的過程,從而增強程序的可讀性和執行效率,降低不執行代碼中存在 bug 的風險。KCov,能夠檢驗出程序中的每一條語句是否都被執行過,從而幫助用戶剔除軟體中的 dead code(無用的、不會被執行的、以及腐朽的代碼)。
4、 KMemTracer
內存檢測工具(KMemTracer)是一款集合用戶態內存洩露檢測和內存越界實時檢測兩大功能的檢測工具。它可以在不修改原始碼的前提下,檢測應用程式的內存洩露情況和內存越界操作。檢測範圍包括C/C++語言,具有對應用程式影響較小,檢測準確、可快速定位故障的特點。
隨著工業4.0時代和物聯網、智能硬體應用時代的步步走近,嵌入式系統領域面臨著更多的挑戰和機會,這意味著對智能系統技術、產品和解決方案有了更高性能的要求,同時也是像廣東新支點這類嵌入式作業系統解決方案提供商綻放光彩的大好機會和絢麗舞臺。