2005年9月24日

嵌入式系統與作業系統,電子人的新目標!?

最近剛好和同學提到,也打了,就索性把它也post在blog上~~

嵌入式系統在很多年前就很紅了,這個嵌,有人念ㄎㄢˇ,也有人念ㄑㄧㄢ,我用新注音打,是用ㄑㄧㄢ打出來的,不過不少人還是要聽到『砍入式系統』才知道在說這個,whatever~~

我身為半個電子人(因為不用功,電子電路、電子學完全不行,我連電晶體的三枝腳名稱都叫不出來,虧我電子科系一路念到技術學院畢業),現在是資工新鮮人,沒聽過嵌入式系統就遜掉了~~

印象中,我好像是在二專開始聽說這個名詞,不過當時並不知道這是什麼,當兵期間,買了傳說中的PDA,知道PDA是嵌入式系統,也知道可以裝Linux,還知道了ARM,因此大體上對嵌入式系統有點皮毛般的認識。

到 了二技,當時聽老師說系上有ARM的開發套件,我就奮不顧身,儘管他不是我們專題老師,依然用盡全力選他,最後也如願了,正式開始我的嵌入式之旅,雖然是 開始,但是卻是跌跌撞撞直到現在,說實話,我二技的中X技術學院電子工程系(中開頭很多,在台北市境內那個)到目前都還沒有嵌入式系統的技術,不過耳聞老 師好像也開始這方面的研究了。
不論如何,雖然我是開始了,但是完全沒進度,完全不了解,倒是找了很多說明文件,知道了嵌入式系統是什麼~~

時 間再推回二專在嘉義X鳳的日子,當時我曾經問過某個老師一個怪問題,大致是這個意思『老師我想問個8051的問題,我想請問,如何在8051這樣的CPU 上面執行程式,就像電腦上的程式一樣』,老師傻掉了,他說『就是寫8051阿~用8051組合語言或8051 C阿』,我想想,好像問不出答案,也不知道問題該怎麼問,就跟老師說謝謝,悻悻然的離開了。

這個問題一直到二技才找到答案,一切的答案,都是『嵌入式系統』。

如 果你在網路上找嵌入式系統的定義,很不幸的,你會找到千奇百怪的答案,甚至跟SoC(系統晶片)扯上關係,然後你會找到一個最正確的定義的答案,『所謂的 嵌入式系統,最早由英國工程師協會定義出來,意指能夠在無人的情況下自動控制、具有掉電自動回復....云云。』然後你想想,這不是指8051嗎.... =_=||

之後終於在某次的研討會,聽到了我要的答案,講者說,他認為的嵌入式系統,是指『能夠有自動排程能力的系統,可以同時執行多個程式,動態排程』,YA~That's right.
說穿了,嵌入式系統其實就是直翻,把作業系統嵌入進某個微電腦裝置中,就是嵌入式系統。

接著你會問,好好的8051,跟嵌入式系統有什麼關係,又和ARM有什麼關係~~~

嵌入式系統其實就是在現有的硬體裝置,加上作業系統的機制,加入作業系統之後,會產生下列幾個好處:
1.多工執行
2.可執行更複雜的自動控制
3.提昇執行環境的穩定性
4.壓榨、虐待系統(:p)

