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