《國產(chǎn)嵌入式微系統msOS成型記》之一 何為嵌入式微系統
序
本文引用地址:http://dyxdggzs.com/article/201612/327758.htm讀過(guò)與非網(wǎng)推出的《嵌入式操作系統史話(huà)》,通過(guò)何老師的講述,我們應該對嵌入式操作系統的門(mén)派、歷史、演進(jìn)以及未來(lái)發(fā)展趨勢有了較全面和深入的認識。
其中,幾乎所有嵌入式操作系統革新性的技術(shù)節點(diǎn)都始于歐美國家,國內產(chǎn)業(yè)者始終扮演追隨者的角色。
但我們也要看到,國內的開(kāi)發(fā)者們一直沒(méi)有放棄努力,雖然一個(gè)個(gè)先驅成為先烈,如紅旗Linux、都江堰等,仍擋不住一批批后繼者涌入,如凱思昊鵬的HOPEN、開(kāi)源的RT-thread和μTenux以及飽受爭議的COS等。
在此,與非網(wǎng)推出《嵌入式微系統msOS成型記》系列,我們邀請與非網(wǎng)資深網(wǎng)友--王紹偉(鳳舞天),介紹一款基于開(kāi)源概念,此前在國內幾為空白的,從實(shí)際需求出發(fā)的嵌入式操作系統--msOS,自誕生到完善成熟的成長(cháng)故事,讓大家看到國內這樣一批務(wù)實(shí)的開(kāi)發(fā)者們在做什么。
何為嵌入式微系統
嵌入式微系統,顧名思義就是嵌入式微型操作系統,然而操作系統一詞在嵌入式行業(yè)里往往專(zhuān)指uC/OS之類(lèi)的帶任務(wù)切換的系統,所以為了有別于這個(gè)專(zhuān)用名詞,往往用開(kāi)發(fā)平臺一詞來(lái)代替,所以嵌入式微系統更準確的名字為嵌入式微型開(kāi)發(fā)平臺。
大家肯定會(huì )問(wèn),uC/OS這樣的嵌入式操作系統跟嵌入式微系統到底有什么區別,那么我們就要從項目需求開(kāi)始說(shuō)起。
某個(gè)公司需要在嵌入式芯片(MCU51或者STM32)上開(kāi)發(fā)一個(gè)控制項目,涉及LCD界面、多種不同接口速度的外設、多種不同速度的業(yè)務(wù)邏輯控制,下圖為常見(jiàn)的一種工業(yè)自動(dòng)化項目需求。

作為項目負責人,首先要分析清晰項目需求,假設這個(gè)項目有點(diǎn)復雜,涉及多路采樣及多路PWM輸出,所以選擇STM32之類(lèi)的高性能處理器,之后再考慮軟件設計。
這個(gè)項目設計到多路輸入傳感器及多路輸出,有高速的業(yè)務(wù)邏輯控制,也有低速的菜單界面,為了把低速的菜單界面與高速的業(yè)務(wù)邏輯分開(kāi)獨立編程,所以引入嵌入式操作系統,比如uC/OS,會(huì )方便程序設計。
uC/OS除了任務(wù)切換功能等有限的功能外,沒(méi)有別的,所以其它的東西還是需要我們自己添加,菜單界面就是一個(gè)。界面編程里面,簡(jiǎn)單的界面用狀態(tài)機還比較容易編程,但若涉及到稍微復雜一點(diǎn)的界面,傳統的狀態(tài)機編程思想就完全不適合了,代碼很難維護修改,為了提高可維護性,需要引入一個(gè)標準的菜單界面編程庫(GUI),雖然現在網(wǎng)上也有不少,但適合自己的卻很難找,往往需要自己編寫(xiě)一套菜單界面庫,這個(gè)工作量很大,難度也很難,最后往往退回到傳統狀態(tài)機菜單編程方式。
其它的硬件相關(guān)的設備驅動(dòng)庫,都需要自己來(lái)完成,比如按鍵、串口、步進(jìn)驅動(dòng)等等。若這個(gè)項目需要多人協(xié)同開(kāi)發(fā)、長(cháng)期維護,則還需要制定架構標準,一些接口規范,命名標準,而這么多的要求,對于大部分的小、微型企業(yè)的嵌入式項目負責人來(lái)說(shuō),要求太高了。所以最后這個(gè)項目負責人,往往自己一個(gè)人埋頭苦干,什么標準什么規范都沒(méi)有,經(jīng)過(guò)較長(cháng)的一段時(shí)間開(kāi)發(fā)加上后期的修修補補,項目勉強的交差了。然而當這個(gè)負責人離職的時(shí)候,面臨著(zhù)無(wú)人接手的窘境。
我們再看消費類(lèi)電子產(chǎn)品的開(kāi)發(fā)模式,以MTK6225功能手機為例,RTOS采用Nucleus,菜單界面軟件庫采用PlutoMMI,此外還需要多媒體、文件系統,電話(huà)本、短消息等中間件,之后是各種硬件設備驅動(dòng),整個(gè)軟件架構類(lèi)似ARM公司提倡的CMSIS架構。

MTK提供了整套硬件參考設計、PCB設計、生產(chǎn)流程、測試流程,軟件開(kāi)發(fā)標準??蛻?hù)通過(guò)不長(cháng)的時(shí)間培訓即可掌握手機的開(kāi)發(fā)設計,一般10來(lái)人的手機設計公司,在具有一定的手機設計經(jīng)驗的基礎上,只需要2、3個(gè)月就可以設計出一款MTK提供的參考手機,之后公司基于這個(gè)參考手機做硬件上的機型改進(jìn)及軟件上的界面調整即可。到了Android時(shí)代更是簡(jiǎn)單了,因為Android軟件屬于通用軟件,所以軟件更是不需要培訓了。
其他消費類(lèi)電子,比如以前的VCD、DVD、MP3、MP4等等,都采用類(lèi)似的方式,只有采用這種方式,源頭廠(chǎng)家才可以快速的切入市場(chǎng),并且可以同時(shí)管理、維護很多下游客戶(hù),比如MTK的下游山寨手機公司上千家,大的手機廠(chǎng)家也有近百家之多。因為采用了標準的設計模版,應用開(kāi)發(fā)、客戶(hù)維護人員都不是很多,尤其是維護人員,大大降低,獲得高額的利潤。而因為采用標準通用的軟件架構平臺,迅速的培養了大量的通用手機軟件人員,而這些軟件人員都可以在各個(gè)手機公司立即干活,不存在更換一個(gè)公司之后還需要培訓的問(wèn)題,這樣下游廠(chǎng)家也不需要擔心人才流動(dòng)引起的工作交接問(wèn)題。
從以上例子可以看到,通用標準化的開(kāi)發(fā)設計,帶來(lái)的好處是巨大的:提高了開(kāi)發(fā)效率、縮短了開(kāi)發(fā)周期、便于產(chǎn)品長(cháng)期維護,容納更多的下游客戶(hù)。
評論