IoT工程師福音:如何正確選擇軟件架構?
發布時間:2016-12-28 責任編輯:sherry
【導讀】我們都曾在職業生涯的某個時間點思考過這個問題:現在,你想要創建一個合適的項目,看是要更進一步探索這個想法或是將其產品化。但是,應該從哪種軟件架構入手呢?Espruino?Arduino?micro Python?Segger embOS?MicriumuC/OS-II?以及在uC/OS-II和uC/OS-III之間又有什麼區別呢?
究竟該采用初始成本較低的開源架構,還是選擇需要支付前期費用的商業解決方案,來加速你的設計過程呢?
什麼是軟件架構?
在本文件中,將“軟件構架”解釋為“編寫軟件的一種特定方式”。例如,Arduino提供編寫程序代碼的一種特定方式,允許軟件的片段可以跨越多個項目被重新使用。
軟件架構是由幾個不同的部分所組成,並由以下組件所定義:程序語言、應用程序編程接口(API),以及某些工具集的連接。例如,像是在Arduino和Espruino的案例中,軟件架構可以被緊密地連接到工具,或是像在Micrium和FreeRTOS的案例中則是會被分離。
什麼是操作係統?
因此,該如何選擇一個軟件架構呢?首先,我們需要對一些名詞解釋的更明確一點,我們已經開始提到操作係統(OS)這(zhe)個(ge)名(ming)詞(ci)。你(ni)真(zhen)正(zheng)需(xu)要(yao)寫(xie)的(de)是(shi)可(ke)以(yi)執(zhi)行(xing)你(ni)的(de)特(te)定(ding)要(yao)求(qiu)的(de)程(cheng)序(xu)代(dai)碼(ma),這(zhe)些(xie)程(cheng)序(xu)代(dai)碼(ma)將(jiang)可(ke)以(yi)把(ba)你(ni)的(de)產(chan)品(pin)與(yu)其(qi)他(ta)產(chan)品(pin)區(qu)分(fen)出(chu)來(lai)。但(dan)是(shi),你(ni)仍(reng)然(ran)需(xu)要(yao)依(yi)靠(kao)軟(ruan)件(jian)的(de)其(qi)他(ta)部(bu)分(fen),像(xiang)是(shi)ADC的驅動程序或SD卡的文件係統棧。這些軟件的部分通常被稱為軟件構件。
在(zai)此(ci)用(yong)一(yi)個(ge)比(bi)較(jiao)實(shi)質(zhi)的(de)比(bi)喻(yu)方(fang)式(shi),你(ni)可(ke)以(yi)想(xiang)象(xiang)你(ni)的(de)軟(ruan)件(jian)構(gou)件(jian)就(jiu)像(xiang)是(shi)磚(zhuan)塊(kuai),然(ran)後(hou)把(ba)操(cao)作(zuo)係(xi)統(tong)視(shi)為(wei)水(shui)泥(ni)。在(zai)操(cao)作(zuo)係(xi)統(tong)中(zhong)定(ding)義(yi)了(le)磚(zhuan)塊(kuai)的(de)形(xing)狀(zhuang),以(yi)及(ji)它(ta)們(men)將(jiang)如(ru)何(he)與(yu)其(qi)他(ta)的(de)磚(zhuan)塊(kuai)互(hu)動(dong),因(yin)此(ci)當(dang)你(ni)添(tian)加(jia)更(geng)多(duo)構(gou)件(jian)到(dao)軟(ruan)件(jian)之(zhi)中(zhong)時(shi),他(ta)們(men)將(jiang)可(ke)以(yi)繼(ji)續(xu)完(wan)美(mei)地(di)協(xie)同(tong)工(gong)作(zuo)。這(zhe)聽(ting)起(qi)來(lai)相(xiang)當(dang)不(bu)錯(cuo),但(dan)你(ni)真(zhen)的(de)需(xu)要(yao)一(yi)個(ge)操(cao)作(zuo)係(xi)統(tong)嗎(ma)?增(zeng)加(jia)操(cao)作(zuo)係(xi)統(tong)也(ye)帶(dai)來(lai)了(le)額(e)外(wai)的(de)負(fu)荷(he),它(ta)將(jiang)會(hui)消(xiao)耗(hao)數(shu)千(qian)字(zi)節(jie)的(de)閃(shan)存(cun),為(wei)事(shi)件(jian)的(de)響(xiang)應(ying)增(zeng)加(jia)了(le)延(yan)遲(chi)的(de)時(shi)間(jian),並(bing)且(qie)還(hai)需(xu)要(yao)花(hua)費(fei)些(xie)許(xu)的(de)時(shi)間(jian)學(xue)習(xi)如(ru)何(he)在(zai)操(cao)作(zuo)係(xi)統(tong)環(huan)境(jing)中(zhong)編(bian)寫(xie)程(cheng)序(xu)。
決定采用哪個軟件架構,將會決定你的想法是否可以按時間、按預算地推動,或是將你的投資放在風險之中。
一般的經驗法則是,如果你的目標閃存容量是128 KB或更高,並且或是需要通訊功能,便需要一些棧(USB、以太網絡、SDIO、CAN、Wi-Fi、BLE),長期來看,你最好還是使用操作係統。
在操作係統中最重要的其中一件事情便是調度程序(scheduler)。調度程序是用在為可能會爭奪相同資源的不同任務、分配資源和處理時間的組件。在一般情況下,調度程序有兩種作業的方式,而這正是“實時”在實時操作係統(RTOS)的(de)意(yi)義(yi)所(suo)在(zai)。實(shi)時(shi)意(yi)味(wei)著(zhe)在(zai)一(yi)個(ge)特(te)定(ding)的(de)時(shi)間(jian)內(nei),會(hui)有(you)一(yi)個(ge)特(te)定(ding)的(de)任(ren)務(wu)將(jiang)會(hui)被(bei)執(zhi)行(xing)。假(jia)設(she)你(ni)得(de)到(dao)一(yi)個(ge)你(ni)需(xu)要(yao)處(chu)理(li)的(de)射(she)頻(pin)封(feng)包(bao),無(wu)論(lun)你(ni)的(de)設(she)備(bei)目(mu)前(qian)正(zheng)在(zai)做(zuo)什(shen)麼(me)事(shi),實(shi)時(shi)操(cao)作(zuo)係(xi)統(tong)的(de)核(he)心(xin)會(hui)先(xian)離(li)開(kai)它(ta)目(mu)前(qian)所(suo)做(zuo)的(de)任(ren)務(wu),先(xian)完(wan)成(cheng)這(zhe)一(yi)個(ge)高(gao)優(you)先(xian)等(deng)級(ji)的(de)任(ren)務(wu)。這(zhe)種(zhong)類(lei)型(xing)的(de)行(xing)為(wei)在(zai)處(chu)理(li)器(qi)的(de)利(li)用(yong)上(shang)並(bing)不(bu)是(shi)最(zui)有(you)效(xiao)率(lv)的(de)方(fang)式(shi),但(dan)例(li)如(ru)在(zai)馬(ma)達(da)控(kong)製(zhi)應(ying)用(yong)中(zhong),它(ta)在(zai)通(tong)訊(xun)棧(zhan)與(yu)應(ying)用(yong)中(zhong)最(zui)需(xu)要(yao)重(zhong)視(shi)的(de)便(bian)是(shi)反(fan)應(ying)時(shi)間(jian)的(de)議(yi)題(ti)。
商用與開源解決方案的比較
舉例來說,如果你已經想通了是否需要采用實時操作係統,並開始組建軟件需求。你可能知道,你需要一個USB棧和以太網絡棧,搭配外部MAC/PHY驅動程序來一起將設備連接到互聯網。但是,你該從哪裏開始呢?你真的隻需要為你首選的微控製器下載最新的FreeRTOS模板,並繼續下載開源軟件並放到裝置中就可以了嗎?或者你隻是需要去找有你所需軟件的商業供貨商,並獲得完整的軟件組合?
為了做出更明智的決定,我們經常談論要給選定的解決方案一個總體擁有成本(TCO)的概念。所謂的總體擁有成本包含的不僅是你為軟件付出的貨幣價值,還包括花費在尋找解決方案、組裝不同的構件,並將不同的構件整合到你的項目,以及開發、測試和生產的工作時間。
在一般情況下,我們看到的是商業解決方案的總體擁有成本(TCO),jiangbizijizujiankaifangyuanshimazujiandejiejuefanganyaolaidegengdiyixie。danjiranshishangyejiejuefanganbianshejidaochushichengben,zhexiechangshangtongchangyaoqiuzaishiyongjiejuefangandeqianqi,qujueyunisuoxuyaodezujian,bianbixuxianzhifu1萬到10萬美元之間的費用。在另一方麵,下載FreeRTOS並開始組裝自己的解決方案,在某些擁有密集資源的應用中,其所花費的金錢,相對會更便宜一些。
決定你的項目的最佳解決方案,將高度依賴於它是否是最容易讓你賺到現金,或是能夠為總體擁有成本的工時來“買單”。
候選方案
所以,當你已經看到這裏,你的大腦中可能已經開始吶喊:“隻要給我一個可以讓我開始使用的架構就好了!”
可(ke)惜(xi)沒(mei)有(you)那(na)麼(me)快(kuai),肯(ken)定(ding)有(you)一(yi)些(xie)方(fang)案(an)的(de)選(xuan)項(xiang)是(shi)比(bi)其(qi)他(ta)選(xuan)項(xiang)更(geng)好(hao),微(wei)控(kong)製(zhi)器(qi)的(de)應(ying)用(yong)非(fei)常(chang)多(duo)樣(yang)性(xing),肯(ken)定(ding)沒(mei)有(you)那(na)種(zhong)一(yi)個(ge)尺(chi)寸(cun)便(bian)適(shi)合(he)所(suo)有(you)需(xu)求(qiu)的(de)解(jie)決(jue)方(fang)案(an)。我(wo)們(men)先(xian)來(lai)了(le)解(jie)許(xu)多(duo)最(zui)流(liu)行(xing)的(de)操(cao)作(zuo)係(xi)統(tong)和(he)軟(ruan)件(jian)架(jia)構(gou),並(bing)分(fen)別(bie)仔(zai)細(xi)地(di)討(tao)論(lun)(本文所提到的操作係統都具有實時能力):
1)商用解決方案
• Micrium uC/OS-II與uC/OS-III
這是在微控製器業界最流行的兩個實時操作係統,特別是因為其創新的商業模式,因為Micrium公gong司si允yun許xu你ni下xia載zai完wan整zheng的de軟ruan件jian套tao件jian,並bing開kai始shi發fa展zhan,等deng你ni真zhen正zheng開kai始shi產chan生sheng營ying收shou後hou,才cai需xu要yao開kai始shi支zhi付fu解jie決jue方fang案an的de費fei用yong。他ta們men在zai安an全quan至zhi上shang的de係xi統tong中zhong擁yong有you重zhong要yao的de地di位wei,並bing且qie他ta們men的de大da部bu分fen軟ruan件jian構gou件jian都dou已yi經jing通tong過guo認ren證zheng。
• Segger embOS
嵌入式軟件市場的新進入者,但這並不意味著他們是新手。該軟件產品已經開發了超過20年的時間,並已經使用在他們自己的硬件產品之中,因此對裝置的支持程度非常好,並配有一個優秀的驅動程序庫。
• Express Logic ThreadX
youxingyedezishenrenshisuochuangban,gaigongsizhuanzhuzaisuoyouguanyuxingnengdeshiwushang,bingjiyachuyuanqijianzhongmeiyigeshizhongzhouqidexiaoneng。tatongchangbeikanzuoshicaozuoxitongzhongdelaosilaisi,bingyijingyouhenduorenzhengbeishiyongzaianquanzhishangdexitongzhizhong。
2)開源解決方案
• FreeRTOS
FreeRTOS跟MicriumuC/OS一樣,都是在同行業中最常被采用的實時操作係統之一。它有一個龐大的社群,有很多人都在為軟件做出貢獻,像是TCP/IP棧,但做為開源軟件,便意味著沒有公司會負責整合,因此需要更多的工作來創建一個整合的解決方案。
也有一些公司在FreeRTOS的生態係統中,專門從事將差異化的軟件構件提供給那些需要整合協助的客戶,例如,Wittenstein高完整性係統公司提供稱為SAFERTOS安全認證的FreeRTOS替換核心,以及HCC嵌入式公司提供可以與任何實時操作係統工作的USB、以太網絡和文件係統。
• mbed OS
mbed OS解決一些你通常會在開源軟件所遇到的痛點,因為ARM這一家公司會負責整合的工作。然而,它仍然是處於萌芽階段,所以如果你想要有些貢獻就可以去這裏。

