克服嵌入式開發(fā)的障礙
已經(jīng)創(chuàng)建了許多開發(fā)人員工具和支持的硬件和軟件產(chǎn)品,以幫助最大限度地降低嵌入式開發(fā)風(fēng)險(xiǎn),加快從小型消費(fèi)設(shè)備到高性能等各種產(chǎn)品的上市時(shí)間工業(yè)控制和遙感設(shè)備。即使入門也是一個(gè)挑戰(zhàn),因?yàn)檐浖_發(fā)取決于硬件是否準(zhǔn)備就緒。后續(xù)集成受到硬件和軟件之間的許多相互依賴性的影響,從設(shè)備驅(qū)動(dòng)程序,適配層和OS內(nèi)核向上到應(yīng)用程序接口(API)和應(yīng)用程序本身。雖然必須面對(duì)這些問題,但開發(fā)團(tuán)隊(duì)通常希望將他們的資源集中在應(yīng)用程序級(jí)別,以創(chuàng)建獨(dú)特的功能,從而使產(chǎn)品在市場(chǎng)中脫穎而出。
為了幫助克服一些早期障礙,芯片供應(yīng)商已經(jīng)創(chuàng)建了開發(fā)平臺(tái),可以解決許多硬件設(shè)計(jì)難題并加快開始處理軟件的過程。在選擇提供所有必需功能并接近理想配置的平臺(tái)后,團(tuán)隊(duì)可以在項(xiàng)目進(jìn)展時(shí)對(duì)硬件進(jìn)行微調(diào),以添加獨(dú)特或增值功能。最終,可以為生產(chǎn)目的創(chuàng)建定制的,小型化的硬件版本。
另一方面,可提供大量單板計(jì)算機(jī)(SBC)或計(jì)算機(jī)模塊(COM)硬件,采用流行的處理器架構(gòu),如x86,Intel?Atom?或ARM?,采用各種微型外形,如PC/104或Mini ITX。這些可以用作軟件開發(fā)的平臺(tái),然后在很少或不需要對(duì)硬件進(jìn)行進(jìn)一步修改的情況下擴(kuò)展到生產(chǎn)中。
任何嵌入式開發(fā)平臺(tái)都需要板級(jí)支持包(BSP)來提供必要的軟件用于控制特定于硬件的功能。 BSP的各種元素包括板上設(shè)備的驅(qū)動(dòng)程序,使OS能夠與板硬件通信的適配層,以及用于加載和啟動(dòng)OS的引導(dǎo)加載程序。由于存在將硬件與OS連接的各種軟件組件,因此創(chuàng)建BSP取決于操作系統(tǒng)及其特性的知識(shí)。
軟件選擇:Windows嵌入式路由
創(chuàng)建使用Microsoft?Windows?CE或Windows XP Embedded等框架的嵌入式操作系統(tǒng)映像和應(yīng)用程序軟件為產(chǎn)品開發(fā)人員提供了在商業(yè)支持的生態(tài)系統(tǒng)中工作的優(yōu)勢(shì)。這種方法的好處包括訪問現(xiàn)成的商業(yè)工具,如Visual Studio集成開發(fā)環(huán)境(IDE),其中包括用于設(shè)計(jì)和構(gòu)建自定義操作系統(tǒng)映像的Platform Builder工具集。開發(fā)人員可以使用此工具從目錄項(xiàng)菜單中僅選擇所需的功能,從而最大限度地減少對(duì)內(nèi)存等系統(tǒng)資源的需求,從而自定義操作系統(tǒng)映像。還有一些現(xiàn)成的設(shè)備驅(qū)動(dòng)程序列表可以快速輕松地合并,或者在必要時(shí)幫助構(gòu)建自定義驅(qū)動(dòng)程序。
因?yàn)镸icrosoft Embedded OS內(nèi)核和典型行為是已知的,所以第三方如電路板供應(yīng)商可以更輕松地提供所需的支持,如BSP,以幫助開發(fā)人員快速啟動(dòng)和運(yùn)行硬件。
除了BSP之外,還需要一個(gè)用于定制操作系統(tǒng)的軟件開發(fā)工具包(SDK)來幫助工程團(tuán)隊(duì)創(chuàng)建應(yīng)用程序軟件。 SDK提供必要的軟件,包括一組允許應(yīng)用程序與操作系統(tǒng)交互的應(yīng)用程序接口(API)。 Platform Builder工具集還包括一個(gè)應(yīng)用程序向?qū)?,可幫助硬件團(tuán)隊(duì)創(chuàng)建基本的示例應(yīng)用程序和動(dòng)態(tài)鏈接庫(DLL),這些應(yīng)用程序與SDK一起幫助應(yīng)用程序開發(fā)人員了解操作系統(tǒng)并使用eMbedded Visual等工具創(chuàng)建自己的自定義應(yīng)用程序C ++?。圖1說明了Windows Embedded CE開發(fā)中涉及的硬件和軟件組件。

