在過去兩個(gè)世紀(jì),硬件編程已取得了巨大進(jìn)步,19世紀(jì)早期發(fā)明的提花織機(jī)系統(tǒng)可以被看作是第一個(gè)工業(yè)規(guī)模的硬件編程案例。工程師們通過使用一連串的打孔卡片系統(tǒng)來設(shè)置他們想要編織的圖案(參見圖1)。這一發(fā)明使發(fā)明家JosephMarieJacquard成為紡織業(yè)的知名人物,并展示了硬件編程取得很大進(jìn)展。如今,他的名字已成為他在織布機(jī)上制作出的織物類型的代稱。
圖1.提花織機(jī)使用一系列打孔卡片來簡(jiǎn)化制造具有復(fù)雜圖案的紡織品,如錦緞、綾和馬特拉塞提花織物
近200年見證了向更可編程硬件發(fā)展的趨勢(shì)。機(jī)械自動(dòng)化首先轉(zhuǎn)型為可編程,隨后轉(zhuǎn)向機(jī)械電子和電子邏輯,最后由微控制器、微處理器和軟件實(shí)現(xiàn)了嵌入式控制。今天,各種機(jī)器和設(shè)備的可編程性取決于不同的應(yīng)用和行業(yè),涵蓋從完全不可編程的固定功能設(shè)備到完全可編程和可升級(jí)的設(shè)備,如智能手機(jī)等。
傳統(tǒng)的可編程硬件設(shè)計(jì)方式很大程度上沿襲了工程設(shè)計(jì)方式,在某種程度上,嵌入式設(shè)備是在模擬過去使用機(jī)械或機(jī)電方式完成的工作。公用儀表就是一個(gè)很好的例子:起初,電表簡(jiǎn)單取代了機(jī)械儀表,使用LCD顯示器代替印著號(hào)碼的轉(zhuǎn)輪以優(yōu)化成本和提高可靠性,之后又增加了更多功能,如自動(dòng)抄表加了進(jìn)來以減少了運(yùn)營(yíng)成本而沒有改變儀表的用途或使用場(chǎng)景。
將嵌入式軟件或?qū)崟r(shí)軟件應(yīng)用到這些設(shè)備需要專業(yè)技能,而這些知識(shí)在大學(xué)的課程中是很少學(xué)到的,一般在工作上才能學(xué)到。嵌入式軟件開發(fā)和硬件開發(fā)一樣需要大量的專業(yè)知識(shí),原因有二。首先,修復(fù)嵌入式軟件錯(cuò)誤成本非常高,因?yàn)樵O(shè)備很難升級(jí)。其次,許多嵌入式設(shè)備必須符合嚴(yán)格的安全規(guī)范,這需要額外的專業(yè)知識(shí)和時(shí)間資源,以確保符合IEC61508、IEC62304、UL60730-1H、CSAE60730-1H、IEC60730-1H、UL60335-1R、IEC60335-1R、UL1998等規(guī)范。
然而,在物聯(lián)網(wǎng)(IoT)的趨勢(shì)推動(dòng)下,嵌入式軟件開發(fā)模式正在發(fā)生一場(chǎng)無聲的變革,并且每天都在不斷發(fā)展壯大。隨著設(shè)備間的互聯(lián)日益緊密,這些設(shè)備突然就全面開放了。好的物聯(lián)網(wǎng)設(shè)備必須允許開發(fā)人員必須能夠通過定義良好的API進(jìn)行訪問,如NEST、Fitbit和Withings(諾基亞)數(shù)字健康等應(yīng)用。相反,任何聯(lián)網(wǎng)設(shè)備都可以訪問云端近乎無限的資源。隨著語(yǔ)音識(shí)別、人工智能和個(gè)人助理功能(如亞馬遜Alexa)越來越普及,這些給傳統(tǒng)嵌入式設(shè)備帶來了新的應(yīng)用空間。
因此,新一代開發(fā)人員(互聯(lián)網(wǎng)開發(fā)者社區(qū))開始研究這些新設(shè)備。他們從開發(fā)板入手,使用他們所擅長(zhǎng)的工具開發(fā)——ObjectOriented編程、API、腳本和框架(如Java、JavaScript、Python、Lua、JSON和RESTAPI)。為了驗(yàn)證嵌入式開發(fā)的易用性,Arduino平臺(tái)(基于Wiring和C++)對(duì)對(duì)象語(yǔ)言概念(如方法和屬性)進(jìn)行普及。RaspberryPi讓每個(gè)人都可以使用Linux和Python。它們教用戶如何使用包含預(yù)定框架的集成工具,讓編寫簡(jiǎn)單的應(yīng)用程序輕松得像“在公園里散步”。
這個(gè)全新的開發(fā)者社區(qū)正在重塑嵌入式的世界,使得硬件趨于“軟件化”。他們迫使嵌入式工程師像軟件開發(fā)人員一樣研究其他對(duì)IT系統(tǒng)和Web應(yīng)用程序有效的技術(shù)。例如,瑞薩電子的合作伙伴之一MediumOne,這家初創(chuàng)IoT公司能夠利用云端的Python腳本對(duì)現(xiàn)場(chǎng)設(shè)備進(jìn)行編程,這簡(jiǎn)直令人難以置信。
重復(fù)做已經(jīng)做過的事情的時(shí)代已經(jīng)過去了,嵌入式行業(yè)有能力徹底改變定義和設(shè)計(jì)產(chǎn)品的方式。在當(dāng)今激烈的市場(chǎng)競(jìng)爭(zhēng)中,工程師必須善于重復(fù)使用經(jīng)過驗(yàn)證、具有高抽象度的產(chǎn)品化的軟件組件。以前,這些組件主要由特定的公司提供而且非常昂貴,不過一些成本較低的替代方案讓他們更容易被用戶獲得,例如開源方式,雖然開源同時(shí)也會(huì)帶來未知的質(zhì)量問題和其他風(fēng)險(xiǎn)。另一種選擇是與芯片制造商合作,他們會(huì)將專業(yè)軟件與其硬件設(shè)備集成在一起,納入統(tǒng)一的平臺(tái)成本結(jié)構(gòu)。
這種“軟件化”趨勢(shì)會(huì)將傳統(tǒng)固件開發(fā)人員轉(zhuǎn)變?yōu)橐粋€(gè)非常專業(yè)化的群體,就像硬件開發(fā)人員現(xiàn)在已經(jīng)是嵌入式開發(fā)團(tuán)隊(duì)的一個(gè)專業(yè)的細(xì)分部分。他們的職責(zé)是確保在硬件上能夠運(yùn)行完整的電路板支持包(BSP),并且?guī)椭絹碓蕉嗟能浖_發(fā)人員使用框架和高級(jí)語(yǔ)言編寫應(yīng)用程序和腳本。
這種趨勢(shì)還拓寬了嵌入式開發(fā)人員的職業(yè)道路。以下是核心知識(shí)幫助適應(yīng)這種轉(zhuǎn)換:
-了解如何使用中間件和RTOS,這些是成為硬件工程師的基本知識(shí)要求。
-學(xué)習(xí)使用架構(gòu)。汽車開發(fā)使用Autosar,工業(yè)開發(fā)人員可以從嵌入式Linux開始,例如從開發(fā)一款Android或IOS應(yīng)用程序,甚至是MinecraftMod,來理解架構(gòu)開發(fā)好的方式。
-研究開發(fā)板。雖然看起來像玩具,但它們提供的可能性令人贊嘆。
-如果想訓(xùn)練軟件方面的技能,可以嘗試使用C++、Java和ObjectiveC等對(duì)象語(yǔ)言,并嘗試使用XML等標(biāo)記語(yǔ)言以及JavaScript、Python或Lua等腳本語(yǔ)言??梢韵葟囊苿?dòng)應(yīng)用程序或Web入門,很快就會(huì)接觸到使用更小的微控制器的嵌入式選項(xiàng)。
-熟悉RESTfullAPI和JSON數(shù)據(jù)格式。它們是互聯(lián)網(wǎng)通信的基礎(chǔ),大多數(shù)物聯(lián)網(wǎng)服務(wù)都會(huì)使用到其中一種。
開發(fā)者社區(qū)提供互動(dòng)的同行交流,可以用來提升軟件技巧,特別是圍繞著新的嵌入式框架進(jìn)行合作,使用如圖2所示的RenesasSynergy?Platform,或使用MediumOne開發(fā)的IoTSandbox。
圖2.RenesasSynergyPlatform是一個(gè)完整、優(yōu)質(zhì)的平臺(tái),提供全套集成軟件、可擴(kuò)展的MCU產(chǎn)品系列、統(tǒng)一的開發(fā)工具以及使用簡(jiǎn)單的開發(fā)套件和參考軟件
對(duì)于用戶來說,可以決定加入變革并成為一名應(yīng)用軟件開發(fā)者,挑戰(zhàn)更高級(jí)別的框架,也可以選擇留在硬件/固件層面,而此時(shí),了解軟件開發(fā)人員的需求也將成為物聯(lián)網(wǎng)時(shí)代嵌入式工程師的基本要求。
本文來源:瑞薩電子株式會(huì)社 作者:SemirHaddad