序
本文引用地址:http://www.eepw.com.cn/article/201612/327758.htm讀過與非網推出的《嵌入式作業系統史話》,通過何老師的講述,我們應該對嵌入式作業系統的門派、歷史、演進以及未來發展趨勢有了較全面和深入的認識。
其中,幾乎所有嵌入式作業系統革新性的技術節點都始於歐美國家,國內產業者始終扮演追隨者的角色。
但我們也要看到,國內的開發者們一直沒有放棄努力,雖然一個個先驅成為先烈,如紅旗Linux、都江堰等,仍擋不住一批批後繼者湧入,如凱思昊鵬的HOPEN、開源的RT-thread和μTenux以及飽受爭議的COS等。
在此,與非網推出《嵌入式微系統msOS成型記》系列,我們邀請與非網資深網友--王紹偉(鳳舞天),介紹一款基於開源概念,此前在國內幾為空白的,從實際需求出發的嵌入式作業系統--msOS,自誕生到完善成熟的成長故事,讓大家看到國內這樣一批務實的開發者們在做什麼。
何為嵌入式微系統
嵌入式微系統,顧名思義就是嵌入式微型作業系統,然而作業系統一詞在嵌入式行業裡往往專指uC/OS之類的帶任務切換的系統,所以為了有別於這個專用名詞,往往用開發平臺一詞來代替,所以嵌入式微系統更準確的名字為嵌入式微型開發平臺。
大家肯定會問,uC/OS這樣的嵌入式作業系統跟嵌入式微系統到底有什麼區別,那麼我們就要從項目需求開始說起。
某個公司需要在嵌入式晶片(MCU51或者STM32)上開發一個控制項目,涉及LCD界面、多種不同接口速度的外設、多種不同速度的業務邏輯控制,下圖為常見的一種工業自動化項目需求。
作為項目負責人,首先要分析清晰項目需求,假設這個項目有點複雜,涉及多路採樣及多路PWM輸出,所以選擇STM32之類的高性能處理器,之後再考慮軟體設計。
這個項目設計到多路輸入傳感器及多路輸出,有高速的業務邏輯控制,也有低速的菜單界面,為了把低速的菜單界面與高速的業務邏輯分開獨立編程,所以引入嵌入式作業系統,比如uC/OS,會方便程序設計。
uC/OS除了任務切換功能等有限的功能外,沒有別的,所以其它的東西還是需要我們自己添加,菜單界面就是一個。界面編程裡面,簡單的界面用狀態機還比較容易編程,但若涉及到稍微複雜一點的界面,傳統的狀態機編程思想就完全不適合了,代碼很難維護修改,為了提高可維護性,需要引入一個標準的菜單界面編程庫(GUI),雖然現在網上也有不少,但適合自己的卻很難找,往往需要自己編寫一套菜單界面庫,這個工作量很大,難度也很難,最後往往退回到傳統狀態機菜單編程方式。
其它的硬體相關的設備驅動庫,都需要自己來完成,比如按鍵、串口、步進驅動等等。若這個項目需要多人協同開發、長期維護,則還需要制定架構標準,一些接口規範,命名標準,而這麼多的要求,對於大部分的小、微型企業的嵌入式項目負責人來說,要求太高了。所以最後這個項目負責人,往往自己一個人埋頭苦幹,什麼標準什麼規範都沒有,經過較長的一段時間開發加上後期的修修補補,項目勉強的交差了。然而當這個負責人離職的時候,面臨著無人接手的窘境。
我們再看消費類電子產品的開發模式,以MTK6225功能手機為例,RTOS採用Nucleus,菜單界面軟體庫採用PlutoMMI,此外還需要多媒體、文件系統,電話本、短消息等中間件,之後是各種硬體設備驅動,整個軟體架構類似ARM公司提倡的CMSIS架構。
MTK提供了整套硬體參考設計、PCB設計、生產流程、測試流程,軟體開發標準。客戶通過不長的時間培訓即可掌握手機的開發設計,一般10來人的手機設計公司,在具有一定的手機設計經驗的基礎上,只需要2、3個月就可以設計出一款MTK提供的參考手機,之後公司基於這個參考手機做硬體上的機型改進及軟體上的界面調整即可。到了Android時代更是簡單了,因為Android軟體屬於通用軟體,所以軟體更是不需要培訓了。
其他消費類電子,比如以前的VCD、DVD、MP3、MP4等等,都採用類似的方式,只有採用這種方式,源頭廠家才可以快速的切入市場,並且可以同時管理、維護很多下遊客戶,比如MTK的下遊山寨手機公司上千家,大的手機廠家也有近百家之多。因為採用了標準的設計模版,應用開發、客戶維護人員都不是很多,尤其是維護人員,大大降低,獲得高額的利潤。而因為採用標準通用的軟體架構平臺,迅速的培養了大量的通用手機軟體人員,而這些軟體人員都可以在各個手機公司立即幹活,不存在更換一個公司之後還需要培訓的問題,這樣下遊廠家也不需要擔心人才流動引起的工作交接問題。
從以上例子可以看到,通用標準化的開發設計,帶來的好處是巨大的:提高了開發效率、縮短了開發周期、便於產品長期維護,容納更多的下遊客戶。