msOS的需求來源-嵌入式微系統(tǒng)連載之三
2001年我大學(xué)畢業(yè)后去了中科院半導(dǎo)體所工作,第一次真正接觸了MCU51下的C語言開發(fā),項目組要求項目中的功能盡可能封裝成一個個的功能子函數(shù),便于維護(hù),所以一個項目就是由各個功能子函數(shù)組成的。但我因為在所里時間較短,沒有真正參與其中,只是接觸了這個概念,覺得這個非常好,也在自己心中暗暗的下了一個決心,今后要建立自己的函數(shù)庫,以方便項目開發(fā)。
本文引用地址:http://butianyuan.cn/article/262434.htm2002年我來到深圳做手機(jī)軟件開發(fā),采用英飛凌手機(jī)解決方案,有一套標(biāo)準(zhǔn)的軟件架構(gòu)平臺,RTOS采用Nucleus,GUI等其它部分都是英飛凌自己完成的,當(dāng)時國內(nèi)山寨手機(jī)行業(yè)還沒有開始,所以這套手機(jī)解決方案還不是很完整,功能比較少,但就是因為不完整,功能少,很多還需要我們自己開發(fā),所以讓我有了更深入的了解整個軟件架構(gòu)的機(jī)會。
我負(fù)責(zé)的是手機(jī)驅(qū)動部分,所以可以比較清晰的了解整個手機(jī)的軟件架構(gòu),代碼是如何組織的,加上原本就是做硬件的,所以相對較快的完成了工作,在手機(jī)公司呆了半年之后就有比較多的空余時間,想著把MCU51熟悉一下,把基礎(chǔ)打好,便于開發(fā)一些小項目,于是采購了一套周立功公司推出的MCU51開發(fā)板:DP-51開發(fā)板。
按DP-51開發(fā)板提供的例子如GPIO、串口、按鍵等走了一遍,基本上熟悉了MCU51芯片的特性,對MCU51的編程就不再神秘,但是這種一個個例子,一個個功能子函數(shù)的方式,已經(jīng)瞧不上了,畢竟之前是做手機(jī)方案的,于是就想著如何借用手機(jī)的平臺架構(gòu)思想,把這些功能函數(shù)都整合起來,形成一套基于MCU51下的軟件開發(fā)平臺。
手機(jī)驅(qū)動開發(fā)中,經(jīng)常用到RTOS提供的系統(tǒng)節(jié)拍,5ms一次,用來處理一些例行程序,覺得很好,于是把這個功能引入到軟件平臺中,把MCU51的定時器2作為系統(tǒng)時鐘來處理。手機(jī)軟件中還有一個非常好的東西就是軟件定時器,因為硬件定時器只有非常有限的幾個,比如MCU51一般只有三個硬件定時器,一個用于系統(tǒng)時鐘,一個用于串口通訊,只有一個了,若需要處理超時、動畫、鬧鐘等,根本不夠用,所以需要用軟件擴(kuò)展出很多個軟件定時器,一般基于系統(tǒng)節(jié)拍來擴(kuò)展,所以把這個軟件定時器功能引入平臺。雖然手機(jī)中有Nucleus這個RTOS,但是被封裝了看不到,所以那個時候?qū)TOS的特性并不了解,實際手機(jī)開發(fā)中也感受不到它的存在。而RTOS中常見的消息機(jī)制也不是從手機(jī)平臺中認(rèn)識的,而是源自大學(xué)時期的VB編程,覺得事件觸發(fā)這種方式非常好,點(diǎn)一個按鍵,點(diǎn)一下鼠標(biāo),產(chǎn)生一個事件,于是把VB中的事件處理方式,也就是消息機(jī)制引入平臺中。
消息機(jī)制、系統(tǒng)節(jié)拍、軟件定時器,再加標(biāo)準(zhǔn)的前后臺,構(gòu)成了一個基于MCU51下的軟件開發(fā)平臺:實用單片機(jī)系統(tǒng)(McuSystem,縮寫為MS)。第一版2003年放到網(wǎng)上共享。從今天角度來看,這個簡陋的不能再簡陋的,命名規(guī)范一塌糊涂的軟件平臺,竟然被不少M(fèi)CU51初學(xué)者所喜歡,經(jīng)常發(fā)郵件詢問一些問題。這個事情讓我明白,自己的水平雖然不怎么樣,但接觸的東西相對高端,還有太多的不如我水平的人,他們很需要指點(diǎn)入門。于是在經(jīng)歷幾個項目進(jìn)一步完善軟件功能之后,對MS1做了精簡、優(yōu)化,去掉了指針等相對難一些的東西,專門針對初學(xué)者,讓他們非常容易看懂,這就是MS2。在MS2的基礎(chǔ)上豐富了功能,引入了指針,針對中級用戶的,變成MS3,應(yīng)該說MS3的客戶群體最多,深受網(wǎng)友喜歡。
2011年,我設(shè)計了一款6KW高頻感應(yīng)加熱設(shè)備(簡稱高頻機(jī)),高頻機(jī)是一款典型的中低端嵌入式項目需求,實時性要求高,工作要求穩(wěn)定可靠,128*64黑白LCD屏顯示界面,高速中斷響應(yīng),高低速例行節(jié)拍處理,業(yè)務(wù)需求處理,如下圖:
硬件上考慮到MCU51速度已經(jīng)不夠用了,所以升級為Cortex M3。軟件上因為存在高低速處理需求,一開始想著引入uC/OS-II實現(xiàn)多任務(wù)處理,但那個時候?qū)τ赗TOS了解不多,又沒有用過,細(xì)節(jié)點(diǎn)太多,一個處理不好,可能會引起高頻機(jī)炸機(jī),所以心里沒有把握,最后在同事的建議下放棄而選擇了自己擅長的MS3,只是把MS3移植Cortex-M3中,增加了一些菜單界面編程的功能及多級速度系統(tǒng)節(jié)拍功能。
項目開發(fā)過程中開始感覺到MS3架構(gòu)的設(shè)計已經(jīng)無法滿足這類功能相對較多,菜單界面相對復(fù)雜的需求,尤其是用傳統(tǒng)的狀態(tài)機(jī)或者是函數(shù)指針來實現(xiàn)的菜單界面編程已經(jīng)超出了這個框架的能力范圍,修改或者擴(kuò)展功能相當(dāng)復(fù)雜,有時候連自己都會搞暈,編程相當(dāng)痛苦。雖然如此,這個項目還是一步步的完成,產(chǎn)品也穩(wěn)定批量生產(chǎn)了。
項目轉(zhuǎn)變?yōu)楫a(chǎn)品之后,需要找一個人來接手,解放自己去開發(fā)新的東西,這個時候卻發(fā)現(xiàn)接手人雖然反復(fù)看了多遍,自己也跟他講解了多遍,但當(dāng)客戶有需求需要微調(diào)整菜單界面的時候,他往往無從下手或者經(jīng)常犯錯誤,傳承性非常差。
在高頻機(jī)市場化獲得成功之后,客戶對我們的研發(fā)信心非常之高,要求圍繞客戶的機(jī)械自動化設(shè)備開發(fā)周邊的電子設(shè)備以降低成本,主要有電源類設(shè)備如高頻機(jī)、火花機(jī),傳感器類設(shè)備如紅外溫度傳感器、激光測距儀、接近開關(guān),驅(qū)動類設(shè)備如步進(jìn)電機(jī)、伺服電機(jī)等,控制類設(shè)備如PLC。面對這么多種類的不同需求,需要很多人協(xié)同開發(fā),若還是按MS3架構(gòu)設(shè)計,則已經(jīng)無法滿足客戶需求,那么新的軟件架構(gòu)平臺,該如何設(shè)計?
伺服電機(jī)相關(guān)文章:伺服電機(jī)工作原理
電容式接近開關(guān)相關(guān)文章:電容式接近開關(guān)原理 接近開關(guān)相關(guān)文章:接近開關(guān)原理
評論