為什么正確的軟件架構(gòu)對(duì)IoT設(shè)計(jì)越來(lái)越重要
發(fā)布時(shí)間:2017-03-01 責(zé)任編輯:susan
【導(dǎo)讀】我們都曾在職業(yè)生涯的某個(gè)時(shí)間點(diǎn)思考過(guò)這個(gè)問(wèn)題:現(xiàn)在,你想要?jiǎng)?chuàng)建一個(gè)合適的項(xiàng)目,看是要更進(jìn)一步探索這個(gè)想法或是將其產(chǎn)品化。但是,應(yīng)該從哪種軟件架構(gòu)入手呢?
Espruino?Arduino?micro Python?Segger embOS?MicriumuC/OS-II?以及在uC/OS-II和uC/OS-III之間又有什么區(qū)別呢?究竟該采用初始成本較低的開(kāi)源架構(gòu),還是選擇需要支付前期費(fèi)用的商業(yè)解決方案,來(lái)加速你的設(shè)計(jì)過(guò)程呢?
什么是軟件架構(gòu)?
在本文件中,將“軟件構(gòu)架”解釋為“編寫軟件的一種特定方式”。例如,Arduino提供編寫程序代碼的一種特定方式,允許軟件的片段可以跨越多個(gè)項(xiàng)目被重新使用。
軟件架構(gòu)是由幾個(gè)不同的部分所組成,并由以下組件所定義:程序語(yǔ)言、應(yīng)用程序編程接口(API),以及某些工具集的連接。例如,像是在Arduino和Espruino的案例中,軟件架構(gòu)可以被緊密地連接到工具,或是像在Micrium和FreeRTOS的案例中則是會(huì)被分離。
什么是操作系統(tǒng)?
因此,該如何選擇一個(gè)軟件架構(gòu)呢?首先,我們需要對(duì)一些名詞解釋的更明確一點(diǎn),我們已經(jīng)開(kāi)始提到操作系統(tǒng)(OS)這個(gè)名詞。你真正需要寫的是可以執(zhí)行你的特定要求的程序代碼,這些程序代碼將可以把你的產(chǎn)品與其他產(chǎn)品區(qū)分出來(lái)。但是,你仍然需要依靠軟件的其他部分,像是ADC的驅(qū)動(dòng)程序或SD卡的文件系統(tǒng)棧。這些軟件的部分通常被稱為軟件構(gòu)件。
在此用一個(gè)比較實(shí)質(zhì)的比喻方式,你可以想象你的軟件構(gòu)件就像是磚塊,然后把操作系統(tǒng)視為水泥。在操作系統(tǒng)中定義了磚塊的形狀,以及它們將如何與其他的磚塊互動(dòng),因此當(dāng)你添加更多構(gòu)件到軟件之中時(shí),他們將可以繼續(xù)完美地協(xié)同工作。這聽(tīng)起來(lái)相當(dāng)不錯(cuò),但你真的需要一個(gè)操作系統(tǒng)嗎?增加操作系統(tǒng)也帶來(lái)了額外的負(fù)荷,它將會(huì)消耗數(shù)千字節(jié)的閃存,為事件的響應(yīng)增加了延遲的時(shí)間,并且還需要花費(fèi)些許的時(shí)間學(xué)習(xí)如何在操作系統(tǒng)環(huán)境中編寫程序。
決定采用哪個(gè)軟件架構(gòu),將會(huì)決定你的想法是否可以按時(shí)間、按預(yù)算地推動(dòng),或是將你的投資放在風(fēng)險(xiǎn)之中。
一般的經(jīng)驗(yàn)法則是,如果你的目標(biāo)閃存容量是128 KB或更高,并且或是需要通訊功能,便需要一些棧(USB、以太網(wǎng)絡(luò)、SDIO、CAN、Wi-Fi、BLE),長(zhǎng)期來(lái)看,你最好還是使用操作系統(tǒng)。
在操作系統(tǒng)中最重要的其中一件事情便是調(diào)度程序(scheduler)。調(diào)度程序是用在為可能會(huì)爭(zhēng)奪相同資源的不同任務(wù)、分配資源和處理時(shí)間的組件。在一般情況下,調(diào)度程序有兩種作業(yè)的方式,而這正是“實(shí)時(shí)”在實(shí)時(shí)操作系統(tǒng)(RTOS)的意義所在。實(shí)時(shí)意味著在一個(gè)特定的時(shí)間內(nèi),會(huì)有一個(gè)特定的任務(wù)將會(huì)被執(zhí)行。假設(shè)你得到一個(gè)你需要處理的射頻封包,無(wú)論你的設(shè)備目前正在做什么事,實(shí)時(shí)操作系統(tǒng)的核心會(huì)先離開(kāi)它目前所做的任務(wù),先完成這一個(gè)高優(yōu)先等級(jí)的任務(wù)。這種類型的行為在處理器的利用上并不是最有效率的方式,但例如在馬達(dá)控制應(yīng)用中,它在通訊棧與應(yīng)用中最需要重視的便是反應(yīng)時(shí)間的議題。
商用與開(kāi)源解決方案的比較
舉例來(lái)說(shuō),如果你已經(jīng)想通了是否需要采用實(shí)時(shí)操作系統(tǒng),并開(kāi)始組建軟件需求。你可能知道,你需要一個(gè)USB棧和以太網(wǎng)絡(luò)棧,搭配外部MAC/PHY驅(qū)動(dòng)程序來(lái)一起將設(shè)備連接到互聯(lián)網(wǎng)。但是,你該從哪里開(kāi)始呢?你真的只需要為你首選的微控制器下載最新的FreeRTOS模板,并繼續(xù)下載開(kāi)源軟件并放到裝置中就可以了嗎?或者你只是需要去找有你所需軟件的商業(yè)供貨商,并獲得完整的軟件組合?
為了做出更明智的決定,我們經(jīng)常談?wù)撘o選定的解決方案一個(gè)總體擁有成本(TCO)的概念。所謂的總體擁有成本包含的不僅是你為軟件付出的貨幣價(jià)值,還包括花費(fèi)在尋找解決方案、組裝不同的構(gòu)件,并將不同的構(gòu)件整合到你的項(xiàng)目,以及開(kāi)發(fā)、測(cè)試和生產(chǎn)的工作時(shí)間。
在一般情況下,我們看到的是商業(yè)解決方案的總體擁有成本(TCO),將比自己組建開(kāi)放原始碼組件的解決方案要來(lái)的更低一些。但既然是商業(yè)解決方案便涉及到初始成本,這些廠商通常要求在使用解決方案的前期,取決于你所需要的組件,便必須先支付1萬(wàn)到10萬(wàn)美元之間的費(fèi)用。在另一方面,下載FreeRTOS并開(kāi)始組裝自己的解決方案,在某些擁有密集資源的應(yīng)用中,其所花費(fèi)的金錢,相對(duì)會(huì)更便宜一些。
決定你的項(xiàng)目的最佳解決方案,將高度依賴于它是否是最容易讓你賺到現(xiàn)金,或是能夠?yàn)榭傮w擁有成本的工時(shí)來(lái)“買單”。
候選方案
所以,當(dāng)你已經(jīng)看到這里,你的大腦中可能已經(jīng)開(kāi)始吶喊:“只要給我一個(gè)可以讓我開(kāi)始使用的架構(gòu)就好了!”
可惜沒(méi)有那么快,肯定有一些方案的選項(xiàng)是比其他選項(xiàng)更好,微控制器的應(yīng)用非常多樣性,肯定沒(méi)有那種一個(gè)尺寸便適合所有需求的解決方案。我們先來(lái)了解許多最流行的操作系統(tǒng)和軟件架構(gòu),并分別仔細(xì)地討論(本文所提到的操作系統(tǒng)都具有實(shí)時(shí)能力):
1)商用解決方案
• Micrium uC/OS-II與uC/OS-III
這是在微控制器業(yè)界最流行的兩個(gè)實(shí)時(shí)操作系統(tǒng),特別是因?yàn)槠鋭?chuàng)新的商業(yè)模式,因?yàn)镸icrium公司允許你下載完整的軟件套件,并開(kāi)始發(fā)展,等你真正開(kāi)始產(chǎn)生營(yíng)收后,才需要開(kāi)始支付解決方案的費(fèi)用。他們?cè)诎踩辽系南到y(tǒng)中擁有重要的地位,并且他們的大部分軟件構(gòu)件都已經(jīng)通過(guò)認(rèn)證。
• Segger embOS
嵌入式軟件市場(chǎng)的新進(jìn)入者,但這并不意味著他們是新手。該軟件產(chǎn)品已經(jīng)開(kāi)發(fā)了超過(guò)20年的時(shí)間,并已經(jīng)使用在他們自己的硬件產(chǎn)品之中,因此對(duì)裝置的支持程度非常好,并配有一個(gè)優(yōu)秀的驅(qū)動(dòng)程序庫(kù)。
• Express Logic ThreadX
由行業(yè)的資深人士所創(chuàng)辦,該公司專注在所有關(guān)于性能的事物上,并擠壓出元器件中每一個(gè)時(shí)鐘周期的效能。它通常被看作是操作系統(tǒng)中的勞斯萊斯,并已經(jīng)有很多認(rèn)證被使用在安全至上的系統(tǒng)之中。
2)開(kāi)源解決方案
• FreeRTOS
FreeRTOS跟MicriumuC/OS一樣,都是在同行業(yè)中最常被采用的實(shí)時(shí)操作系統(tǒng)之一。它有一個(gè)龐大的社群,有很多人都在為軟件做出貢獻(xiàn),像是TCP/IP棧,但做為開(kāi)源軟件,便意味著沒(méi)有公司會(huì)負(fù)責(zé)整合,因此需要更多的工作來(lái)創(chuàng)建一個(gè)整合的解決方案。
也有一些公司在FreeRTOS的生態(tài)系統(tǒng)中,專門從事將差異化的軟件構(gòu)件提供給那些需要整合協(xié)助的客戶,例如,Wittenstein高完整性系統(tǒng)公司提供稱為SAFERTOS安全認(rèn)證的FreeRTOS替換核心,以及HCC嵌入式公司提供可以與任何實(shí)時(shí)操作系統(tǒng)工作的USB、以太網(wǎng)絡(luò)和文件系統(tǒng)。
• mbed OS
mbed OS解決一些你通常會(huì)在開(kāi)源軟件所遇到的痛點(diǎn),因?yàn)锳RM這一家公司會(huì)負(fù)責(zé)整合的工作。然而,它仍然是處于萌芽階段,所以如果你想要有些貢獻(xiàn)就可以去這里。
• RIOT OS
RIOT OS被冠以“物聯(lián)網(wǎng)中最友好的操作系統(tǒng)”,它是以通訊概念為基礎(chǔ)所建立起來(lái)的操作系統(tǒng)。這使得它即使在面對(duì)困難的通訊問(wèn)題時(shí),仍然精簡(jiǎn)且高效率。然而它仍然還在積極發(fā)展的階段當(dāng)中,所以你得計(jì)劃多花幾個(gè)小時(shí)來(lái)進(jìn)行除錯(cuò)。
3)架構(gòu)
有一些操作系統(tǒng)的功能就像是將磚塊黏合在一起的水泥一樣,會(huì)與發(fā)展框架緊密地結(jié)合在一起,因此一般不能使用軟件本身做為項(xiàng)目的一部分,你必須圍繞著它來(lái)進(jìn)行整個(gè)開(kāi)發(fā)流程。這些框架往往是使用比C++更高階的語(yǔ)言所編寫,通常可以在實(shí)時(shí)操作系統(tǒng)上運(yùn)行。
• mbed
mbed也出現(xiàn)在這里,這時(shí)則做為快速成型的項(xiàng)目。它是用C++編寫,并對(duì)大多數(shù)微控制器和電路板有絕佳的支持,擁有一個(gè)龐大的元件程序庫(kù),和一個(gè)采用網(wǎng)頁(yè)架構(gòu)的漂亮集成開(kāi)發(fā)環(huán)境(IDE)。目前,在它準(zhǔn)備全面部署之前,它仍然需要一點(diǎn)成熟的時(shí)間,但它很適合硬件原型的開(kāi)發(fā)。
• Espruino
Espruino是在微控制器上運(yùn)行的實(shí)時(shí)JavaScript解釋器。它允許你能夠動(dòng)態(tài)地更改程序代碼,甚至不需要讀寫微控制器便可以撰寫程序代碼。在它開(kāi)始量產(chǎn)之前,仍然需要一些時(shí)間來(lái)發(fā)展,但它很適合用于硬件原型,并呈現(xiàn)出成為一個(gè)不可忽視軟件架構(gòu)的巨大潛力。
• microPython
microPython所能做的事與Espruino大致相同,差別僅在于其使用Python來(lái)代替JavaScript。它發(fā)展的概念,便是讓你從產(chǎn)品開(kāi)發(fā)的一開(kāi)始到量產(chǎn),都能夠支持預(yù)先編譯的程序代碼,并使用C語(yǔ)言來(lái)編寫時(shí)序至上的程序代碼。目前仍在開(kāi)發(fā)當(dāng)中。
• microEJ
microEJ是一個(gè)采用Java架構(gòu)的框架,讓你輕松地為你的設(shè)備打造好看的圖形化應(yīng)用程序。它已經(jīng)在許多智能手表和一些物聯(lián)網(wǎng)(IoT)設(shè)備中使用。
結(jié)語(yǔ)
如果你想要著手進(jìn)行設(shè)備的開(kāi)發(fā),而無(wú)需安裝單一的程序,像是mbed和microPython這類的框架,便是入門的好方法。但是,如果你要建立更大的部署,采用一個(gè)純粹的實(shí)時(shí)操作系統(tǒng)將會(huì)是更好的選擇。如果使用工作時(shí)間而不是金錢來(lái)當(dāng)作軟件的投資,對(duì)你的公司來(lái)說(shuō)會(huì)更為輕松的話,像是FreeRTOS或RIOT這類非商業(yè)解決方案便有其優(yōu)勢(shì)。如果你的公司能負(fù)擔(dān)得起前期投資,像是Segger、Express Logic和Micrium的商業(yè)解決方案,將大大降低軟件開(kāi)發(fā)風(fēng)險(xiǎn)和縮短產(chǎn)品上市的時(shí)間。在商業(yè)解決方案中,特別像是Micrium的穩(wěn)定性和認(rèn)證的程序代碼基礎(chǔ),廣泛普及的部署,良好的元器件支持,開(kāi)放的原始碼,以及適合大多數(shù)經(jīng)濟(jì)效益的商業(yè)模式,更使其在商業(yè)解決方案中顯得特別突出。
特別推薦
- 授權(quán)代理商貿(mào)澤電子供應(yīng)Same Sky多樣化電子元器件
- 使用合適的窗口電壓監(jiān)控器優(yōu)化系統(tǒng)設(shè)計(jì)
- ADI電機(jī)運(yùn)動(dòng)控制解決方案 驅(qū)動(dòng)智能運(yùn)動(dòng)新時(shí)代
- 倍福推出采用 TwinSAFE SC 技術(shù)的 EtherCAT 端子模塊 EL3453-0090
- TDK推出新的X系列環(huán)保型SMD壓敏電阻
- Vishay 推出新款采用0102、0204和 0207封裝的精密薄膜MELF電阻
- Microchip推出新款交鑰匙電容式觸摸控制器產(chǎn)品 MTCH2120
技術(shù)文章更多>>
- 邁向更綠色的未來(lái):GaN技術(shù)的變革性影響
- 集成電阻分壓器如何提高電動(dòng)汽車的電池系統(tǒng)性能
- 帶硬件同步功能的以太網(wǎng) PHY 擴(kuò)大了汽車?yán)走_(dá)的覆蓋范圍
- 精準(zhǔn)監(jiān)測(cè)電離分?jǐn)?shù)與沉積通量,助力PVD/IPVD工藝與涂層質(zhì)量雙重提升
- ADC 總諧波失真
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動(dòng)避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
電工電路
電機(jī)控制
電解電容
電纜連接器
電力電子
電力繼電器
電力線通信
電流保險(xiǎn)絲
電流表
電流傳感器
電流互感器
電路保護(hù)
電路圖
電路圖符號(hào)
電路圖知識(shí)
電腦OA
電腦電源
電腦自動(dòng)斷電
電能表接線
電容觸控屏
電容器
電容器單位
電容器公式
電聲器件
電位器
電位器接法
電壓表
電壓傳感器
電壓互感器
電源變壓器