嵌入式軟件架構(gòu)設(shè)計(jì)意圖通常伴隨著基于個(gè)人經(jīng)驗(yàn)的假設(shè)。軟件開發(fā)人員可能會(huì)從資源受限的基于微控制器的系統(tǒng)的角度來看待架構(gòu)設(shè)計(jì)。系統(tǒng)人員可能會(huì)從應(yīng)用處理器的角度考慮架構(gòu)。如何設(shè)計(jì)架構(gòu)將取決于系統(tǒng)的嵌入式軟件分類。
我們可以通過多種不同的方式對(duì)嵌入式軟件進(jìn)行分類。我發(fā)現(xiàn)有五種簡(jiǎn)單的嵌入式軟件分類可以幫助我調(diào)整視角以最好地理解手頭的系統(tǒng)。
讓我們探索 5 個(gè)簡(jiǎn)單的嵌入式軟件分類,您需要了解這些分類才能成功地交流和設(shè)計(jì)您的系統(tǒng)。
01.嵌入式軟件分類 – BAREMETAL
裸機(jī)嵌入式系統(tǒng)利用不依賴于操作系統(tǒng)的軟件架構(gòu)。通常,裸機(jī)架構(gòu)將是事件驅(qū)動(dòng)的,嚴(yán)重依賴狀態(tài)機(jī),和/或使用非常簡(jiǎn)單的協(xié)作任務(wù)調(diào)度。開發(fā)人員需要非常了解底層處理器,因?yàn)闆]有操作系統(tǒng)可以抽象出底層細(xì)節(jié)。
您通常會(huì)在資源受限的設(shè)備(例如 8 位、16 位和一些 32 位微控制器)上找到裸機(jī)軟件設(shè)計(jì)。但是,資源可用性不是裸機(jī)系統(tǒng)的限制條件。您可以設(shè)計(jì)一個(gè)裸機(jī)架構(gòu)并為任何嵌入式處理器實(shí)現(xiàn)它。不幸的是,處理器越復(fù)雜,實(shí)現(xiàn)就越復(fù)雜。
對(duì)于功能有限、使用資源受限的微控制器、具有嚴(yán)格的實(shí)時(shí)要求以及對(duì)可擴(kuò)展性的最低要求的產(chǎn)品,建議使用裸機(jī)架構(gòu)和實(shí)現(xiàn)。
02.嵌入式軟件分類 – 實(shí)時(shí)操作系統(tǒng) (RTOS)
使用實(shí)時(shí)操作系統(tǒng)的嵌入式軟件體系結(jié)構(gòu)在過去幾年中急劇增加?;?RTOS 的嵌入式系統(tǒng)通常具有比裸機(jī)架構(gòu)更復(fù)雜的時(shí)序要求。RTOS 抽象出一些低級(jí)細(xì)節(jié),例如任務(wù)調(diào)度,同時(shí)還為開發(fā)人員提供任務(wù)同步(信號(hào)量和標(biāo)志)、數(shù)據(jù)保護(hù)(互斥量)和通信(隊(duì)列)的工具。
您通常會(huì)在 32 位微控制器和小型應(yīng)用處理器上找到 RTOS 軟件設(shè)計(jì)。雖然您可能會(huì)在 16 位處理器上找到它們,但 RTOS 通常需要至少 24 KB 的閃存和 32 KB 的 RAM 才能有效使用。這些要求對(duì) RTOS 的有效使用設(shè)置了下限。
RTOS 會(huì)給設(shè)計(jì)增加額外的復(fù)雜性,主要是在使用搶占式任務(wù)調(diào)度時(shí)。如果設(shè)計(jì)者不小心,就有可能導(dǎo)致線程饑餓、創(chuàng)建優(yōu)先級(jí)倒置甚至死鎖。但是,RTOS 可以為您提供快速擴(kuò)展系統(tǒng)、提高可維護(hù)性以及收集比裸機(jī)系統(tǒng)更復(fù)雜的系統(tǒng)性能的能力。
對(duì)于具有復(fù)雜時(shí)序要求、使用現(xiàn)代微控制器、受益于多任務(wù)處理以及需要擴(kuò)展或重用應(yīng)用程序部分的產(chǎn)品,建議使用基于 RTOS 的架構(gòu)和實(shí)現(xiàn)。
03.嵌入式軟件分類 – “通用”操作系統(tǒng)
當(dāng)使用足夠復(fù)雜的處理器(如應(yīng)用程序處理器)時(shí),嵌入式軟件架構(gòu)可以利用整個(gè)操作系統(tǒng)。例如,嵌入式 Linux 可以被認(rèn)為是一個(gè)完整的操作系統(tǒng)。我不將 RTOS 歸入此類別,因?yàn)?RTOS 與嵌入式 Linux 不同,它是一種專用的、資源受限的操作系統(tǒng),。設(shè)計(jì)人員可以像開發(fā)桌面或移動(dòng)應(yīng)用程序那樣完全訪問庫(kù)和操作系統(tǒng)資源。
您通常會(huì)在 Raspberry Pi 等 32 位應(yīng)用程序處理器上找到這種操作系統(tǒng)軟件設(shè)計(jì)。然而,這些處理器非常復(fù)雜,需要一個(gè)操作系統(tǒng)來管理它們的所有資源?,F(xiàn)在,這并不意味著您不能使用裸機(jī)或使用 RTOS;它只是意味著復(fù)雜性和開發(fā)時(shí)間急劇增加。
完整的操作系統(tǒng)可以消除開發(fā)人員的內(nèi)存限制負(fù)擔(dān)。此外,您通??梢宰尫乔度胧杰浖藛T參與進(jìn)來。對(duì)于基于操作系統(tǒng)構(gòu)建的應(yīng)用程序,軟件開發(fā)涉及的專業(yè)化知識(shí)要少得多。
對(duì)于沒有嚴(yán)格實(shí)時(shí)要求、使用現(xiàn)代微處理器、受益于高級(jí)抽象以及需要擴(kuò)展或重用應(yīng)用程序部分的產(chǎn)品,建議使用完整的操作系統(tǒng)架構(gòu)和實(shí)現(xiàn)。
04.嵌入式軟件分類 – 容器/微服務(wù)
微服務(wù)和容器是云、移動(dòng)和桌面計(jì)算中常見的設(shè)計(jì)類型。然而,他們正在迅速找到進(jìn)入嵌入式系統(tǒng)的途徑。我將這兩者混為一談,因?yàn)樗鼈兪褂玫募軜?gòu)設(shè)計(jì)策略相似,盡管底層技術(shù)不同。
微服務(wù)
微服務(wù)將應(yīng)用程序構(gòu)建為一組松散耦合的服務(wù),可獨(dú)立部署且易于維護(hù)(如果做得好)。微服務(wù)將應(yīng)用程序構(gòu)建為為業(yè)務(wù)領(lǐng)域開發(fā)的小型自治服務(wù)的集合。微服務(wù)提供具有特定功能的松散耦合服務(wù)。
資源相對(duì)受限的嵌入式系統(tǒng)(例如微控制器)可以運(yùn)行微服務(wù)。但是,它們通常至少需要與運(yùn)行 RTOS 所需的內(nèi)存量相同的內(nèi)存量。微服務(wù)包括服務(wù)本身、入站和出站消息隊(duì)列以及日志和狀態(tài)信息。
需要編排器和運(yùn)行時(shí)環(huán)境會(huì)增加微服務(wù)設(shè)計(jì)的復(fù)雜性,必須謹(jǐn)慎使用您使用的資源并仔細(xì)監(jiān)控系統(tǒng)的實(shí)時(shí)響應(yīng)。然而,微服務(wù)可以提供非常可擴(kuò)展的系統(tǒng),易于現(xiàn)場(chǎng)維護(hù)和更新。
我建議在需要現(xiàn)場(chǎng)更新、可擴(kuò)展性和現(xiàn)代敏捷流程并受益于分布式模型的應(yīng)用程序中使用微服務(wù)。
容器
容器是一種可以承載微服務(wù)的實(shí)現(xiàn)范式。每個(gè)容器都是一個(gè)獨(dú)立的沙箱,可以運(yùn)行一個(gè)或多個(gè)微服務(wù)。容器通??瑟?dú)立部署且易于維護(hù)。一系列容器為更廣泛的應(yīng)用奠定了基礎(chǔ)。同樣,容器和微服務(wù)密切相關(guān);容器為微服務(wù)運(yùn)行提供了額外的隔離層。
至少需要一個(gè)現(xiàn)代微控制器來利用容器。每個(gè)技術(shù)供應(yīng)商都略有不同,但有些供應(yīng)商聲稱能夠使用與 RTOS 一樣少的內(nèi)存。然而,我調(diào)查過的大多數(shù)目標(biāo)物聯(lián)網(wǎng)應(yīng)用程序預(yù)計(jì)大約有 256 KB 的閃存。
容器是一種現(xiàn)代架構(gòu)實(shí)現(xiàn),可以為嵌入式應(yīng)用程序增加靈活性、可擴(kuò)展性和可移植性。多年來,它們已成功用于軟件的其他領(lǐng)域。迄今為止最大的限制是尺寸和性能。
我建議在需要現(xiàn)場(chǎng)更新、可擴(kuò)展性、額外安全性和現(xiàn)代敏捷流程的應(yīng)用程序中使用容器。
圖 1 – 容器架構(gòu)堆
05.嵌入式軟件分類 – 混合系統(tǒng)
混合系統(tǒng)同時(shí)利用多個(gè)分類。例如,您可能有一個(gè)使用嵌入式 Linux 的應(yīng)用程序處理器。但是,該處理器可能有一個(gè)內(nèi)置的微控制器,它使用裸機(jī)方法來管理實(shí)時(shí)響應(yīng)。
混合系統(tǒng)允許開發(fā)人員利用多種設(shè)計(jì)方法從多種系統(tǒng)類型中獲益。如果不仔細(xì)管理其設(shè)計(jì)的各個(gè)部分之間的交互,這種靈活性通常會(huì)增加系統(tǒng)的復(fù)雜性。
對(duì)于具有復(fù)雜處理和實(shí)時(shí)要求的產(chǎn)品,建議使用混合架構(gòu)和實(shí)現(xiàn),這些產(chǎn)品使用多核處理器,受益于高級(jí)抽象并需要擴(kuò)展或重用應(yīng)用程序部分。
06.結(jié)論
嵌入式軟件系統(tǒng)可以分為多種類型。如何設(shè)計(jì)和構(gòu)建嵌入式軟件將取決于您選擇的分類。每個(gè)分類都將規(guī)定您用來構(gòu)建和實(shí)施系統(tǒng)的設(shè)計(jì)模式和工具。當(dāng)設(shè)計(jì)或討論系統(tǒng)時(shí),請(qǐng)先指定系統(tǒng)類型,然后再繼續(xù)進(jìn)行設(shè)計(jì)。
審核編輯:湯梓紅
-
微控制器
+關(guān)注
關(guān)注
48文章
7844瀏覽量
153389 -
處理器
+關(guān)注
關(guān)注
68文章
19740瀏覽量
232919 -
嵌入式
+關(guān)注
關(guān)注
5125文章
19438瀏覽量
313199 -
軟件
+關(guān)注
關(guān)注
69文章
5093瀏覽量
88784 -
RTOS
+關(guān)注
關(guān)注
24文章
837瀏覽量
120587
原文標(biāo)題:結(jié)論
文章出處:【微信號(hào):談思實(shí)驗(yàn)室,微信公眾號(hào):談思實(shí)驗(yàn)室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
嵌入式系統(tǒng)的特點(diǎn)、分類、發(fā)展與應(yīng)用
嵌入式系統(tǒng)的特點(diǎn)、分類、發(fā)展和應(yīng)用
嵌入式系統(tǒng)特點(diǎn)與組成及其分類介紹
嵌入式系統(tǒng)設(shè)計(jì)全面介紹
嵌入式工作有哪些分類?
嵌入式Linux的分類
什么是嵌入式軟件開發(fā)
嵌入式系統(tǒng)的特點(diǎn)及分類
嵌入式系統(tǒng)的定義與分類及其應(yīng)用介紹
嵌入式軟件開發(fā)編程規(guī)范介紹
嵌入式軟件的開發(fā)流程_嵌入式軟件的調(diào)試
淺析嵌入式系統(tǒng)中的特點(diǎn)與分類
嵌入式軟件測(cè)試參考書籍

嵌入式軟件配置的分類

評(píng)論