這幾個好處很重要,第一個沒話說,能夠多工執行,這種看似同時執行(不是即時喔~~)的機制,直接就把一堆還在努力跑定時器的8051打趴了~~
第 二個,什麼叫做可執行更複雜的自動控制,想想看,像8051機器人或者Sony的愛寶,尤其是Sony的愛寶,那隻笨狗,他全身上下一堆感測器和馬達,又 有耳朵又有眼睛,當聽到聲音時要做什麼反應,看到東西時要做什麼反應,今天我們一邊說話一邊在他面前揮手,8051程式要怎麼寫?
先處理眼睛看到的動作?
還是耳朵聽到的動作?
還是直接當掉在地上打轉?
如 果是傳統的8051流程式寫法,他真的會打轉或當掉甚至是耍白痴,因為人腦有限,用流程式的寫法,寫個幾次中斷,返回時就很容易搞錯了,也許用C寫情況可 以好些,但問題根本還是沒解決;這時候作業系統出現了,近乎同時的執行,加上動態的排程,那隻笨狗看起來的確聰明許多,能夠在你揮手時咬你,咬到一半聞到 香味就跑去找吃的,這樣的判斷可能只在瞬間,而不會是咬著你拉著去找吃的。
第三個,提昇執行環境的穩定性?8051流程式的寫法有個致命傷,就是可能發生意外,導致系統當機,當然啦,也許會說有看門狗阿~~但我們先假設沒有看門狗,然後是流程式運作,假如今天某個感測器壞了,或者某顆連線的IC掛了,握手失敗~~可能8051就這樣掛了~~~
但是作業系統出現了,有了作業系統,由作業系統負責整個系統的程式排程,一個程式掛了算什麼,大不了關閉這個程式,其他程式依然能夠正常運作。
這讓我們做個小小的聯想,不知道雄風一和雄風二,有沒有使用作業系統喔~~
我估計是沒有,以研發成功的時間來看,放入作業系統的機會好像不高......除非中科院當時就有計算機系統神人負責系統整合.......
那老實說.......雄風的穩定性,是有值得懷疑的地方..........
當然啦~~~純粹想想~~~~

除了上述這幾點之外,還有個不知道算不算在內的特點,有了作業系統,表示放入library成為可能,那麼要開發電腦程式,甚至圖形介面都是可以辦到的,單看library充不充足,支援了什麼~~~

不過,作業系統也不是萬能的,現在經常可以聽到Real-Time這個名詞,Real-Time在程序式的程式上是不存在的問題,都已經一條一條執行了,Timer穩定,要在哪裡中斷或者執行特定功能,小算盤都算得出來,要什麼Real-Time,不就已經是了嗎~~~
Real -Time是作業系統才會有的問題,因為作業系統有排程,有多個程式近乎同時運作,那麼就不可能會有一個程式是Real-Time的,因為大家都在排隊, 都等著執行,Real-Time是神話,但正因為如此,在作業系統下能做到多精密、多細緻的Real-Time(例如電話,某特定程式有超高優先權),就 是各家作業系統廠商的不傳之密了。

看到這裡應該就能夠知道,嵌入式系統和作業系統,其實是說類似的東西,不過為何現在這麼熱門?
其實有部分原因要拜internet之賜,許多人都在問,internet如此發達,家電能否上網,智慧型家電的未來何在?
而 網路,其實就是TCP/IP,它的程式比想像中複雜,而且需要放在背景一直被執行著,在8051流程式程式的環境下,頂多能夠寫到某幾個port的某幾項 握手傳輸動作,而且要算準時間發,算準時間收,因此這麼做的人不算太多,而作業系統則好辦許多,網路,幾乎是附掛在作業系統下生存的。

正因為如此,以往我們電子學的8051,現在似乎也要開始轉型,可能轉學ARM,再研究作業系統。

問題回到我之前發過的,那8051呢?就此滅亡了嗎?
其實現在也有些像是RTOS51這樣的超小型作業系統,僅僅只作簡單的排程,專門給8051使用的,所以其實8051還是有人在移植作業系統,甚至也有將TCP/IP移植上去執行,所以說,8051再撐個20年應該不是問題啦~~

3 則留言:

Mitnick 提到...

不一定要有 os 才能有 library 跟 GUI. 你觀念有誤

阿呆 提到...

感謝您的指教。
如果方便的話,還請您將高見po出來,這樣可以讓我們對嵌入式系統有更深入的認識。

匿名 提到...

real time 也不是您說的狀況。
real time 是說在事件發生之後在"一定"的時間內可以處理完畢。
只要處理完畢所用的時間短於"一定"的時間,那就符合 real time 的定義了。

比方說選課的動作,只要在選課結束前處理完就是 real time。
所以,有些事件的 real time 其實是可以有一年或是兩年以上的"時間"的。