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