在當(dāng)今快節(jié)奏的嵌入式系統(tǒng)世界中,靈活性和適應(yīng)性是嵌入式系統(tǒng)實現(xiàn)的關(guān)鍵。SEGGER推出了其最新創(chuàng)新:Embedded apps(emApps)應(yīng)用,類似于手機上的應(yīng)用程序,可以運行在嵌入式系統(tǒng)上。
應(yīng)用是小型的動態(tài)軟件,可以靜態(tài)或動態(tài)地鏈接到設(shè)備固件中。通常使用動態(tài)鏈接方式,這意味著用戶可以隨時下載并將它們添加到已有固件中。
應(yīng)用由固件中的一段高度優(yōu)化的代碼執(zhí)行,這段代碼即執(zhí)行器,它實現(xiàn)了虛擬CPU的指令集。此功能擴展了設(shè)備功能,使其更加通用,適應(yīng)新的需求和更新。從本質(zhì)上講,應(yīng)用允許用戶將嵌入式設(shè)備變成嵌入式平臺!
應(yīng)用的一個突出特點是它們是沙盒式的。換言之,它們在受保護的環(huán)境中運行,底層操作系統(tǒng)可以監(jiān)視其行為。如果一個應(yīng)用試圖做一些它不應(yīng)該做的事情,執(zhí)行器將暫停應(yīng)用程序的執(zhí)行并返回到固件(調(diào)用者),由固件決定如何處理這種情況,這確保了即使應(yīng)用程序出現(xiàn)問題,也不會造成任何傷害,系統(tǒng)的其余部分仍然保持穩(wěn)定和安全。
基本原理
我們需要將帶有API功能的沙盒和執(zhí)行器添加到固件中,這樣設(shè)備就可以執(zhí)行應(yīng)用了。要向應(yīng)用添加功能,可以添加API函數(shù)。為了給文件系統(tǒng)添加讀訪問,通常會添加3個函數(shù),比如OpenFile,ReadFile, CloseFile。為了允許寫訪問,需要添加一個WriteFile函數(shù)。
如何加載應(yīng)用程序以及在什么上下文中/線程中執(zhí)行它們?nèi)Q于固件設(shè)計人員。
多個應(yīng)用可以同時運行,在實時操作系統(tǒng)(RTOS)的控制下運行在一個核或不同核上。因為執(zhí)行器由固件調(diào)用,任何RTOS都可以實現(xiàn)。
每個應(yīng)用有獨立的內(nèi)存空間。如果應(yīng)用程序遇到問題(如崩潰……),它不會影響系統(tǒng)穩(wěn)定性,就像手機或桌面應(yīng)用程序崩潰不會影響系統(tǒng)一樣。這甚至可以讓應(yīng)用在安全關(guān)鍵環(huán)境中運行,甚至可以使認證一個關(guān)鍵系統(tǒng)變得更容易,因為外設(shè)功能(如顯示器的控制)可以轉(zhuǎn)移到一個應(yīng)用中,而不需要成為認證過程的一部分。
內(nèi)存需求
這些應(yīng)用不僅提高了靈活性,其內(nèi)存消耗也很小。執(zhí)行器是嵌入式固件的一部分,通常需要600到1000字節(jié)空間。我們提供了一個ARM優(yōu)化版本以及可移植的C版本,它可以運行在幾乎任何平臺上。固件提供API功能,通常會增加1到3 KB占用,具體取決于希望向應(yīng)用公開的本地功能。這意味著emApps甚至可以在更小的系統(tǒng)(64KB閃存)上運行,該框架可以很容易地集成到現(xiàn)有固件中。
代碼密度
運行這些應(yīng)用的虛擬CPU的代碼密度非常高,甚至高于主機CPU的代碼密度,特別是在RISC-V環(huán)境中。這可以幫助節(jié)省寶貴的程序空間,特別是當(dāng)應(yīng)用靜態(tài)地內(nèi)置時!對于這個虛擬CPU,我們使用自己的C編譯器,其他語言如Basic,Pascal,Phyton可以通過C轉(zhuǎn)換器來使用。
內(nèi)存保護-沙箱
應(yīng)用只能使用固件分配的內(nèi)存空間。只要應(yīng)用處于活動狀態(tài),固件就會為其提供內(nèi)存。任何意圖訪問指定空間之外的內(nèi)存都會被攔截,執(zhí)行器返回并讓調(diào)用者(固件)決定如何處理這種情況。
性能
應(yīng)用由固件中的執(zhí)行器執(zhí)行。執(zhí)行器實現(xiàn)了一個虛擬CPU的指令集,我們?yōu)榇诉M行了優(yōu)化:
該指令集非常緊湊,因此由虛擬CPU執(zhí)行的指令數(shù)量通常顯著低于主機CPU執(zhí)行相同功能所需的指令數(shù)量,并且可以在任何CPU上輕松高效地執(zhí)行。結(jié)合將計算密集型任務(wù)卸載到主機CPU的能力,性能可以非常接近主機CPU。
這種創(chuàng)新的方法已經(jīng)集成到J-Link和Flasher產(chǎn)品線中,通過應(yīng)用可以方便的增加新的CPU支持。在Flasher Hub中,通過應(yīng)用允許自定義web用戶界面,添加新功能或簡單地更改用戶界面語言。
不同行業(yè)的嵌入式應(yīng)用程序都可以利用這種技術(shù)。通過emApps,用戶以一種安全可控的方式擴展功能,這種方法不僅提高了靈活性,而且為第三方開發(fā)人員提供了為生態(tài)系統(tǒng)做出貢獻的機會。
-
嵌入式系統(tǒng)
+關(guān)注
關(guān)注
41文章
3670瀏覽量
131042 -
內(nèi)存
+關(guān)注
關(guān)注
8文章
3115瀏覽量
75073 -
應(yīng)用程序
+關(guān)注
關(guān)注
38文章
3324瀏覽量
58830 -
SEGGER
+關(guān)注
關(guān)注
0文章
51瀏覽量
14428
原文標題:運行在嵌入式系統(tǒng)上的emApps
文章出處:【微信號:麥克泰技術(shù),微信公眾號:麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
【「嵌入式Hypervisor:架構(gòu)、原理與應(yīng)用」閱讀體驗】+ Hypervisor應(yīng)用場景調(diào)研
嵌入式系統(tǒng)復(fù)習(xí)資料
什么是嵌入式系統(tǒng) 嵌入式系統(tǒng)定義
嵌入式系統(tǒng)中的數(shù)據(jù)存儲和管理的相關(guān)資料分享
常用的嵌入式GUI包括哪些呢
Netdata嵌入式測試的相關(guān)資料推薦
嵌入式系統(tǒng)安裝docker的步驟
嵌入式Linux系統(tǒng)中應(yīng)用的GTK+和X分析
基于ARM嵌入式系統(tǒng)軟PLC的研究

什么是嵌入式系統(tǒng)

【嵌入式系統(tǒng)設(shè)計師筆記】——什么是嵌入式?

什么是嵌入式操作系統(tǒng)?

評論