2010年7月4日 星期日

學「嵌入式系統」需要購買開發板嗎?


「老師,我學嵌入式系統需要買一塊開發板嗎?」這是許多剛入門嵌入式系統的朋友,最常問的一句話。尤其從軟體業界轉行的朋友表示,他們才剛踏入嵌入式系統領域,硬體一點也不熟。一塊開發板少則 NT$4000 ~ NT$5000,多則一萬多元,實在買不下手。加上不知道哪塊開發板好?或者應該跟哪個廠商買?所以如果可以用「軟體模擬」的話,不僅省錢,也不會買了不適用而後悔。對於這樣的疑問,我都斬釘截鐵、帶著詭異的微笑、用短到對方無法接受的語句回答說:「要!」

「呃...可是...」「要!」「那...可不可以...」「不行!」滿足了自己捉弄別人的一點小小樂趣後,我會正經八百地解釋道:「學電腦不可能不上機 就學得會。就像學開車,你也不能光憑想像就考得上駕照。你可以不買車,先跟別人借車來練。但沒辦法天天對著鏡子想:『我會開車、我會開車、我會開 車...』就考上駕照。同理,你可以先跟補習班或朋友,借板子來學,但不能靠催眠來學會嵌入式系統。」




在這裡先幫某些讀者解釋一下何謂「開發板」 。某些廠商,會把目前在嵌入式業界流行的 CPU,搭配上各式各樣的周邊,做成一塊電路板,賣給嵌入式教育市場,或有志學習嵌入式系統的學生,作為實驗平台之用。這種板子,我們就稱它為「開發板」、「評估版」。英文叫做「Evaluation Board」,或簡稱「EVB」。

其實這個名詞最早來自業界。一些想推廣自家產品的晶片商,為了展現產品優點,吸引下游系統廠商使用,會自己「兜」出一塊「Demo」用的板子。雖然把產品配合其它電路,把整個系統做到好,並非晶片廠商該做之事(有點撈過界,一口氣把下游廠商該做的電路整合工作全包了)。但為了吸引買家,不得不這麼做。這就是業界口中的「評估板(EVB)」、「開發板」、或「Demo Board」。

開發板為了展示主晶片的最大能耐,通常集合了最多的周邊電路。真正的產品,會把不需要的周邊拿掉,以減低成本。不過這種情況在嵌入式教育領域,就跟業界作法相反。每位老師無不希望拿到的板子上,有最多的周邊,能夠用一塊板子教所有課程。這就是為什麼一塊開發板會貴到讓同學買不下手的原因。


「難道沒有用軟體模擬的解決方案嗎?」我當初學嵌入式系統也是這麼想。後來找到「SkyEye」以及「QEMU」這兩套不錯的模擬軟體。用了一陣子發現,嵌入式系統最難的,就是用軟體去控制那些硬體。而當今的模擬軟體,是無法讓您很紮實地學到控制硬體的技巧的。至少,控制真正硬體時那些要注意的物理特性(比如:XX 元件要先拉高電位 10 奈秒後,才能穩定到可以初始化下一個硬體元件,此時您就得去算出要用幾圈空迴圈,讓系統延遲 10 奈秒),軟體模擬就學不到。

要買開發板嗎?答案已經很明顯了吧?


喜歡這篇文章嗎?喜歡的話請幫忙按一個「讚」喔!
歡迎加入「紀老師電腦教學網」的 Facebook 粉絲團,取得更多資訊喔!

關於作者

紀俊男,現任和群資訊總經理。曾任職於筌寶電子、趨勢科技、西基電腦、展望電腦等公司。教書經驗約 20 年。專長是程式設計、系統管理、嵌入式系統等領域。您可以在本篇留言與之聯繫、討論、或邀課。

4 則留言:

  1. 您好~在下是想要學習嵌入式系統設計,看到這篇文章可能有點久了,可否麻煩老師您推薦一張開發板,讓學生我可以進入嵌入式系統領域.

    回覆刪除
    回覆
    1. 目前大概就是兩大家:三星(Samsung)跟德州儀器(TI, Texas Instrument)的開發板比較熱門。如果是自學,我會推薦德州儀器的 Beagle Board (http://beagleboard.org)。主要原因是文章多,很多嵌入式補習班也用這一塊。不過業界用德州儀器來做公板的比較少,反而是學「三星」的 S3C6410 或 更高階的開發板作為線路設計的參考。網路上三星開發板的資料也不少,只是畢竟三星的「銅臭味」比較重,德州儀器的 Beagle Board 是「開放式硬體」(線路完全公開),我個人比較偏好而已。

      事實上,用哪一塊都不是重點。重點是,拿起一塊,狠狠地從頭學到尾,另一塊也會無師自通的。就像學開車,用 Nissan 或 Toyota 學都不是重點,重點是學會開其中一輛,另一輛大同小異,自然會無師自通。兩邊道理是相通的。

      刪除
  2. 老師,不好意思,最近工作繁忙,都沒注意到您已經回覆學生我了,謝謝您提供這塊開發板,剛才逛了一下youtube以及google搜尋,原來這塊板的教學真得很多,連中文的教學都有出來了.
    這塊板子真得很便宜,比起ARM11 S3C6410,動輒三張大鈔來說,真得是讓初學者可以負擔的起.
    真得很感謝老師願意提供意見給學生,很感謝老師.

    回覆刪除
    回覆
    1. 不客氣!派得上用場就好!

      刪除