我的嵌入式軟件開發(fā)之路 注:本文作者Michael Barr是Barr Group的技術(shù)長(zhǎng),專精于安全且**的即時(shí)運(yùn)算嵌入式軟件架構(gòu)。Michael Barr曾任教于馬里蘭大學(xué)(University of Maryland)與約翰霍普金斯大學(xué)(Johns Hopkins University);他還曾發(fā)表過三本書,以及**過65篇有關(guān)嵌入式系統(tǒng)設(shè)計(jì)專文。 隨著專為嵌入式系統(tǒng)編程人員所設(shè)計(jì)的《Embedded System Design》平面雜志劃下句點(diǎn),我們較能看出未來(lái)的嵌入式軟件設(shè)計(jì)趨勢(shì)將較強(qiáng)調(diào)自動(dòng)生成的代碼,而不再那么重視手寫編程了。 《Embedded System Design》較早在1988年以《Embedded Systems Programming》(ESP)的名稱出刊時(shí),我才剛高中畢業(yè)。就像當(dāng)時(shí)大多數(shù)人一樣,我從來(lái)沒聽說過“嵌入式系統(tǒng)”一詞,也沒想太多深藏于另一種產(chǎn)品中的電腦形式。六年后,我**了電子工程師的學(xué)位,也像1990年代中期的許多電子工程師一樣找到了一份嵌入式軟件設(shè)計(jì)工作(而非硬件設(shè)計(jì))。不久,我在一位同事的辦公桌上看到了這本雜志,馬上就訂閱而且成了忠實(shí)讀者。 早期發(fā)展 1990年代初的情形就和現(xiàn)在一樣,學(xué)校中從來(lái)沒教過如何編寫出**的嵌入式軟件等**知識(shí)。我在大學(xué)中一上過一門有關(guān)編程的課就是FORTRAN;后來(lái)才知道曾有過兩次實(shí)作課程學(xué)習(xí)匯編語(yǔ)言和C語(yǔ)言編程就是我在編寫嵌入式軟件方面僅有的正規(guī)教育。我大多經(jīng)由工作以及這份雜志的內(nèi)容學(xué)習(xí),從這些篇章間**次學(xué)會(huì)了如何編寫元件驅(qū)動(dòng)程序、移植并使用操作系統(tǒng)、滿足即時(shí)的期限要求、建置有限狀態(tài)機(jī)等技巧,以及除C和匯編語(yǔ)言以外其它編程語(yǔ)言的優(yōu)缺點(diǎn)、遠(yuǎn)端除錯(cuò)與JTAG等等。 在那個(gè)時(shí)代,擔(dān)任固件開發(fā)人員的我每天日常工作就是和英特爾hex文件、元件編程器、UV擦除器、僅kb容量的存儲(chǔ)器、8/16位處理器、電路模擬器與ROM監(jiān)視器等東西打交道。數(shù)據(jù)手冊(cè)有如就像書本一樣地多又厚,全部集中在一起的話就可以占滿整個(gè)書架。我在我的辦公桌上的HP-UX工作站編寫固件程序,后來(lái)**到樓下實(shí)驗(yàn)室去燒芯片,插入原型板中,再用ICE進(jìn)行測(cè)試與除錯(cuò)。我還記得有一個(gè)特別棘手的專案,所用的編譯器和元件編程器距離一可用的目標(biāo)硬件8英哩遠(yuǎn);而一個(gè)單色的紅光LED和一款滿是灰塵的示波器就堆在我的除錯(cuò)工具箱附近。 我也和你一樣在1990年代中期就有互聯(lián)網(wǎng)可用,但除了特定的幾個(gè)FTP站點(diǎn)(還有人記得sunsite.unc.edu的FTP嗎?或Gopher?)以外,當(dāng)時(shí)的網(wǎng)絡(luò)并沒有太多對(duì)我的工作有用的信息,大多是一些閃爍的標(biāo)題文字以及The Hampster Dance(它直到現(xiàn)在都還存在呢!);而亞馬遜(Amazon)也還只是當(dāng)時(shí)世界上較大的河流。那時(shí)也還沒有或。為了學(xué)習(xí)軟件和硬件的較佳實(shí)作途徑,我晚上還在進(jìn)修MSEE和CS課程,同時(shí)也常參與嵌入式系統(tǒng)大會(huì)(ESC)。 當(dāng)時(shí),我記得也沒有任何有關(guān)嵌入式編程的書籍。我發(fā)現(xiàn)有關(guān)C語(yǔ)言的每一本書都是從寫"Hello, World"開始介紹起,但都十分抽象,最后也都未能提到如何解決周邊控制、中斷服務(wù)程序、連接匯編語(yǔ)言程序與操作系統(tǒng)(無(wú)論是否為RTOS)等問題。因此,多年后當(dāng)Jack Ganssle問我時(shí),我不知哪來(lái)的勇氣認(rèn)為自己能夠針對(duì)嵌入式C編程領(lǐng)域所欠缺的部份撰寫一本書,后來(lái)也真的和O'Reilly簽約,開始著手寫書─ ─但我并沒在這本書一開始,而是到了最后才介紹用RS-232 移植編寫"Hello, World"。 到了1998年,在多次參與嵌入式系統(tǒng)大會(huì)后,**會(huì)認(rèn)識(shí)了《Embedded System Design》的主編Lindsey Vereen。除了寫書以外,我還曾經(jīng)為《Embedded System Design》寫過幾篇文章,因而Lindsey已經(jīng)對(duì)于我解釋技術(shù)差異的能力留下深刻印象。不過,當(dāng)Lindsey告訴我他正在尋找一位技術(shù)編輯人選時(shí),那時(shí)還不知道他屬意的人就是我。 未來(lái)的發(fā)展趨勢(shì) 從我**次接觸到這本雜志,就與它結(jié)下了不解之緣;接著先是技術(shù)編輯到后來(lái)成為主編及其后的**編輯,這一直是我在個(gè)人職業(yè)生活中較精彩的一部份。在這本《Embedded System Design》創(chuàng)辦后的**年,我自己就是這本雜志及其中許多專欄作家和**編輯的忠實(shí)讀者,到了*二個(gè)十年,我認(rèn)為自己的努力較有助于使其成為一個(gè)提供讀者交換關(guān)鍵設(shè)計(jì)理念、實(shí)作以及產(chǎn)業(yè)學(xué)習(xí)時(shí)較有**的討論場(chǎng)域。而今,盡管我能了解為什么這本雜志光靠現(xiàn)有的平面廣告再也撐不下去了,但對(duì)于它結(jié)束發(fā)行還是感到傷心與不舍。 回想過去的這段時(shí)光,嵌入式軟件設(shè)計(jì)領(lǐng)域真的發(fā)生了許多改變。時(shí)至今日,匯編語(yǔ)言已經(jīng)很少被用到了,C和C++就較不用說了。EPROM及其元件編程器與UV擦除器已被閃存與開機(jī)載入程序所取代。總線寬度與存儲(chǔ)器容量也顯著地增加了。昂貴的電路模擬器與ROM監(jiān)示器已經(jīng)轉(zhuǎn)型為較便宜的JTAG除錯(cuò)。ROM-DOS已被微軟的任何嵌入式Windows操作系統(tǒng)所取代。而開放來(lái)源的Linux由于發(fā)展得相當(dāng)不錯(cuò),不但限制RTOS產(chǎn)業(yè)的成長(zhǎng),同時(shí)也成為我們期望能較專精以便為簡(jiǎn)歷加分的技術(shù)。 那么,未來(lái)將會(huì)發(fā)生什么呢?嵌入式編程人員在2020年、2030年或2040時(shí)的日常生活與體驗(yàn)又會(huì)是什樣子的呢?在此,我提出將影響未來(lái)這些時(shí)間點(diǎn)的三大發(fā)展趨勢(shì),特別是其中每一個(gè)趨勢(shì)已經(jīng)開始發(fā)生了。 趨勢(shì)一:32位CPU實(shí)現(xiàn)大量應(yīng)用 我的**個(gè)預(yù)測(cè)是低成本、低功耗且高整合的微控制器將為32位帶來(lái)較高度的大量應(yīng)用領(lǐng)域──較佳例子就是當(dāng)今的ARM Cortex-M系列。8位和16位CPU將隨元件過時(shí)逐漸減少應(yīng)用量。雖然你可能已在為32位處理器編程,而發(fā)現(xiàn)目前仍是8位與16位處理器推動(dòng)整體CPU芯片銷售量的現(xiàn)況,但其實(shí)我指的是像基于8051及其它30-40年前那種指令集架構(gòu)的微處理器。這些舊式架構(gòu)在今日仍十分普遍,只是因?yàn)樘囟ㄇ度胧教幚硭璧牡屠麧?rùn)、大量應(yīng)用**竭盡所能地節(jié)省BOM成本的每一分錢。 8位和16位架構(gòu)的限制對(duì)于**使用它們的嵌入式系統(tǒng)開發(fā)人員帶來(lái)許多方面的挑戰(zhàn)。首先,由于有限的位址總線寬度導(dǎo)致存儲(chǔ)器容量受限、還有存儲(chǔ)器庫(kù)、分割技術(shù)以及其他設(shè)法追趕那些限制的變通辦法。其次,這些CPU在決策方面的效果**其數(shù)學(xué)運(yùn)算──這是因?yàn)槿狈τ行幚磔^大整數(shù)的能力,而且也沒有浮點(diǎn)運(yùn)算性能。最后,這些舊式的處理器也缺乏能夠執(zhí)行像Linux等大型互聯(lián)網(wǎng)操作系統(tǒng)的能力,同時(shí)也缺乏由MMU所提供的安全與**性保護(hù)。 當(dāng)然,總會(huì)存在許多相當(dāng)具成本限制的運(yùn)算應(yīng)用,所以我的預(yù)期并不是指8位和16位架構(gòu)被*淘汰,而是基于**指令集架構(gòu)與晶體管幾何的32位微處理器整體價(jià)格(包括BOM成本與功耗)逐漸下滑,最后將會(huì)贏在價(jià)格上。這將可為設(shè)計(jì)人員帶來(lái)較充裕的電腦運(yùn)算性能,并有助于簡(jiǎn)化工作。 趨勢(shì)二:復(fù)雜度推動(dòng)C以外的語(yǔ)言發(fā)展 我的*二個(gè)預(yù)測(cè)是C編程語(yǔ)言在嵌入式系統(tǒng)領(lǐng)域占優(yōu)勢(shì)主導(dǎo)地位的美好時(shí)光已經(jīng)**了。 請(qǐng)不要誤會(huì)我的意思,C語(yǔ)言是一種我較能掌握且很喜歡的編程語(yǔ)言。但是,正如你可能知道的,C根本就無(wú)法勝任打造需要**過1百萬(wàn)條代碼的系統(tǒng)。然而,1百萬(wàn)多行代碼的系統(tǒng)卻是長(zhǎng)久以來(lái)推動(dòng)編程領(lǐng)域的嵌入式軟件所需的復(fù)雜程度。有些事情就是得具有一定的復(fù)雜度。 此外,還有嵌入式系統(tǒng)開發(fā)人員平均年齡迅速在增加中,而C語(yǔ)言通常不再于大學(xué)課程中教授等等迫在眉睫的問題。因此,即使每個(gè)產(chǎn)業(yè)對(duì)于嵌入式智慧的要求越來(lái)越高,熟悉或有經(jīng)驗(yàn)的C語(yǔ)言編程人員人數(shù)卻在不斷減少中。有些事也得要有人員才能完成??! 但是,什么樣的替代語(yǔ)言可用于建立即時(shí)軟件、直接地操縱硬件,以及**地移植到眾多指令集架構(gòu)呢?它當(dāng)然不會(huì)是C++或Ada或Java──這些都已經(jīng)被試過,而且發(fā)現(xiàn)其不足之處了。然而,在經(jīng)歷過許多CPU產(chǎn)品系列以及試過這么多其它語(yǔ)言后,開發(fā)一種新的編程語(yǔ)言可能也不見得是我們想要的答案。 因此,根據(jù)系統(tǒng)規(guī)格來(lái)看,我預(yù)期能為我們**地自動(dòng)生成數(shù)百萬(wàn)行C程序碼的工具,較終將成為新的替代方案。以目前符合這種趨勢(shì)的現(xiàn)有工具來(lái)看,我們可以密切注意Miro Same用于事件導(dǎo)向編程的開放來(lái)源Quantum Platform架構(gòu)及其**的Quantum Model繪圖建模工具選項(xiàng)。你可能并不喜歡當(dāng)今自動(dòng)生成代碼的作法,但我**一旦你在為狀態(tài)機(jī)架構(gòu)進(jìn)行編程時(shí),你將看到這整個(gè)結(jié)構(gòu)的好處,以及它可為編程帶來(lái)的效率。 對(duì)于這一類的工具而言,我認(rèn)為C語(yǔ)言是一種相當(dāng)普遍的輸出語(yǔ)言,這是因?yàn)?/span>C語(yǔ)言能直接操縱硬件緩存,而且為大量市場(chǎng)開發(fā)的每一種處理器都有兼容的編譯器可用。其實(shí)我真的期望持續(xù)要求具有技能與興趣的人員能為其協(xié)助調(diào)整代碼生成或編寫元件驅(qū)動(dòng)器的性能,使其得以較密切地整合于硬件中。 趨勢(shì)3:連接性提升安全的重要性 越來(lái)越多的嵌入式系統(tǒng)之間密切地彼此互連,并連接到互聯(lián)網(wǎng)。你可能聽說過“物聯(lián)網(wǎng)”(Internet of Things;IoT)以及“普適計(jì)算”(ubiquitous computing),也可能已經(jīng)把TCP/IP加進(jìn)你的設(shè)計(jì)中。但連接性還有太多我們**了解到的層面,或許其中較明顯的就是安全性。 互連的設(shè)備離不開安全性,因此,我們**從一開始就為連接設(shè)備加進(jìn)安全性的設(shè)計(jì)。觀察這整個(gè)產(chǎn)業(yè),大多數(shù)的嵌入式設(shè)計(jì)人員很大程度上并不熟悉安全性。當(dāng)然你已經(jīng)讀過加密算法,也知道幾個(gè)相關(guān)的技術(shù)名詞。但大部份的嵌入式社群就和安全性設(shè)計(jì)人員一樣地似懂非懂,而其組織也無(wú)法為其帶來(lái)太多協(xié)助。安全性的強(qiáng)度僅僅和這一系統(tǒng)鏈中較薄弱的環(huán)節(jié)一樣。 這種狀況**改變。正如閃存取代UV可擦除的EPROM一樣,在未來(lái)的幾十年,通過網(wǎng)絡(luò)下載升級(jí)程序與軟件升級(jí)也將成為主要的機(jī)制。我們****架構(gòu)出安全的系統(tǒng),然后才可能安全地進(jìn)行下載,從而使我們的產(chǎn)品有能力免于駭客的威脅與攻擊。 無(wú)論未來(lái)的情況如何發(fā)展,我確定嵌入式軟件開發(fā)仍將會(huì)是一個(gè)具吸引力與挑戰(zhàn)性的**領(lǐng)域。 8位MCU將死? 上文中Michael Barr預(yù)測(cè)32位處理器將較終擊敗或是*取代8位產(chǎn)品。獨(dú)立嵌入式開發(fā)講師和顧問Jack G. Ganssle對(duì)此撰文作了如下評(píng)論。 我還記得,1990年時(shí),一位分析師曾斬釘截鐵地對(duì)我說,8位已死,不久的將來(lái)將會(huì)是32位的天下。 Barr的文章引出了兩較化的意見,一位名為Chuck Manning的讀者認(rèn)為,32位的價(jià)格降低,將推動(dòng)更多小型低端產(chǎn)品的發(fā)展。過去,我也好幾次提出過同樣的觀點(diǎn)。當(dāng)你可以用一分錢就買到一顆8位元件時(shí),就可能再開啟一個(gè)今天我們都無(wú)法想像的廣大應(yīng)用市場(chǎng)。 Chuck 還指出,byte-wide處理器所吃的功率較少,而且能比32位處理器容忍較寬的電源電壓。這是實(shí)話,低功耗無(wú)疑是電子產(chǎn)業(yè)當(dāng)前的圣杯,不過,在可預(yù)見的未來(lái),我還沒看到任何能發(fā)展出無(wú)功耗CPU的跡象。 另一位讀者Miro Samek則說,“8位已經(jīng)沒有什么意義了。”他的理論基礎(chǔ)在于,CPU本身只是典型微處理器中的一小部份,其他很大部份是存儲(chǔ)器和周邊。關(guān)于這點(diǎn),來(lái)自支持與反對(duì)的意見很多。但基本上我不贊同這種說法。 確實(shí),今天一個(gè)采用40nm制程的Cortex-M0+所需的尺寸不到0.01 2。在晶體管開銷或晶粒尺寸等限制條件下,CPU本身較終將會(huì)成為較加微小的部份。 不過,就今天討論的主題而言,我們也看到了三個(gè)充滿矛盾和混亂的趨勢(shì): **,許多非常低端的元件,都是由已經(jīng)*折舊的“古董級(jí)”晶圓廠和制程所制造的。若未來(lái)這類元件要采用較**的制程,就**支付較高昂的制造費(fèi)用。 *二,還有另一種成本不會(huì)消失。讓我們面對(duì)現(xiàn)實(shí):未來(lái)的32位微控制器會(huì)是ARM的天下,而ARM的主要營(yíng)收來(lái)源是向每顆元件收取授權(quán)或權(quán)利金。這些數(shù)字諱莫如深,但我已聽到一些傳言,其Cortex元件要支付的費(fèi)用達(dá)數(shù)十美分。 即使所有其他費(fèi)用都零,但些元件仍然很難在價(jià)格較端敏感的應(yīng)用中競(jìng)爭(zhēng)。我一直認(rèn)為,ARM的較大的競(jìng)爭(zhēng)對(duì)手至今仍未出現(xiàn):即一個(gè)免收授權(quán)費(fèi)的開放源代碼CPU供應(yīng)商,而且還能支持所有的ARM產(chǎn)品。 這會(huì)發(fā)生嗎?或許吧。若真的出現(xiàn),它會(huì)成功嗎?從對(duì)專有工具的支持朝自由、開放的一端轉(zhuǎn)移,一直是半導(dǎo)體產(chǎn)業(yè)中的一個(gè)主要趨勢(shì),所以,一旦出現(xiàn)開放源代碼CPU,必然能符合制造商的發(fā)展模式。但確實(shí),我們很難看到這樣一個(gè)自由的轉(zhuǎn)移模式,如何創(chuàng)造出**的、大多與ARM兼容的生態(tài)系統(tǒng)。 *三,硅芯片成本將繼續(xù)下降,直到他們不再是低端微處理器要考慮的問題。屆時(shí)較花錢的部份會(huì)在封裝,但沒有理由**和低端微控制的封裝和接腳不兼容。想想六引腳的Cortex元件吧。 另外,我也不認(rèn)同Miro的說法:“我認(rèn)為,讓8位持續(xù)強(qiáng)大的主要原因與技術(shù)沒什么關(guān)系,而是來(lái)自于嵌入式開發(fā)社群的習(xí)慣。” 毫無(wú)疑問,這的確的事實(shí),但成本仍然是推動(dòng)工程決策的關(guān)鍵因素。不過,除了成本以外,還**考慮工具。我較近用了ARM幾款還不錯(cuò)的IDE,但它的成本高達(dá)數(shù)千美元。相較之下,Microchip的PIC工具就幾乎是**的了。當(dāng)然,你也可以拿GCC來(lái)開發(fā)ARM,并建立你自己的環(huán)境,但你所需要的時(shí)間和更多的**知識(shí)可能****過一家開發(fā)商所擁有的。 |
詞條
詞條說明
?我的嵌入式軟件開發(fā)之路 注:本文作者M(jìn)ichael Barr是Barr Group的技術(shù)長(zhǎng),專精于安全且**的即時(shí)運(yùn)算嵌入式軟件架構(gòu)。Michael Barr曾任教于馬里蘭大學(xué)(University of Maryland)與約翰霍普金斯大學(xué)(Johns Hopkins University);他還曾發(fā)表過三本書,以及**過65篇有關(guān)嵌入式系統(tǒng)設(shè)計(jì)專文。 隨著專為嵌入式系統(tǒng)編程人員所設(shè)
公司名: 深圳市威凱特科技
聯(lián)系人: 賀波
電 話: 0755-8301840
手 機(jī): 13267226992
微 信: 13267226992
地 址: 廣東深圳福田區(qū)深圳市福田區(qū)振中路鼎城**2501A
郵 編: 518000
網(wǎng) 址: hebo66409410.cn.b2b168.com
公司名: 深圳市威凱特科技
聯(lián)系人: 賀波
手 機(jī): 13267226992
電 話: 0755-8301840
地 址: 廣東深圳福田區(qū)深圳市福田區(qū)振中路鼎城**2501A
郵 編: 518000
網(wǎng) 址: hebo66409410.cn.b2b168.com