嵌入式和物聯(lián)網(wǎng) (IoT) 開發(fā)團(tuán)隊(duì)承受著壓力,需要盡快完成并交付設(shè)計(jì)。為了能夠快速行動(dòng),他們需要使用經(jīng)過驗(yàn)證且具有強(qiáng)大生態(tài)系統(tǒng)的元器件和軟件框架。他們還需要研究如何維護(hù)系統(tǒng),以及將來如何擴(kuò)展,這意味著解決方案還需要具備可移植性,并且在需要時(shí)能夠跨多種硬件平臺(tái)工作。
但是,微控制器供應(yīng)商經(jīng)常將開發(fā)人員束縛在自己的生態(tài)系統(tǒng)中,這使得在微控制器之間進(jìn)行切換不是那么容易。此外,微控制器生態(tài)系統(tǒng)的軟件工具常常不足,大部分是基于 C 語言,這對(duì)開發(fā)團(tuán)隊(duì)而言也是絆腳石。
考慮到這些需求,本文將介紹?Arm?Mbed 平臺(tái)和操作系統(tǒng)。文中將展示開發(fā)人員如何利用 Mbed 生態(tài)系統(tǒng)來加速嵌入式產(chǎn)品開發(fā),并使用它來擴(kuò)展到微控制器供應(yīng)商生態(tài)系統(tǒng)之外的世界。
什么是 Arm Mbed?
Mbed 是由 Arm 主導(dǎo)的面向物聯(lián)網(wǎng)設(shè)備開發(fā)人員的在線協(xié)作體系1。Mbed 為開發(fā)人員提供極為豐富的資源來加速開發(fā),從 Mbed OS、Mbed TLS 一直到 Mbed 庫支持的開發(fā)板和各種元器件。
Mbed 的初衷是讓開發(fā)人員能夠利用在線社區(qū)中 200,000 開發(fā)人員以及主要微控制器供應(yīng)商(例如?Cypress Semiconductor、NXP Semiconductors?和?STMicroelectronics)所支持的大型生態(tài)系統(tǒng),借助現(xiàn)有元器件、開發(fā)工具和庫來加快開發(fā)速度。使用 Mbed 生態(tài)系統(tǒng)有許多優(yōu)勢(shì):
庫和示例均用 C++ 編寫,C++ 是一種現(xiàn)代的面向?qū)ο笳Z言,其設(shè)計(jì)使得代碼可擴(kuò)展且可重用。
支持利用現(xiàn)有硬件平臺(tái)快速開發(fā)嵌入式產(chǎn)品原型以證明其可行性。
使用 Mbed 在線和離線編譯器以及 Mbed 命令行界面 (CLI),簡化軟件測(cè)試的開發(fā)(測(cè)試甚至包括在許多示例和庫中)。
內(nèi)置用于開發(fā)物聯(lián)網(wǎng)設(shè)備的工具,例如云連接器服務(wù),不僅簡化了設(shè)備到云的連接,而且簡化了通過其他基于云的服務(wù)管理設(shè)備的工作。
Mbed 的通用架構(gòu)模型給嵌入式開發(fā)人員提供了極大的靈活性和可擴(kuò)展性。舉例來說,該架構(gòu)模型一般分為三個(gè)單獨(dú)的層(圖 1):
低級(jí)硬件抽象層 (HAL)
Mbed OS API,用作中間件,提供存儲(chǔ)、RTOS、安全連接、通信堆棧等能力
高級(jí)物聯(lián)網(wǎng)層,包括開發(fā)人員的應(yīng)用程序代碼、Mbed OS 庫和連接客戶端
圖 1:Mbed 架構(gòu)包含三個(gè)主要層,可以根據(jù)需要進(jìn)行擴(kuò)展和補(bǔ)充:一個(gè)通過 HAL 抽象的低級(jí)硬件接口,一個(gè)對(duì)中間件進(jìn)行抽象的 Mbed OS API 層,以及一個(gè)用于編寫應(yīng)用程序代碼并利用庫和 Pelion 等客戶端的高級(jí)層。(圖片來源:Arm Mbed)
該架構(gòu)的設(shè)計(jì)方式讓開發(fā)人員可以加入應(yīng)用所需的組件,而省去其余工作。這使該架構(gòu)具有可伸縮性和靈活性,方便開發(fā)人員用來快速開發(fā)原型,并在較短時(shí)間內(nèi)將原型變?yōu)榱慨a(chǎn)產(chǎn)品。
Mbed 從硬件開始
盡管 Mbed 提供了良好的軟件基礎(chǔ),但除了軟件和開發(fā)軟件所需的工具之外,還會(huì)提供其他功能。團(tuán)隊(duì)開發(fā)產(chǎn)品的最快方法是在使用軟件的同時(shí)利用 Mbed 硬件生態(tài)系統(tǒng)。硬件生態(tài)系統(tǒng)包括三個(gè)不同方面:
- 模塊
- 開發(fā)板
- 元器件
模塊本質(zhì)上是以物聯(lián)網(wǎng)為中心的連接設(shè)備,它以經(jīng)過認(rèn)證且隨時(shí)可用的封裝形式提供。例如,開發(fā)人員若要開發(fā)一款支持 LoRaWAN 的產(chǎn)品,可以選擇?Multi-Tech Systems?的?MTMDK-XDOT-NA1-A00?xDot 模塊開發(fā)套件(圖 2)。xDot 模塊在視距應(yīng)用中可提供長達(dá) 10 英里的雙向通信距離,在建筑物中可提供 1 到 3 英里的雙向通信距離,數(shù)據(jù)速率從每秒 293 位 (bps) 到每秒 20 Kb (kbps)。該模塊使用低功耗 STMicroelectronics 的?STM32L151CCU6?處理器,其工作頻率為 32 兆赫 (MHz),可以通過 SPI、UART 或 I2C 接口利用 AT 消息傳遞方案進(jìn)行控制。
圖 2:xDot 模塊為開發(fā)人員提供經(jīng)過認(rèn)證的 LoRaWAN 模塊,該模塊受 Mbed 軟件堆棧的支持,可以大大縮短開發(fā)人員實(shí)現(xiàn)和運(yùn)行解決方案的時(shí)間。(圖片來源:Multi-Tech Systems Inc.)
Mbed 板本質(zhì)上是 Mbed 全面支持的不同微控制器系列的開發(fā)板。每個(gè)開發(fā)板都有微控制器供應(yīng)商提供的獨(dú)特特性和功能。例如,對(duì)支持低功耗藍(lán)牙 (BLE) 的開發(fā)板感興趣的開發(fā)人員,可能會(huì)喜歡 Cypress Semiconductor 的?CY8CKIT-062-BLE(圖 3)。
圖 3:CY8CKIT-062-BLE 開發(fā)板具備多種用于開發(fā)物聯(lián)網(wǎng)連接設(shè)備的特性,包括電子墨水顯示屏、電容式觸控按鈕和滑塊、BLE 模塊以及 KitProg2 調(diào)試器。(圖片來源:Cypress Semiconductor)
CY8CKIT 的獨(dú)特之處在于它使用多核 PSoC 62 安全微控制器。一個(gè)內(nèi)核是 Arm? Cortex?-M4 處理器,第二個(gè)內(nèi)核是低功耗 Arm Cortex-M0 +。這使開發(fā)人員可以劃分應(yīng)用程序代碼,例如讓一個(gè)處理器處理 BLE 通信,或者使用 Cortex-M0+ 內(nèi)核作為安全處理器來鎖定應(yīng)用程序。板上提供的 I/O 擴(kuò)展可將 Mbed 元器件連接到系統(tǒng),從而大大減輕開發(fā)人員開發(fā)系統(tǒng)原型的工作。
Mbed 元器件是一個(gè)硬件元器件,具有 Mbed 支持的庫及其相關(guān)的中間件,這些庫和中間件充當(dāng)產(chǎn)品開發(fā)的構(gòu)件。例如,從事物聯(lián)網(wǎng)項(xiàng)目的開發(fā)人員可能會(huì)決定要使用溫度傳感器。開發(fā)人員可以在 Mbed 元器件中搜索其支持的溫度傳感器,例如,他們可能會(huì)在外設(shè)模塊中發(fā)現(xiàn)?Maxim Integrated?的?MAX31723PMB1,該模塊可用于快速開發(fā)原型(圖 4)。
此類 Mbed 元器件的優(yōu)點(diǎn)在于,它們幾乎總是作為開發(fā)板提供并帶有原理圖。這樣,開發(fā)人員不僅可以查看使傳感器工作所需的硬件配置,還可以使用軟件庫來啟動(dòng)和運(yùn)行傳感器。
圖 4:MAX31723PMB1 數(shù)字溫度計(jì)和溫控器外設(shè)模塊(原理圖所示)可以輕松插入 Mbed 開發(fā)板,然后使用相關(guān)的 Mbed 元器件庫來快速連接溫度傳感器并與之交互。(圖片來源:Maxim Integrated)
Mbed 并非只有像測(cè)量溫度和濕度的傳感器那樣的簡單傳感器。例如,開發(fā)醫(yī)療設(shè)備的開發(fā)人員會(huì)發(fā)現(xiàn),Maxim Integrated 的?MAXREFDES220#?模塊為他們提供了基于手指的心率和 SpO2 血氧傳感器的參考設(shè)計(jì)(圖 5)。
圖 5:MAXREFDES220# 模塊為開發(fā)人員提供了一個(gè)支持基于手指的心率和 SpO2 監(jiān)測(cè)的開發(fā)板。(圖片來源:Maxim Integrated)
此外,還有諸如?Seeed Technology?的?114991252?VL53L0X Flow 分線板之類的組件,它們可用于光線檢測(cè)和 3D 飛行時(shí)間 (ToF) 測(cè)距等應(yīng)用(圖 6)。例如,嘗試在邊緣開發(fā)基于手勢(shì)的技術(shù)的開發(fā)人員,可能會(huì)對(duì)該傳感器感興趣。
圖 6:Seeed Technologies 的 114991252 Flow 傳感器分線板可輕松集成到 Mbed 開發(fā)板中,用于需要光線檢測(cè)的應(yīng)用或手勢(shì)檢測(cè)等 3D 飛行時(shí)間應(yīng)用。(圖片來源:Seeed Technology)
開發(fā)人員選定開發(fā)板和元器件之后,便可開始利用 Mbed 進(jìn)行開發(fā),通過創(chuàng)建“Hello World” LEDBlinky 應(yīng)用程序來測(cè)試他們是否可以成功對(duì)開發(fā)板進(jìn)行編程并使 LED 燈閃爍。
用 Mbed 編寫“Hello World” LEDBlinky 應(yīng)用程序
開發(fā) Mbed 應(yīng)用程序有多種方法:通過在線編譯器;通過離線編譯器;或使用命令行界面 (CLI) 工具。根據(jù)個(gè)人經(jīng)驗(yàn),建議使用 CLI,因?yàn)樗芨玫乜刂崎_發(fā)過程,并且更易于集成到開發(fā)流程中,例如測(cè)試工具和連續(xù)集成服務(wù)器。
CLI 提供了命令行界面功能,因此使用 Windows 的開發(fā)人員可以使用命令提示符來編譯代碼。創(chuàng)建 LEDBlinky 應(yīng)用程序的第一步是使用 Mbed 隨附的預(yù)寫示例。這可以通過在命令提示符中輸入以下命令來完成:
mbed import mbed-os-example-blinky
下載示例需要幾分鐘時(shí)間,因?yàn)檫€會(huì)下載 Mbed OS 和應(yīng)用中可能會(huì)使用的其他支持組件。下載完成后,開發(fā)人員便可導(dǎo)航到 mbed-os-example-blinky 文件夾,其中有一個(gè) main.cpp 文件。開發(fā)人員可以在自己喜歡的編輯器中打開此模塊,其中代碼大致如下所示:開發(fā)人員可以在此進(jìn)行修改,但是對(duì)于本文而言,使用默認(rèn)值即可。更值得注意的是編譯和部署代碼。具體用來編譯和部署代碼的命令將因硬件而異。下面的例子顯示了如何使用一條命令對(duì) Cypress CY8CKIT-062-BLE 開發(fā)板進(jìn)行編譯和編程:
第一次編譯項(xiàng)目可能需要幾分鐘,因?yàn)楣ぞ哝溞枰獦?gòu)建所有自動(dòng)進(jìn)入 Mbed 應(yīng)用程序的關(guān)聯(lián)文件。編譯周期完成后,結(jié)果應(yīng)類似于下面的圖 7 所示。
圖 7:成功編譯 LEDBlinky 項(xiàng)目后 Mbed 編譯器的輸出。(圖片來源:Jacob Beningo)
命令行中的 -f 選項(xiàng)將會(huì)自動(dòng)獲取已編譯的十六進(jìn)制文件,并將其復(fù)制到開發(fā)板上,開發(fā)板顯示為 DAPLink 大容量存儲(chǔ)設(shè)備。此時(shí),LED 應(yīng)該閃爍,開發(fā)人員可以開始開發(fā)主要應(yīng)用程序。
Mbed 的使用技巧與訣竅
Mbed 入門非常簡單,但對(duì)于開發(fā)人員來說可能存在挑戰(zhàn)。以下是關(guān)于開始使用 Mbed 開發(fā)產(chǎn)品的一些“技巧與訣竅”:
避免使用在線編譯器。雖然這對(duì)于業(yè)余愛好者來說很好,但對(duì)于專業(yè)人士而言,讓其他人的服務(wù)器擁有源代碼可能是個(gè)問題。此外,來回云端可能會(huì)減慢調(diào)試速度。諸如 Mbed IDE 或 Mbed CLI 之類的本地編譯器是更好的選擇。
Mbed 支持多線程,但默認(rèn)情況下,主函數(shù)在自己的線程中運(yùn)行。
從 Mbed 示例項(xiàng)目開始,對(duì)其進(jìn)行考察,了解如何更有效地使用 Mbed 應(yīng)用程序。
利用 Mbed 測(cè)試工具確保應(yīng)用開發(fā)沒有無意間破壞 Mbed 框架中的任何內(nèi)容。
使用 Mbed 硬件站點(diǎn)搜索可以快速集成在一起來開發(fā)產(chǎn)品的開發(fā)板、元器件和模塊。
上述技巧將有助于確保開發(fā)人員盡量減少花費(fèi)在嵌入式產(chǎn)品開發(fā)上的時(shí)間。
總結(jié)
嵌入式和物聯(lián)網(wǎng)開發(fā)人員需要一個(gè)受到良好支持的生態(tài)系統(tǒng)來為他們提供現(xiàn)代化的工具、流程和軟件,幫助他們加快開發(fā)工作并使開發(fā)成本最小。如本文所示,Mbed 平臺(tái)和 OS 是開發(fā)人員可以利用的一種潛在選擇。
Mbed 提供可擴(kuò)展且靈活的軟件架構(gòu),其中包含許多已經(jīng)集成在一起并經(jīng)過測(cè)試的組件。由于對(duì)各種硬件模塊、開發(fā)板和元器件的強(qiáng)大支持,開發(fā)人員可以輕松創(chuàng)建產(chǎn)品原型,然后將其擴(kuò)展成生產(chǎn)解決方案。
評(píng)論
查看更多