圖1:Windows Embedded軟件將應(yīng)用程序與底層硬件連接起來。
Microsoft最近通過引入用于Windows CE .NET的標(biāo)準(zhǔn)SDK簡(jiǎn)化了跨設(shè)備應(yīng)用程序的編寫。這提供了一組基準(zhǔn)組件,開發(fā)人員只需將標(biāo)準(zhǔn)SDK作為組件包含在其Windows CE .NET設(shè)備中即可確保在其設(shè)備中使用。 eMbedded Visual C ++ 4.0及更高版本中包含對(duì)標(biāo)準(zhǔn)SDK的支持。
Advantech AIMB212D是硬件平臺(tái)的一個(gè)示例,非常適合開發(fā)基于Windows Compact Embedded(CE)或XP Embedded的設(shè)備( XPE),雖然它不僅限于Windows Embedded開發(fā)。該主板具有雙核Intel Atom CPU,PCI和PCie插槽,千兆以太網(wǎng)支持,多個(gè)串行和USB端口以及GPIO。研華為使用SUSIAccess的低級(jí)傳感器和云連接支持多種BIOS選項(xiàng),WinXP和Win7驅(qū)動(dòng)程序,實(shí)用程序和API。稍后會(huì)詳細(xì)介紹。
開源選擇
雖然Visual Studio現(xiàn)在支持Linux和iOS開發(fā)以及Windows Embedded,但Linux開發(fā)人員歷史上并沒有獲得商業(yè)支持的好處工具。盡管如此,開源開發(fā)帶來的自由以及與Linux交互的低前期成本是使Linux變得非常受歡迎的因素。事實(shí)上,大多數(shù)非桌面計(jì)算系統(tǒng)現(xiàn)在都運(yùn)行在某種形式的Linux操作系統(tǒng)上。
即便如此,開發(fā)基于Linux的設(shè)備可能更容易,更高效,更方便。例如,當(dāng)OS的屬性變化如此廣泛時(shí),硬件供應(yīng)商很難創(chuàng)建合適的BSP。創(chuàng)建標(biāo)準(zhǔn)化嵌入式Linux發(fā)行版的舉措試圖克服硬件開發(fā)人員的一些變幻莫測(cè),從而簡(jiǎn)化硬件和軟件開發(fā)的交叉。 uClinux是針對(duì)簡(jiǎn)單微控制器的項(xiàng)目示例。它可以基于Linux 2.0,2.4或2.6內(nèi)核,并附帶用戶應(yīng)用程序,庫和工具鏈。微控制器供應(yīng)商可以為任何給定產(chǎn)品的評(píng)估板創(chuàng)建一個(gè)uClinux BSP,從而為客戶提供更快,更簡(jiǎn)單的開發(fā)路徑,前提是他們?yōu)樗x擇的微控制器使用適當(dāng)?shù)膗Clinux端口。
Yocto Project是另一種方法的示例,旨在幫助硬件開發(fā)人員在將開源開發(fā)自由與商業(yè)支持框架的便利性相結(jié)合的環(huán)境中創(chuàng)建自定義Linux發(fā)行版。該項(xiàng)目建立了通用模板,工具和方法,并利用Linux基金會(huì)的長(zhǎng)期支持計(jì)劃(LTSI)來標(biāo)準(zhǔn)化內(nèi)核。 LTSI提供必要的范圍,以嚴(yán)格控制的節(jié)奏應(yīng)用安全性和錯(cuò)誤修復(fù),允許每個(gè)內(nèi)核版本得到適當(dāng)維護(hù)。
與Yocto項(xiàng)目的連接可以為各種類型的組織提供優(yōu)勢(shì),包括芯片制造商,工具供應(yīng)商,Linux發(fā)行版的創(chuàng)建者和嵌入式設(shè)備開發(fā)人員。因此,該項(xiàng)目得到了眾多行業(yè)參與者的支持,他們正在投入人力和資源來幫助簡(jiǎn)化Linux的設(shè)備開發(fā)。 Yocto項(xiàng)目為L(zhǎng)inux構(gòu)建系統(tǒng)和操作系統(tǒng)實(shí)施的碎片提供了解毒劑,這可能使產(chǎn)品開發(fā)復(fù)雜化并阻礙硬件或軟件供應(yīng)商為其客戶提供支持的努力。 Yocto項(xiàng)目帶來的額外效率還有助于降低開發(fā)成本,加快需要高質(zhì)量保證的產(chǎn)品的上市時(shí)間,例如汽車模塊或運(yùn)營(yíng)商級(jí)電信系統(tǒng)。
Digi Connectcore 6UL是一個(gè)帶有源代碼的完整Yocto Project Linux BSP的SBC示例。該板還集成了對(duì)無線連接的支持,包括IEEE 802.11a/b/g/n/ac和Bluetooth?4.2,用于添加Grove傳感器或擴(kuò)展板的連接器,以及支持加密,密鑰存儲(chǔ)和安全啟動(dòng)以保護(hù)的硬件安全元件連接智能設(shè)備。
Android Things
作為一款基于Linux的操作系統(tǒng),除了大型組織的支持之外,Android作為智能手機(jī)和平板電腦的平臺(tái)也取得了巨大的成功。開發(fā)人員可以使用Android SDK和Android Studio或第三方應(yīng)用開發(fā)工具等工具快速為Android手機(jī)創(chuàng)建移動(dòng)設(shè)備或應(yīng)用。谷歌現(xiàn)在正在擴(kuò)展Android系列以包括其他類型的設(shè)備:Android Wear就是一個(gè)例子,旨在開發(fā)可穿戴電子產(chǎn)品,如智能手表。
Android Things的到來對(duì)于開發(fā)人員來說可能是一個(gè)令人興奮的舉動(dòng)嵌入式系統(tǒng)與Yocto項(xiàng)目類似,Android Things理念使開發(fā)人員不必創(chuàng)建或修改自己的Linux內(nèi)核。這有望為小型,資源受限的設(shè)備創(chuàng)建應(yīng)用程序,就像開發(fā)移動(dòng)應(yīng)用程序一樣簡(jiǎn)單,并且可以將新的應(yīng)用程序開發(fā)人員群體從移動(dòng)場(chǎng)景帶入嵌入式世界。隨時(shí)可用的交鑰匙,認(rèn)證開發(fā)板和Android Things SDK使原型設(shè)計(jì)能夠立即開始。
Android Things SDK(圖2)支持用于移動(dòng)開發(fā)的Google Services API子集,并刪除那些不適合嵌入式開發(fā)的。通常,這些是需要用戶輸入或身份驗(yàn)證憑據(jù)的API。另一方面,添加了Things支持庫,它引入了嵌入式設(shè)備中常見而不是移動(dòng)設(shè)備中的硬件類型的API。這些包括連接到GPIO或接口的傳感器和執(zhí)行器,例如I 2 C,SPI或UART。

