Zephyr物聯網操作系統初識(一):硬件準備與開發環境配置
1.前沿
19年 底實驗室協助某公司完成磁控膠囊胃鏡膠囊機器人的開發工作,我們主要負責圖像壓縮算法的設計與實現。其中算法運行載體為Nordic公司的nrf52840芯片。nrf52840傳統的開發方式主要是基于Nordic公司發布的SDK以及相應協議棧進行開發,通常為裸機,較少搭載操作體統(僅個人見解)。之前有師兄在新思科技參與了zyphyr操作系統的設計與開發,我也是通過他分享的公眾號文章了解到的這一操作系統。當前物聯網技術正悄然無聲地改變著我們的生活,從智能門鎖到共享單車,從智能家居到智慧城市,其中都能看到藍牙設備的身影。因此我也覺得在這個時代浪潮下,有必要了解一下藍牙協議、物聯網操作系統的相關知識。一點點小私心:我是一位自行車騎行愛好者,了解到諸多設備如碼表、心率帶、功率計等等都是基于Nordic公司的芯片開發的。我偶爾也在想這些設備是否能夠通過某些技術手段進一步挖掘其價值以更好的服務我們的生活。
關于華為LiteOS操作系統也會在文中有所提及。
參考文檔:
Zephyr項目主頁:https://www.zephyrproject.org/
Zephyr代碼:https://github.com/zephyrproject-rtos/zephyr
nRF52840-MDK開發板文檔:https://wiki.makerdiary.com/nrf52840-mdk/cn/
nRF52840-MDK代碼:https://github.com/makerdiary/nrf52840-mdk
2.硬件準備
我選用的開發板是nRF52840-MDK,是Zephyr支持的眾多開發板之一,你也可以選擇其他的開發板進行學習,不過我個人建議選擇一款成熟度高、資料豐富、應用廣泛的開發板,這樣在你后續的學習過程中可以避免很多“坑”。
2.1 簡介
nRF52840-MDK 是一個小巧而功能豐富、開箱即用的物聯網開發套件,基于?Nordic?高端系統級芯片?nRF52840,可支持?Bluetooth 5、Bluetooth Mesh、Thread、IEEE 802.15.4、ANT?等無線協議,同時帶有片上 Arm CryptoCell 加密子系統,是目前面向多協議無線物聯網的理想解決方案。
nRF52840-MDK 集成了多功能調試器?Arm Mbed DAPLink,提供“拖放式”下載固件、USB CDC 虛擬串口、CMSIS-DAP 仿真等功能。
nRF52840-MDK 還板載了來自 Microchip 的兩端口 USB 2.0 高速集線器,只需一個 USB 接口即可同時使用 DAPLink 和 nRF52840 的 USB 設備控制器。同時還搭載了 64Mbit 超低功耗 QSPI FLASH、可編程按鍵、RGB LED、晶片天線及外部天線連接器等硬件資源。
nRF52840-MDK 支持跨平臺開發,可以玩轉多種開源軟件框架(如:nRF5 SDK, Mesh, OpenThread, ZigBee 3.0, Mbed OS 5, Zephyr, Mynewt, iBeacon, Eddystone, Web Bluetooth 等等),并且提供豐富的在線文檔及示例,幫助你加速物聯網應用開發。
2.2 硬件規格
Nordic 高端系統級芯片 nRF52840
ARM? Cortex?-M4F 內核
1MB FLASH,256kB RAM
支持?Bluetooth 5、Bluetooth Mesh、Thread、IEEE 802.15.4、ANT?等無線協議
片上 NFC-A 標簽
USB 2.0 設備控制器
ARM TrustZone? Cryptocell 310 加密子系統
板載 Arm Mbed DAPLink 多功能調工具:
MSC - 支持“拖放式”下載固件
CDC - 提供虛擬串口工具
HID - 兼容 CMSIS-DAP 仿真功能
Microchip 兩端口 USB 2.0 高速集線器
板載 64Mbit 超低功耗 QSPI FLASH
擁有 多達 24 個可編程 GPIO
IF Boot/Reset 按鈕
用戶可編程按鈕和 RGB LED
板載 2.4G 晶片天線
U.FL 連接器可用于選擇外部天線
3.3V 穩壓器,高效率、低靜態電流、可輸出 1A 峰值電流
VBUS & VIN 電源路徑管理
可正反面連接的 USB 3.1 Type-C 接口
2.54mm 標準引腳間距,可直接安裝在面包板上
尺寸小巧 50mm x 23mm x 13mm (已焊排針)
2.3 引腳位置圖
2.4 軟件資源
nRF52840-MDK 支持多種軟件框架及協議:
可以看到這個開發板支持Zephyr框架。
2.5 硬件資源
遺憾的是這些資料都是指PDF文檔,PCB文件并沒有開源。
3.初識Zephyr
3.1 簡介
Zephyr OS 是專門為資源受限設備構建、針對低功耗、小型內存微處理器設備而進行優化的物聯網嵌入式小型、可擴展的實時操作系統(RTOS),支持多種硬件架構及多種開發板(包括 ARM Cortex-M, Intel x86, ARC, NIOS II, Tensilica Xtensa, 以及 RISC-V),甚至可以在小至 8kB 內存的系統上運行。
Zephyr 內核相比其他實時操作系統內核具有許多優勢:
單一地址空間:應用程序代碼和內核代碼都在單個共享地址空間中執行。
高度可配置:允許應用程序只包含所需的功能,并指定它們的數量和大小。
編譯時資源定義:允許在編譯時定義系統資源,從而減少代碼大小并提高性能。
最小的錯誤檢查:提供最少的運行時錯誤檢查,以減少代碼大小并提高性能。提供了一個可選的錯誤檢查基礎結構來幫助在應用程序開發過程中進行調試。
廣泛的服務套件:為軟件開發提供多種服務,如多線程服務、中斷服務、線程間的同步服務、線程間的數據傳遞服務、電源管理服務。
了解更多細節,可以訪問?Zephyr Project?官網。
3.2 快速入門
克隆Zephyr源碼
Zephyr OS 源碼已經托管在 GitHub 上,可以直接克隆使用:
$?git?clone?https://github.com/zephyrproject-rtos/zephyr.git
搭建開發環境
Zephyr 項目使用?CMake?工具管理和編譯項目。 CMake 可以用來生成編譯文件,然后使用?make?或?ninja?進行編譯,這是比較常規的做法。
Windows
在 Windows 上最簡單的方法是使用?Chocolatey?包管理器來安裝構建工具:
按照官方指引安裝 Chocolatey;
以管理員運行命令行工具(cmd.exe);
運行以下命令,在安裝軟件時可以無須確認:
$?choco?feature?enable?-n?allowGlobalConfirmation
安裝 Cmake:
$?choco?install?cmake?--installargs?'ADD_CMAKE_TO_PATH=System'
安裝其他必要工具:
$?choco?install?git?python?ninja?dtc-msys2?gperf?doxygen.install
6.?(可選)?安裝 pdf 文檔生成工具:
$?choco?install?strawberryperl?miktex?rsvg-convert
關閉 cmd.exe,以普通用戶重新打開,并安裝 Python 模塊:
$?cd?./zephyr $?pip3?install?-r?scripts/requirements.txt
下載并安裝?GNU Arm Embedded Toolchain,可以按照到?c:\gnuarmemb。
設置 Zephyr 環境變量:
$?set?ZEPHYR_TOOLCHAIN_VARIANT=gnuarmemb $?set?GNUARMEMB_TOOLCHAIN_PATH=c:\gnuarmemb
3.3 編譯運行第一個示例
嵌入式 物聯網操作系統 硬件開發
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。