IoT工程師福音:如何正確選擇軟件架構(gòu)?
發(fā)布時(shí)間:2016-12-28 責(zé)任編輯:sherry
【導(dǎo)讀】我們都曾在職業(yè)生涯的某個(gè)時(shí)間點(diǎn)思考過這個(gè)問題:現(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ū)別呢?
究竟該采用初始成本較低的開源架構(gòu),還是選擇需要支付前期費(fèi)用的商業(yè)解決方案,來加速你的設(shè)計(jì)過程呢?
什么是軟件架構(gòu)?
在本文件中,將“軟件構(gòu)架”解釋為“編寫軟件的一種特定方式”。例如,Arduino提供編寫程序代碼的一種特定方式,允許軟件的片段可以跨越多個(gè)項(xiàng)目被重新使用。
軟件架構(gòu)是由幾個(gè)不同的部分所組成,并由以下組件所定義:程序語言、應(yīng)用程序編程接口(API),以及某些工具集的連接。例如,像是在Arduino和Espruino的案例中,軟件架構(gòu)可以被緊密地連接到工具,或是像在Micrium和FreeRTOS的案例中則是會被分離。
什么是操作系統(tǒng)?
因此,該如何選擇一個(gè)軟件架構(gòu)呢?首先,我們需要對一些名詞解釋的更明確一點(diǎn),我們已經(jīng)開始提到操作系統(tǒng)(OS)這個(gè)名詞。你真正需要寫的是可以執(zhí)行你的特定要求的程序代碼,這些程序代碼將可以把你的產(chǎn)品與其他產(chǎn)品區(qū)分出來。但是,你仍然需要依靠軟件的其他部分,像是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é)同工作。這聽起來相當(dāng)不錯(cuò),但你真的需要一個(gè)操作系統(tǒng)嗎?增加操作系統(tǒng)也帶來了額外的負(fù)荷,它將會消耗數(shù)千字節(jié)的閃存,為事件的響應(yīng)增加了延遲的時(shí)間,并且還需要花費(fèi)些許的時(shí)間學(xué)習(xí)如何在操作系統(tǒng)環(huán)境中編寫程序。
決定采用哪個(gè)軟件架構(gòu),將會決定你的想法是否可以按時(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),長期來看,你最好還是使用操作系統(tǒng)。
在操作系統(tǒng)中最重要的其中一件事情便是調(diào)度程序(scheduler)。調(diào)度程序是用在為可能會爭奪相同資源的不同任務(wù)、分配資源和處理時(shí)間的組件。在一般情況下,調(diào)度程序有兩種作業(yè)的方式,而這正是“實(shí)時(shí)”在實(shí)時(shí)操作系統(tǒng)(RTOS)的意義所在。實(shí)時(shí)意味著在一個(gè)特定的時(shí)間內(nèi),會有一個(gè)特定的任務(wù)將會被執(zhí)行。假設(shè)你得到一個(gè)你需要處理的射頻封包,無論你的設(shè)備目前正在做什么事,實(shí)時(shí)操作系統(tǒng)的核心會先離開它目前所做的任務(wù),先完成這一個(gè)高優(yōu)先等級的任務(wù)。這種類型的行為在處理器的利用上并不是最有效率的方式,但例如在馬達(dá)控制應(yīng)用中,它在通訊棧與應(yīng)用中最需要重視的便是反應(yīng)時(shí)間的議題。
商用與開源解決方案的比較
舉例來說,如果你已經(jīng)想通了是否需要采用實(shí)時(shí)操作系統(tǒng),并開始組建軟件需求。你可能知道,你需要一個(gè)USB棧和以太網(wǎng)絡(luò)棧,搭配外部MAC/PHY驅(qū)動(dòng)程序來一起將設(shè)備連接到互聯(lián)網(wǎng)。但是,你該從哪里開始呢?你真的只需要為你首選的微控制器下載最新的FreeRTOS模板,并繼續(xù)下載開源軟件并放到裝置中就可以了嗎?或者你只是需要去找有你所需軟件的商業(yè)供貨商,并獲得完整的軟件組合?
為了做出更明智的決定,我們經(jīng)常談?wù)撘o選定的解決方案一個(gè)總體擁有成本(TCO)的概念。所謂的總體擁有成本包含的不僅是你為軟件付出的貨幣價(jià)值,還包括花費(fèi)在尋找解決方案、組裝不同的構(gòu)件,并將不同的構(gòu)件整合到你的項(xiàng)目,以及開發(fā)、測試和生產(chǎn)的工作時(shí)間。
在一般情況下,我們看到的是商業(yè)解決方案的總體擁有成本(TCO),將比自己組建開放原始碼組件的解決方案要來的更低一些。但既然是商業(yè)解決方案便涉及到初始成本,這些廠商通常要求在使用解決方案的前期,取決于你所需要的組件,便必須先支付1萬到10萬美元之間的費(fèi)用。在另一方面,下載FreeRTOS并開始組裝自己的解決方案,在某些擁有密集資源的應(yīng)用中,其所花費(fèi)的金錢,相對會更便宜一些。
決定你的項(xiàng)目的最佳解決方案,將高度依賴于它是否是最容易讓你賺到現(xiàn)金,或是能夠?yàn)榭傮w擁有成本的工時(shí)來“買單”。
候選方案
所以,當(dāng)你已經(jīng)看到這里,你的大腦中可能已經(jīng)開始吶喊:“只要給我一個(gè)可以讓我開始使用的架構(gòu)就好了!”
可惜沒有那么快,肯定有一些方案的選項(xiàng)是比其他選項(xiàng)更好,微控制器的應(yīng)用非常多樣性,肯定沒有那種一個(gè)尺寸便適合所有需求的解決方案。我們先來了解許多最流行的操作系統(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公司允許你下載完整的軟件套件,并開始發(fā)展,等你真正開始產(chǎn)生營收后,才需要開始支付解決方案的費(fèi)用。他們在安全至上的系統(tǒng)中擁有重要的地位,并且他們的大部分軟件構(gòu)件都已經(jīng)通過認(rèn)證。
• Segger embOS
嵌入式軟件市場的新進(jìn)入者,但這并不意味著他們是新手。該軟件產(chǎn)品已經(jīng)開發(fā)了超過20年的時(shí)間,并已經(jīng)使用在他們自己的硬件產(chǎn)品之中,因此對裝置的支持程度非常好,并配有一個(gè)優(yōu)秀的驅(qū)動(dòng)程序庫。
• Express Logic ThreadX
由行業(yè)的資深人士所創(chuàng)辦,該公司專注在所有關(guān)于性能的事物上,并擠壓出元器件中每一個(gè)時(shí)鐘周期的效能。它通常被看作是操作系統(tǒng)中的勞斯萊斯,并已經(jīng)有很多認(rèn)證被使用在安全至上的系統(tǒng)之中。
2)開源解決方案
• FreeRTOS
FreeRTOS跟MicriumuC/OS一樣,都是在同行業(yè)中最常被采用的實(shí)時(shí)操作系統(tǒng)之一。它有一個(gè)龐大的社群,有很多人都在為軟件做出貢獻(xiàn),像是TCP/IP棧,但做為開源軟件,便意味著沒有公司會負(fù)責(zé)整合,因此需要更多的工作來創(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解決一些你通常會在開源軟件所遇到的痛點(diǎn),因?yàn)锳RM這一家公司會負(fù)責(zé)整合的工作。然而,它仍然是處于萌芽階段,所以如果你想要有些貢獻(xiàn)就可以去這里。
• RIOT OS
RIOT OS被冠以“物聯(lián)網(wǎng)中最友好的操作系統(tǒng)”,它是以通訊概念為基礎(chǔ)所建立起來的操作系統(tǒng)。這使得它即使在面對困難的通訊問題時(shí),仍然精簡且高效率。然而它仍然還在積極發(fā)展的階段當(dāng)中,所以你得計(jì)劃多花幾個(gè)小時(shí)來進(jìn)行除錯(cuò)。
3)架構(gòu)
有一些操作系統(tǒng)的功能就像是將磚塊黏合在一起的水泥一樣,會與發(fā)展框架緊密地結(jié)合在一起,因此一般不能使用軟件本身做為項(xiàng)目的一部分,你必須圍繞著它來進(jìn)行整個(gè)開發(fā)流程。這些框架往往是使用比C++更高階的語言所編寫,通常可以在實(shí)時(shí)操作系統(tǒng)上運(yùn)行。
• mbed
mbed也出現(xiàn)在這里,這時(shí)則做為快速成型的項(xiàng)目。它是用C++編寫,并對大多數(shù)微控制器和電路板有絕佳的支持,擁有一個(gè)龐大的元件程序庫,和一個(gè)采用網(wǎng)頁架構(gòu)的漂亮集成開發(fā)環(huán)境(IDE)。目前,在它準(zhǔn)備全面部署之前,它仍然需要一點(diǎn)成熟的時(shí)間,但它很適合硬件原型的開發(fā)。
• Espruino
Espruino是在微控制器上運(yùn)行的實(shí)時(shí)JavaScript解釋器。它允許你能夠動(dòng)態(tài)地更改程序代碼,甚至不需要讀寫微控制器便可以撰寫程序代碼。在它開始量產(chǎn)之前,仍然需要一些時(shí)間來發(fā)展,但它很適合用于硬件原型,并呈現(xiàn)出成為一個(gè)不可忽視軟件架構(gòu)的巨大潛力。
• microPython
microPython所能做的事與Espruino大致相同,差別僅在于其使用Python來代替JavaScript。它發(fā)展的概念,便是讓你從產(chǎn)品開發(fā)的一開始到量產(chǎn),都能夠支持預(yù)先編譯的程序代碼,并使用C語言來編寫時(shí)序至上的程序代碼。目前仍在開發(fā)當(dāng)中。
• microEJ
microEJ是一個(gè)采用Java架構(gòu)的框架,讓你輕松地為你的設(shè)備打造好看的圖形化應(yīng)用程序。它已經(jīng)在許多智能手表和一些物聯(lián)網(wǎng)(IoT)設(shè)備中使用。
結(jié)語
如果你想要著手進(jìn)行設(shè)備的開發(fā),而無需安裝單一的程序,像是mbed和microPython這類的框架,便是入門的好方法。但是,如果你要建立更大的部署,采用一個(gè)純粹的實(shí)時(shí)操作系統(tǒng)將會是更好的選擇。如果使用工作時(shí)間而不是金錢來當(dāng)作軟件的投資,對你的公司來說會更為輕松的話,像是FreeRTOS或RIOT這類非商業(yè)解決方案便有其優(yōu)勢。如果你的公司能負(fù)擔(dān)得起前期投資,像是Segger、Express Logic和Micrium的商業(yè)解決方案,將大大降低軟件開發(fā)風(fēng)險(xiǎn)和縮短產(chǎn)品上市的時(shí)間。在商業(yè)解決方案中,特別像是Micrium的穩(wěn)定性和認(rèn)證的程序代碼基礎(chǔ),廣泛普及的部署,良好的元器件支持,開放的原始碼,以及適合大多數(shù)經(jīng)濟(jì)效益的商業(yè)模式,更使其在商業(yè)解決方案中顯得特別突出。
特別推薦
- 兆易創(chuàng)新GD32F30x STL軟件測試庫獲得德國萊茵TüV IEC 61508功能安全認(rèn)證
- 芯科科技第三代無線開發(fā)平臺引領(lǐng)物聯(lián)網(wǎng)發(fā)展
- MSO 4B 示波器為工程師帶來更多臺式功率分析工具
- 艾為電子推出新一代高線性度GNSS低噪聲放大器——AW15745DNR
- 瑞薩發(fā)布四通道主站IC和傳感器信號調(diào)節(jié)器, 以推動(dòng)不斷增長的IO-Link市場
- e絡(luò)盟現(xiàn)貨供應(yīng) Abracon 新推出的 AOTA 系列微型鑄型電感器
- 加賀富儀艾電子推出支持Wi-Fi 6和藍(lán)牙的無線局域網(wǎng)/藍(lán)牙組合模塊
技術(shù)文章更多>>
- 一文掌握UV LED在空凈消殺領(lǐng)域的主要應(yīng)用
- 聚焦汽車智能化與電動(dòng)化︱AUTO TECH 2025 華南展11月,已全面啟動(dòng),邀您共精彩!
- 【“源”察秋毫系列】 Keithley在碳納米管森林涂層纖維復(fù)合材料的應(yīng)用
- 數(shù)字驅(qū)動(dòng)工業(yè),智能賦能制造 AMTS & AHTE SOUTH CHINA 2024同期會議全公開!
- 團(tuán)體觀展招募!104CEF開啟組團(tuán)觀眾通道,解鎖更多禮遇
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動(dòng)避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
車載以太網(wǎng)
車載娛樂
充電
充電電池
充電器
充電樁
觸控屏
觸控顯示
觸摸開關(guān)
傳感技術(shù)
傳感器
傳感器模塊
船型開關(guān)
串聯(lián)電阻公式
創(chuàng)智成
磁傳感器
磁環(huán)電感
磁敏三極管
磁性存儲器
磁性元件
磁珠電感
存儲器
大功率管
單向可控硅
刀開關(guān)
等離子顯示屏
低頻電感
低通濾波器
低音炮電路
滌綸電容