圖2: Android Things在物聯(lián)網(wǎng)支持庫中添加了額外的API來管理嵌入式設(shè)備中使用的硬件類型。
將傳感器連接到云端
從多個(gè)通道捕獲傳感器數(shù)據(jù)的能力,匯總并發(fā)送到云中的分析和機(jī)器學(xué)習(xí)應(yīng)用程序,對(duì)于未來工業(yè)自動(dòng)化的發(fā)展至關(guān)重要。在Advantech AIMB212D和Digi Connectcore 6UL等連接SBC上托管的應(yīng)用程序在第四次工業(yè)革命(工業(yè)4.0)的網(wǎng)絡(luò)物理系統(tǒng)中發(fā)揮關(guān)鍵作用,收集和轉(zhuǎn)發(fā)傳感器數(shù)據(jù),如用于振動(dòng)傳感的加速度計(jì)信號(hào),生產(chǎn)率指標(biāo),組件可追溯性數(shù)據(jù)或質(zhì)量信息,如檢查圖像。當(dāng)然,這兩種SBC都經(jīng)過認(rèn)證,可以連接到Microsoft Azure云,并附帶軟件來實(shí)現(xiàn)這一點(diǎn)。
除了嵌入式軟件API,研華還提供帶有AIMB212D的SUSIAccess?API。像SMbus和硬件監(jiān)視器一樣用于從連接的傳感器捕獲數(shù)據(jù)。 SUSIAccess結(jié)合了研華的安全和統(tǒng)一智能接口(SUSI),用于監(jiān)控嵌入式設(shè)備,具有支持?jǐn)?shù)據(jù)挖掘,備份和遠(yuǎn)程恢復(fù)的附加功能,并幫助將感測(cè)數(shù)據(jù)傳輸?shù)窖腥A的WISE-PaaS物聯(lián)網(wǎng)軟件平臺(tái),提供遠(yuǎn)程監(jiān)控,設(shè)備管理等服務(wù)尋求使用Digi Connectcore 6UL板解決類似應(yīng)用程序的開發(fā)人員,在基于Yocto的Linux環(huán)境中工作,可以利用Digi開發(fā)的軟件擴(kuò)展來促進(jìn)云集成。其中包括Digi TrustFence?基于硬件/軟件的安全框架,對(duì)空中下載(OTA)固件更新的支持,以及遠(yuǎn)程設(shè)備管理和健康監(jiān)控。圖3顯示了構(gòu)成Digi嵌入式Y(jié)octo平臺(tái)的BSP和軟件擴(kuò)展,包括對(duì)云集成的支持。