• RIOT OS
RIOT OS被冠以“物聯網中最友好的操作係統”,它(ta)是(shi)以(yi)通(tong)訊(xun)概(gai)念(nian)為(wei)基(ji)礎(chu)所(suo)建(jian)立(li)起(qi)來(lai)的(de)操(cao)作(zuo)係(xi)統(tong)。這(zhe)使(shi)得(de)它(ta)即(ji)使(shi)在(zai)麵(mian)對(dui)困(kun)難(nan)的(de)通(tong)訊(xun)問(wen)題(ti)時(shi),仍(reng)然(ran)精(jing)簡(jian)且(qie)高(gao)效(xiao)率(lv)。然(ran)而(er)它(ta)仍(reng)然(ran)還(hai)在(zai)積(ji)極(ji)發(fa)展(zhan)的(de)階(jie)段(duan)當(dang)中(zhong),所(suo)以(yi)你(ni)得(de)計(ji)劃(hua)多(duo)花(hua)幾(ji)個(ge)小(xiao)時(shi)來(lai)進(jin)行(xing)除(chu)錯(cuo)。
3)架構
有you一yi些xie操cao作zuo係xi統tong的de功gong能neng就jiu像xiang是shi將jiang磚zhuan塊kuai黏nian合he在zai一yi起qi的de水shui泥ni一yi樣yang,會hui與yu發fa展zhan框kuang架jia緊jin密mi地di結jie合he在zai一yi起qi,因yin此ci一yi般ban不bu能neng使shi用yong軟ruan件jian本ben身shen做zuo為wei項xiang目mu的de一yi部bu分fen,你ni必bi須xu圍wei繞rao著zhe它ta來lai進jin行xing整zheng個ge開kai發fa流liu程cheng。這zhe些xie框kuang架jia往wang往wang是shi使shi用yong比biC++更高階的語言所編寫,通常可以在實時操作係統上運行。
• mbed
mbed也出現在這裏,這時則做為快速成型的項目。它是用C++編寫,並對大多數微控製器和電路板有絕佳的支持,擁有一個龐大的元件程序庫,和一個采用網頁架構的漂亮集成開發環境(IDE)。目前,在它準備全麵部署之前,它仍然需要一點成熟的時間,但它很適合硬件原型的開發。
• Espruino
Espruino是在微控製器上運行的實時JavaScriptjieshiqi。tayunxuninenggoudongtaidigenggaichengxudaima,shenzhibuxuyaoduxieweikongzhiqibiankeyizhuanxiechengxudaima。zaitakaishiliangchanzhiqian,rengranxuyaoyixieshijianlaifazhan,dantahenshiheyongyuyingjianyuanxing,bingchengxianchuchengweiyigebukehushiruanjianjiagoudejudaqianli。
• microPython
microPython所能做的事與Espruino大致相同,差別僅在於其使用Python來代替JavaScript。它發展的概念,便是讓你從產品開發的一開始到量產,都能夠支持預先編譯的程序代碼,並使用C語言來編寫時序至上的程序代碼。目前仍在開發當中。
• microEJ
microEJ是一個采用Java架構的框架,讓你輕鬆地為你的設備打造好看的圖形化應用程序。它已經在許多智能手表和一些物聯網(IoT)設備中使用。
結語
如果你想要著手進行設備的開發,而無需安裝單一的程序,像是mbed和microPython這(zhe)類(lei)的(de)框(kuang)架(jia),便(bian)是(shi)入(ru)門(men)的(de)好(hao)方(fang)法(fa)。但(dan)是(shi),如(ru)果(guo)你(ni)要(yao)建(jian)立(li)更(geng)大(da)的(de)部(bu)署(shu),采(cai)用(yong)一(yi)個(ge)純(chun)粹(cui)的(de)實(shi)時(shi)操(cao)作(zuo)係(xi)統(tong)將(jiang)會(hui)是(shi)更(geng)好(hao)的(de)選(xuan)擇(ze)。如(ru)果(guo)使(shi)用(yong)工(gong)作(zuo)時(shi)間(jian)而(er)不(bu)是(shi)金(jin)錢(qian)來(lai)當(dang)作(zuo)軟(ruan)件(jian)的(de)投(tou)資(zi),對(dui)你(ni)的(de)公(gong)司(si)來(lai)說(shuo)會(hui)更(geng)為(wei)輕(qing)鬆(song)的(de)話(hua),像(xiang)是(shi)FreeRTOS或RIOT這類非商業解決方案便有其優勢。如果你的公司能負擔得起前期投資,像是Segger、Express Logic和Micrium的商業解決方案,將大大降低軟件開發風險和縮短產品上市的時間。在商業解決方案中,特別像是Micrium的(de)穩(wen)定(ding)性(xing)和(he)認(ren)證(zheng)的(de)程(cheng)序(xu)代(dai)碼(ma)基(ji)礎(chu),廣(guang)泛(fan)普(pu)及(ji)的(de)部(bu)署(shu),良(liang)好(hao)的(de)元(yuan)器(qi)件(jian)支(zhi)持(chi),開(kai)放(fang)的(de)原(yuan)始(shi)碼(ma),以(yi)及(ji)適(shi)合(he)大(da)多(duo)數(shu)經(jing)濟(ji)效(xiao)益(yi)的(de)商(shang)業(ye)模(mo)式(shi),更(geng)使(shi)其(qi)在(zai)商(shang)業(ye)解(jie)決(jue)方(fang)案(an)中(zhong)顯(xian)得(de)特(te)別(bie)突(tu)出(chu)。
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 一秒檢測,成本降至萬分之一,光引科技把幾十萬的台式光譜儀“搬”到了手腕上
- AI服務器電源機櫃Power Rack HVDC MW級測試方案
- 突破工藝邊界,奎芯科技LPDDR5X IP矽驗證通過,速率達9600Mbps
- 通過直接、準確、自動測量超低範圍的氯殘留來推動反滲透膜保護
- 從技術研發到規模量產:恩智浦第三代成像雷達平台,賦能下一代自動駕駛!
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
微波功率管
微波開關
微波連接器
微波器件
微波三極管
微波振蕩器
微電機
微調電容
微動開關
微蜂窩
位置傳感器
溫度保險絲
溫度傳感器
溫控開關
溫控可控矽
聞泰
穩壓電源
穩壓二極管
穩壓管
無焊端子
無線充電
無線監控
無源濾波器
五金工具
物聯網
顯示模塊
顯微鏡結構
線圈
線繞電位器
線繞電阻




