由 Kevin Peng » 週二 10月 14, 2008 11:51 am
如果你是要做電路或信號處理如 router 等, 建議從最基本的 8051 embedded system 做起. 否則光是 linux kernel 的熟悉加上搞到能運作可以就先吃掉你半年 n 個月. 而自己動手可以從最簡單的 round-robin 的 while loop 無痛起步, 將重心放在硬體的研究.
如果你的目地是要做到一個有圖形化介面的小型系統例如動態平面廣告顯示, 換句話說重點都跑到軟體上去, 幾乎高階的呼叫都可以用. 那與一般 PC 環境差異不大, 恐怕失去原來的意義了.
建議你還是以 8051 做出發點, 不必刻意使用 linux 做平台. 最重要的是熟悉硬體設施的使用, 如 Interrupt, DMA, I/O, Timer, UART, SPI, I2C, PWM, ADC 等. 發揮硬體效能才是 embedded system 的重點. 一台四百多萬的法拉利加速 0-100 只要 7 秒沒什麼了不起, 但一部不到三十萬的喜美也能開到 7.5 秒那才叫厲害. 要知道不是每間公司每個專案都會讓你開法拉利的. 一般消費者也不會去買法拉利, 除非每個人密帳多到用不完.
溫度計是個不錯的開始, 需要 Timer 定時觸動 Interrupt, ADC 測量溫度 (很多晶片有內建 ADC 可直接傳回溫度的 analogue value), UART 訊息傳送至 PC. 過程可以由主動式 polling -> interrupt driven -> 加上 DMA 做背景處理等一步步摸過去. 目地是在最便宜的平台上完成工作和需求. 因此需要有一個明確的題目才容易進行.
Router 也是不錯的專題, 只是跟軟體與處理效率的關係較大, 似乎對熟悉硬體方面的幫助不多...
不管你做的是那方面, 開發工具與軟體套件等基本工具還是需要的. 不一定要 32-bit ARM 等高檔次的產品, 並將自己榜死在 linux 上. 當然如果你想搞純 embedded linux system... 我是建議你不必了, 直接做 PC linux 程式開發吧, 反正兩者大同小異.