圖3:Digi嵌入式平臺(tái)增加了軟件擴(kuò)展,充分利用了Yocto項(xiàng)目的托管特性。
Android Things特別適合創(chuàng)建物聯(lián)網(wǎng)設(shè)備,不僅包括用于設(shè)置溫度傳感器,智能相機(jī)或其他傳感器的低級(jí)接口的API,還提供對(duì)Weave通信平臺(tái)的訪問,以簡(jiǎn)化將設(shè)備連接到Google Cloud的過程。使用Weave設(shè)備SDK,開發(fā)人員可以將設(shè)備連接到Google的Weave服務(wù)器,該服務(wù)器處理安全設(shè)備注冊(cè),設(shè)備管理以及與Google智能助理等服務(wù)的集成。使用Weave開發(fā)者控制臺(tái)可以輕松設(shè)置和監(jiān)控設(shè)備,并且注冊(cè)為Weave開發(fā)人員可以訪問Weave Developer應(yīng)用程序,以便通過移動(dòng)設(shè)備或平板電腦測(cè)試和控制設(shè)備。
啟動(dòng)Android Things項(xiàng)目很容易,使用支持的電路板,如Wandboard的PICO-PI-IMX6UL。這是基于恩智浦i.MX6應(yīng)用處理器,內(nèi)置IEEE 802.11 b/g/n Wi-Fi和藍(lán)牙4.1支持,4 GB可移動(dòng)存儲(chǔ)卡,并提供GPIO,I 2 C,I 2 S,UART和SPI用于連接傳感器或控制器等外部設(shè)備。進(jìn)一步的連接和多媒體擴(kuò)展是可能的。
結(jié)論
通過良好支持的SBC設(shè)計(jì)嵌入式系統(tǒng)更加友好和快捷,簡(jiǎn)化了對(duì)系統(tǒng)啟動(dòng)和運(yùn)行所需資源的訪問。即便如此,操作系統(tǒng)的選擇也會(huì)對(duì)項(xiàng)目的成功產(chǎn)生深遠(yuǎn)的影響。 BSP和SDK中的驅(qū)動(dòng)程序和API等軟件以及應(yīng)用它們的良好支持工具有助于最大限度地減少開發(fā)人員必須自己完成的工作,并允許更加關(guān)注應(yīng)用程序級(jí)別的差異化功能。
像Yocto Project這樣的計(jì)劃使Linux開發(fā)人員能夠享受類似于那些選擇Windows Embedded路由的用戶所提供的支持。 Android Things現(xiàn)在為小型連接設(shè)備的創(chuàng)建者提供類似的好處和簡(jiǎn)化的移動(dòng)應(yīng)用程序開發(fā)體驗(yàn)。
-
處理器
+關(guān)注
關(guān)注
68文章
20283瀏覽量
253193 -
溫度傳感器
+關(guān)注
關(guān)注
48文章
3225瀏覽量
163202 -
嵌入式
+關(guān)注
關(guān)注
5202文章
20519瀏覽量
335357
發(fā)布評(píng)論請(qǐng)先 登錄
RT-Thread Vector軟件包:嵌入式開發(fā)的動(dòng)態(tài)數(shù)組容器 | 技術(shù)集結(jié)
嵌入式開發(fā)常用函數(shù)速查表
探索MCIMX93-QSB開發(fā)板:開啟嵌入式開發(fā)新征程
一個(gè)面向單片機(jī)、事件驅(qū)動(dòng)的嵌入式開發(fā)平臺(tái)介紹
分享一個(gè)嵌入式開發(fā)學(xué)習(xí)路線
嵌入式開發(fā)工具版本的選擇策略
嵌入式開發(fā)的關(guān)鍵點(diǎn)介紹
嵌入式開發(fā)效率革命!明遠(yuǎn)智睿H618核心板
新一代嵌入式開發(fā)平臺(tái) AMD嵌入式軟件和工具2025.1版現(xiàn)已推出
嵌入式開發(fā)的核心選擇
嵌入式開發(fā)就業(yè)還有前景嗎?
明遠(yuǎn)智睿SSD2351開發(fā)板:嵌入式開發(fā)領(lǐng)域的新型新星
嵌入式開發(fā)入門指南:從零開始學(xué)習(xí)嵌入式
嵌入式開發(fā):高門檻的系統(tǒng)性工程與 996 的行業(yè)困局
板級(jí)支持包給提嵌入式開發(fā)供軟件功能選擇
評(píng)論