隨著專為嵌入式系統編程人員所設計的《Embedded System Design》平面雜誌劃下句點,我們更能看出未來的嵌入式軟體設計趨勢將更強調自動生成的程式碼,而不再那麼重視手寫編程了。
《Embedded System Design》最早在1988年以《Embedded Systems Programming》(ESP)的名稱出刊時,我才剛高中畢業。就像當時大多數人一樣,我從來沒聽說過「嵌入式系統」一詞,也沒想太多深藏於另一種產品中的電腦形式。六年後,我取得了電子工程師的學位,也像1990年代中期的許多電子工程師一樣找到了一份嵌入式軟體設計工作(而非硬體設計)。不久,我在一位同事的辦公桌上看到了這本雜誌,馬上就訂閱而且成了忠實讀者。
早期發展
1990年代初的情形就和現在一樣,學校中從來沒教過如何編寫出可靠的嵌入式軟體等專業知識。我在大學中唯一上過一門有關編程的課就是FORTRAN;後來才知道曾有過兩次實作課程學習組合語言和C語言編程就是我在編寫嵌入式軟體方面僅有的正規教育。我大多經由工作以及這份雜誌的內容學習,從這些篇章間第一次學會了如何編寫元件驅動程式、移植並使用作業系統、滿足即時的期限要求、建置有限狀態機等技巧,以及除C和組合語言以外其它編程語言的優缺點、遠端除錯與JTAG等等。
在那個時代,擔任韌體開發人員的我每天日常工作就是和英特爾hex文件、元件編程器、UV擦除器、僅kb容量的記憶體、8/16位元處理器、電路模擬器與ROM監視器等東西打交道。數據手冊有如就像書本一樣地多又厚,全部集中在一起的話就可以佔滿整個書架。我在我的辦公桌上的 HP-UX 工作站編寫韌體程式,後來必須到樓下實驗室去燒晶片,插入原型板中,再用ICE進行測試與除錯。我還記得有一個特別棘手的專案,所用的編譯器和元件編程器距離唯一可用的目標硬體8英哩遠;而一個單色的紅光 LED 和一款滿是灰塵的示波器就堆在我的除錯工具箱附近。
我也和你一樣在1990年代中期就有網際網路可用,但除了特定的幾個FTP站點(還有人記得sunsite.unc.edu的FTP嗎?或Gopher?)以外,當時的網路並沒有太多對我的工作有用的資訊,大多是一些閃爍的標題文字以及The Hampster Dance(它直到現在都還存在呢!);而亞馬遜(Amazon)也還只是當時世界上最大的河流。那時也還沒有Embedded.com或EETimes.com。為了學習軟體和硬體的最佳實作途徑,我晚上還在進修MSEE和CS課程,同時也常參與嵌入式系統大會(ESC)。
當時,我記得也沒有任何有關嵌入式編程的書籍。我發現有關C語言的每一本書都是從寫"Hello, World"開始介紹起,但都十分抽象,最後也都未能提到如何解決週邊控制、中斷服務程序、連接組合語言程序與作業系統(無論是否為RTOS)等問題。因此,多年後當Jack Ganssle問我時,我不知哪來的勇氣認為自己能夠針對嵌入式C編程領域所欠缺的部份撰寫一本書,後來也真的和O'Reilly簽約,開始著手寫書──但我並沒在這本書一開始,而是到了最後才介紹用 RS-232 移植編寫"Hello, World"。
到了1998年,在多次參與嵌入式系統大會後,有機會認識了《Embedded System Design》的主編Lindsey Vereen。除了寫書以外,我還曾經為《Embedded System Design》寫過幾篇文章,因而Lindsey已經對於我解釋技術差異的能力留下深刻印象。不過,當Lindsey告訴我他正在尋找一位技術編輯人選時,那時還不知道他屬意的人就是我。
未來的發展趨勢
從我第一次接觸到這本雜誌,就與它結下了不解之緣;接著先是技術編輯到後來成為主編及其後的特約編輯,這一直是我在個人職業生活中最精彩的一部份。在這本《Embedded System Design》創辦後的前十年,我自己就是這本雜誌及其中許多專欄作家和特約編輯的忠實讀者,到了第二個十年,我認為自己的努力更有助於使其成為一個提供讀者交換關鍵設計理念、實作以及產業學習時更有價值的討論場域。而今,儘管我能瞭解為什麼這本雜誌光靠現有的平面廣告再也撐不下去了,但對於它結束發行還是感到傷心與不捨。
回想過去的這段時光,嵌入式軟體設計領域真的發生了許多改變。時至今日,組合語言已經很少被用到了,C和C++就更不用說了。 EPROM 及其元件編程器與UV擦除器已被快閃記憶體與開機載入程式所取代。匯流排寬度與記憶體容量也顯著地增加了。昂貴的電路模擬器與 ROM 監示器已經轉型為較便宜的JTAG除錯。 ROM-DOS 已被微軟的任何嵌入式Windows作業系所取代。而開放來源的Linux由於發展得相當不錯,不但限制 RTOS 產業的成長,同時也成為我們期望能更專精以便為履歷表加分的技術。
那麼,未來將會發生什麼呢?嵌入式編程人員在2020年、2030年或2040時的日常生活與體驗又會是什樣子的呢?在此,我提出將影響未來這些時間點的三大發展趨勢,特別是其中每一個趨勢已經開始發生了。
趨勢一:32位元CPU實現大量應用
我的第一個預測是低成本、低功耗且高整合的微控制器將為32位元帶來最高度的大量應用領域──最佳例子就是當今的ARM Cortex-M 系列。8位元和16位元 CPU 將隨元件過時逐漸減少應用量。雖然你可能已在為32位元處理器編程,而發現目前仍是8位元與16位元處理器推動整體 CPU 晶片銷售量的現況,但其實我指的是像基於 8051 及其它30-40前前那種指令集架構的微處理器。這些舊式架構在今日仍十分普遍,只是因為特定嵌入式處理所需的低利潤、大量應用必須竭盡所能地節省BOM成本的每一分錢。
8位元和16位元架構的限制對於必須使用它們的嵌入式系統開發人員帶來許多方面的挑戰。首先,由於有限的位址匯流排寬度導致記憶體容量受限、還有記憶體庫、分割技術以及其他設法超越那些限制的變通辦法。其次,這些 CPU 在決策方面的效果優於其數學運算──這是因為缺乏有效處理較大整數的能力,而且也沒有浮點運算性能。最後,這些舊式的處理器也缺乏能夠執行像Linux等大型網際網路作業系統的能力,同時也缺乏由 MMU 所提供的安全與可靠性保護。
當然,總會存在許多相當具成本限制的運算應用,所以我的預期並不是指8位元和16位元架構被完全淘汰,而是基於先進指令集架構與電晶體幾何的32位元微處理器整體價格(包括BOM成本與功耗)逐漸下滑,最後將會贏在價格上。這將可為設計人員帶來更充裕的電腦運算性能,並有助於簡化工作。
趨勢二:複雜度推動C以外的語言發展
我的第二個預測是C編程語言在嵌入式系統領域佔優勢主導地位的美好時光已經屈指可數了。
請不要誤會我的意思,C語言是一種我更能掌握且很喜歡的編程語言。但是,正如你可能知道的,C根本就無法勝任打造需要超過1百萬條程式碼的系統。然而,1百萬多行程式碼的系統卻是長久以來推動編程領域的嵌入式軟體所需的複雜程度。有些事情就是得具有一定的複雜度。
此外,還有嵌入式系統開發人員平均年齡迅速在增加中,而C語言通常不再於大學課程中教授等等迫在眉睫的問題。因此,即使每個產業對於嵌入式智慧的要求越來越高,熟悉或有經驗的C語言編程人員人數卻在不斷減少中。有些事也得要有人員才能完成啊!
但是,什麼樣的替代語言可用於建立即時軟體、直接地操縱硬體,以及快速地移植到眾多指令集架構呢?它當然不會是 C++ 或 Ada 或 Java ──這些都已經被試過,而且發現其不足之處了。然而,在經歷過許多CPU產品系列以及試過這麼多其它語言後,開發一種新的編程語言可能也不見得是我們想要的答案。
因此,根據系統規格來看,我預期能為我們可靠地自動生成數百萬行C程式碼的工具,最終將成為新的替代方案。以目前符合這種趨勢的現有工具來看,我們可以密切注意Miro Same用於事件導向編程的開放來源 Quantum Platform 架構及其免費的 Quantum Model 繪圖建模工具選項。你可能並不喜歡當今自動生成程式碼的作法,但我保證一旦你在為狀態機架構進行編程時,你將看到這整個結構的好處,以及它可為編程帶來的效率。
對於這一類的工具而言,我認為C語言是一種相當普遍的輸出語言,這是因為C語言能直接操縱硬體暫存器,而且為大量市場開發的每一種處理器都有相容的編譯器可用。其實我真的期望持續要求具有技能與興趣的人員能為其協助調整程式碼生成或編寫元件驅動器的性能,使其得以更密切地整合於硬體中。
趨勢3:連接性提升安全的重要性
越來越多的嵌入式系統之間密切地彼此互連,並連接到網際網路。你可能聽說過「物聯網」(Internet of Things;IoT)以及「泛在運算」(ubiquitous computing),也可能已經把 TCP / IP 加進你的設計中。但連接性還有太多我們從未瞭解到的層面,或許其中最明顯的就是安全性。
互連的設備離不開安全性,因此,我們必須從一開始就為連接設備加進安全性的設計。觀察這整個產業,大多數的嵌入式設計人員很大程度上並不熟悉安全性。當然你已經讀過加密演算法,也知道幾個相關的技術名詞。但大部份的嵌入式社群就和安全性設計人員一樣地似懂非懂,而其組織也無法為其帶來太多協助。安全性的強度僅僅和這一系統鏈中最薄弱的環節一樣。
這種狀況必須改變。正如快閃記憶體取代UV可擦除的 EPROM 一樣,在未來的幾十年,透過網路下載增補程式與軟體升級也將成為主要的機制。我們首先必須架構出安全的系統,然後才可能安全地進行下載,從而使我們的產品有能力免於駭客的威脅與攻擊。
結語
無論未來的情況如何發展,我確定嵌入式軟體開發仍將會是一個具吸引力與挑戰性的專業領域。而且你也會看到我繼續在Embedded.com、EmbeddedGurus.com以及twitter.com/embeddedbarr發表有關嵌入式領域的相關文章。
本文作者Michael Barr是Barr Group的技術長,專精於安全且可靠的即時運算嵌入式軟體架構。Michael Barr曾任教於馬里蘭大學(University of Maryland)與約翰霍普金斯大學(Johns Hopkins University);他還曾發表過三本書,以及超過65篇有關嵌入式系統設計專文。
編譯:Susan Hong
(參考原文:Trends in embedded software design,by Michael Barr)
相關文章 今日焦點
彌補人才訓用落差 嵌入式系統能力檢定測驗首度試考 添加高性能運算 嵌入式系統迎接全新發展機遇 防駭客攻擊 嵌入式系統升級連網安全性 IDC:智慧系統為嵌入式系統催生新應用 ST將於2011年嵌入式系統大會展示新一代嵌入式技術 NI發表2012年嵌入式系統與自動化測試展望報告 Silicon Labs MCU延長無線嵌入式系統65%電池壽命 英特爾:嵌入式系統的未來更「智慧」 艾訊推出強固型Din-rail無風扇嵌入式系統 嵌入式系統市場成長動能強勁 小型機種最受歡迎
相關文章 今日焦點薄型化需求帶動 壓克力薄膜在偏光片市場佔比漸增 DisplaySearch:2012年液晶電視機出貨量將呈現下滑 全球EDA市場2012年第一季營收成長6.3% ABI:室內小型基地台市場2013年可恢復成長 SEMI:2012年全球半導體設備營收可達424億美元 需求穩定 台灣太陽能廠商6月營收亮眼 大廠投入量產 LPDDR3將成行動式記憶體主流 評論:ASML這次學聰明了 三大應用需求不如預期 大尺寸面板價格持平 ASML發投資邀請函 台積電、三星評估中 EE部落格推薦文章
專家觀點:電磁輻射會破壞DNA嗎? 分析師:台發展AMOLED仍需克服關鍵材料挑戰 三星整併面板事業 預告AMOLED大戰開打? ISSCC:英特爾揭露Ivy Bridge晶片細節 全球觀察:印度晶圓廠大夢何時成真? 編輯觀點:三星分割LCD業務是明智之舉嗎?
投票數: 8 加入我的最愛 ABI:醫療用可穿戴式無線裝置市場潛力...我來評論 - EE人生:我走過的嵌入式軟體開發之路
用戶名: 遊客 (您目前以遊客身份發表,請 登陸 | 註冊)
評論:
* 您還能輸入1000個字
*驗證碼:
有[4]名讀者發表評論 - EE人生:我走過的嵌入式軟體開發之路
網友:
JasonWu123 2012-7-13 14:24
評論: 原文標題: Trends in embedded software design 翻譯成: 我走過的嵌入式軟體開發之路有點文不對題,全文的重點還是在: 嵌入式軟體設計的未來發展趨勢。
網友:
pttpop 2012-7-13 11:1
評論: 我走過的崁入式(韌體+硬體) 從8-16-32 運氣好.剛好都被我走過.從學校接觸8,到公司接觸16.又很興奮的接觸32,到平淡看待32.到現在看到完善的test code. 目前很感慨的一種想法,因完善的TestCode導致的現象.開發者只要能寫,功能會動.不用在理解原理.雖然能夠加速產品研發.但也導致品質降低跟專業知識不足,也造成只要想寫韌體,人人都可以寫. 以公司角度來說.賺錢重要,品質其次.這應該是導致韌體開發人員,越來越沒價值的原因之一. 趨勢一:32位元CPU實現大量應用這點非常同意.因為處理的容量越來越龐大複雜.光靠8,16bitCPU,是不夠的.加上面積要求越來越小.想要大容量.又要面積小.又要快,就是朝向更高的匯流排. 32bitCPU,就是分水嶺.區隔舊世代與新世代的界限.當你會用到32bit的時候.往後 32,64,128...CPU時,對你來說差異只在於容量及速度的差異.跟程式寫法已經越來越沒關係. 趨勢二:複雜度推動C以外的語言發展 C++,C 應該是目前大家最能接受的程式語言.簡單.但是效能上,要看工程師的方式. 但推測未來應該接觸程式語言的機率更低,因將會出現完善的模組式設計開發軟體,就更繪圖軟體一樣,是應用者,不再是開發者.因為大多數公司,不希望研發時間太長.也不需要創新,所以在功能上.不會有太多變化. 趨勢3:連接性提升安全的重要性就目前崁入式系統中.除了跟PC有關聯的產品外.我想沒有一個產品會針對這問題做任何加強.連我在內.自己都不知道崁入式安全性的重要.崁入式大多數都是很開放的設計方式(外掛flash,RAM).如果要擋駭客.說實在我還真不知道怎麼做.因為JTAG就是一個入口,任何人都可以用.跟PC不同.永遠都會有一套完整軟體檔在前面.想要破解的人難度會更高些.只能說沒有完美安全.只有比較難破解安全. 總結未來崁入式設計一定是朝向多核心架構. 雖然我還沒有寫過多核心的程式,只寫過很多顆CPU互相溝通.但多核心就我的概念上就是加速運算.應該不是寫很多顆的程式吧?如果是寫很多顆程式.那應該就叫做多顆CPU合成IC.應該就不是叫多核心CPU吧.
網友:
禮謙 2012-7-13 9:51
評論: 是啊...崁入式系統漸漸的和一般的個人電腦越來越接近了
網友:
CYKuo 2012-7-13 9:18
評論: 我也有同樣的看法. 我以前300MHz AMD K6, 64MB 記憶體, 1G HD, 就能跑動 Win98 這種 "PC" 級軟體. 舉 AMD K6 只是因為這是我第一個能用網路卡上網的機器, 差不多與現在工作用的嵌入式處理器功能相當(並不是比運算能力, 即使比運算能力, 嵌入式處理器還是比它強). 其他更早的486, 286, Apple II就別提了, 僅管他們也是 "PC". 所以, 若是期待嵌入式軟體設計還是會停留古早手工打造的時代, 其實漸漸有點不切實際了. 過去 PC 等級的設計方式的變遷(包括程式語言發展)一定會複製在嵌入式應用的 "主流" 發展歷程上 - 當硬體運算速度已不成問題時, 要比的是軟體發展速度了.
進入評論專區 相關家族留言相關辭彙話題 家族名稱
澳洲國防部導入Adobe Creative Suite 6 強化國防資訊戰力 TI Fans club
VMware推出Zimbra 8.0幫助企業快速通往雲端 TI Fans club
萊迪思宣佈與聯華電子建立戰略夥伴關係 TI Fans club
TE Connectivity全新按壓/彈出式SIM卡連接器 TI Fans club
IBM全球CEO調查報告:經濟平穩不再是常態 互聯經濟為市場新動能 TI Fans club
什麼是嵌入式系統?
嵌入式系統(Embedded System),是一種完全嵌入於受控元件內部,為特定應用設計的專用電腦系統。與個人電腦這類的通用電腦系統不同,嵌入式系統通常執行的是帶有特定要求的預先定義任務。由於嵌入式系統只針對一項特殊的任務,設計人員便能夠對它進行最佳化,減小尺寸降低成本。嵌入式系統的核心是由一個或幾個預先編程好執行少數幾項任務的微處理器或者微控制器組成。與通用電腦能夠任意執行使用者安裝的軟體不同,嵌入式系統上的軟體通常是暫時不變的,所以經常稱為「韌體(firmware)」。
- Jul 15 Sun 2012 23:44
[記事]EE人生:我走過的嵌入式軟體開發之路
close
全站熱搜
留言列表
發表留言