RM新时代|官方理财平台

Duo 系列開(kāi)發(fā)板支持 Zephyr 了,趕緊拿出你的 Duo 來(lái)試試吧!

RTOS(Real-Time Operating System實(shí)時(shí)操作系統)能夠讓設備在關(guān)鍵時(shí)刻以精準的時(shí)序執行任務(wù),為工業(yè)控制、物聯(lián)網(wǎng)設備、智能家居設備等都提供了可靠的底層支持,選擇一個(gè)合適的 RTOS 將決定項目的成功與否,那么今天就為大家介紹如何使用 DuoS 運行 Zephyr RTOS 這款由 Linux 基金會(huì )維護、功能齊全的實(shí)時(shí)操作系統。

什么是 Zephyr RTOS?

Zephyr是一個(gè)開(kāi)源、靈活且安全的RTOS,從資源受限的物聯(lián)網(wǎng)傳感器到復雜的工業(yè)設備,Zephyr憑借其日漸強大和完善的功能迅速獲得了廣泛的認可。這里我們列出幾個(gè)主要特性:

  • 模塊化設計:輕量級、靈活,Zephyr RTOS最低只要求8KB的內存,并允許開(kāi)發(fā)者根據需求定制操作系統的各個(gè)模塊,來(lái)擴展支持復雜的應用和硬件。
  • 強大的安全性:支持多種調度算法,包括合作式、搶占式和最早截止期優(yōu)先調度等。Zephyr還提供了加密、安全啟動(dòng)和固件更新等多種安全功能。
  • 廣泛的硬件支持:兼容多種架構,如ARM、x86、RISC-V和ARC等,并擁有豐富的外圍驅動(dòng)和板級支持包,目前社區支持的板卡已經(jīng)超過(guò)了450種。
  • 強大開(kāi)發(fā)工具:與主流開(kāi)發(fā)工具集成,擁有活躍的社區支持和詳細文檔,能夠讓開(kāi)發(fā)者迅速上手。

感興趣的話(huà)可以查閱官方網(wǎng)站了解關(guān)于 Zephyr OS 的更多功能。

Zephyr 系統架構

?

Zephyr是一個(gè)開(kāi)源、靈活且安全的RTOS,從資源受限的物聯(lián)網(wǎng)傳感器到復雜的工業(yè)設備,Zephyr憑借其日漸強大和完善的功能迅速獲得了廣泛的認可。這里我們列出幾個(gè)主要特性:

  • 模塊化設計:輕量級、靈活,Zephyr RTOS最低只要求8KB的內存,并允許開(kāi)發(fā)者根據需求定制操作系統的各個(gè)模塊,來(lái)擴展支持復雜的應用和硬件。
  • 強大的安全性:支持多種調度算法,包括合作式、搶占式和最早截止期優(yōu)先調度等。Zephyr還提供了加密、安全啟動(dòng)和固件更新等多種安全功能。
  • 廣泛的硬件支持:兼容多種架構,如ARM、x86、RISC-V和ARC等,并擁有豐富的外圍驅動(dòng)和板級支持包,目前社區支持的板卡已經(jīng)超過(guò)了450種。
  • 強大開(kāi)發(fā)工具:與主流開(kāi)發(fā)工具集成,擁有活躍的社區支持和詳細文檔,能夠讓開(kāi)發(fā)者迅速上手。感興趣的話(huà)可以查閱官方網(wǎng)站了解關(guān)于 Zephyr OS 的更多功能。
  • ?
  • Zephyr 系統架構

?

Zephyr 與其他 RTOS 的對比

特性

Zephyr

FreeRTOS

RT-Thread

許可證

Apache 2.0

MIT

Apache 2.0

架構支持

ARM, x86, RISC-V, ARC等

ARM, x86, RISC-V等

ARM, x86, RISC-V, ARC等

模塊化設計

高度模塊化

中度模塊化

高度模塊化

內存占用

低

低

低

安全特性

內存保護、多層次加密

基本加密支持

內存保護、加密支持

網(wǎng)絡(luò )協(xié)議

多種協(xié)議支持,包括BLE、Wi-Fi、CAN等

TCP/IP、UDP等

TCP/IP、BLE等

社區支持

活躍、全球性

活躍、全球性

活躍、亞洲為主

典型應用

工業(yè)、物聯(lián)網(wǎng)、可穿戴設備等

工業(yè)、汽車(chē)等

工業(yè)、家居等

優(yōu)點(diǎn)

內核服務(wù)、靈活調度、多架構支持

任務(wù)管理、內存管理、低功耗模式

多線(xiàn)程管理、事件驅動(dòng)、文件系統、中文資料豐富

Zephyr 在 Duo S 上的應用

算能SG2000和SG2002,作為同時(shí)能夠支持RISC-V、ARM以及已經(jīng)適配了FreeRTOS的新型SoCs,結合了高計算能力與低功耗的特點(diǎn),同樣支持Zephyr RTOS。想體驗、探索Zephyr的開(kāi)發(fā)者們,繼續往后看,這里我們以Milk-V Duo-S這塊開(kāi)發(fā)板(搭載sg2000)為例,展示如何移植(以下步驟均在Ubuntu22..04環(huán)境下執行)。

?

1.環(huán)境搭建:

具體參考Zephyr官方文檔:
https://docs.zephyrproject.org/latest/develop/getting_started/index.html

安裝依賴(lài)庫

sudo apt install --no-install-recommends git cmake ninja-build gperf \
ccache dfu-util device-tree-compiler wget \
python3-dev python3-pip python3-setuptools python3-tk python3-wheel xz-utils file \
make gcc gcc-multilib g++-multilib libsdl2-dev libmagic1

主要的依賴(lài)庫所需的最低版本如下,請安裝完成后檢查是否滿(mǎn)足要求。

  • CMake:3.20.5
  • Python:3.10
  • Devicetree compiler:1.4.6 按照官方建議,我們使用python虛擬環(huán)境來(lái)進(jìn)行Zephyr項目的構建:
  • ?
  • sudo apt install python3-venv
    python3 -m venv ~/zephyrproject/.venv?//構建一個(gè)新的虛擬環(huán)境
    source ~/zephyrproject/.venv/bin/activate?//激活環(huán)境
    pip install west?//zephyr提供的”meta-tool”,可看成一個(gè)git工具

接下來(lái)我們需要安裝Zephyr SDK:

wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.5-1/zephyr-sdk-0.16.5-1_linux-x86_64.tar.xz
wget -O - https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.5-1/sha256.sum | shasum --check --ignore-missing
cd zephyr-sdk-0.16.5-1 && ./setup.sh

2.項目配置

west init ~/zephyrproject –m https://github.com/plctlab/rvspoc-p2307-zephyr.git
cd ~/zephyrproject/zephyr
west update //確認版本是否一致

3.編譯

這里我們用經(jīng)典的blinky閃爍來(lái)做測試,該示例會(huì )以1s的時(shí)間間隔閃爍開(kāi)發(fā)板上的LED燈:

west build -p always -b milkv_duos -s samples/basic/blinky

編譯成功后,會(huì )在
~/zephyrproject/zephyr/build/zephyr路徑下找到我們的zephyr.bin

4.驗證

刪掉milkv官方倉庫里的PINMUX設定來(lái)避免引腳復用,然后重新編譯鏡像(具體細節查看倉庫README)并燒錄到TF卡上,掛載到boot分區。記得先將大核 linux 下的 /mnt/system/blink.sh 重命名,此時(shí)LED 燈將不再默認閃爍。接下來(lái),用如下命令將編譯好的zephyr.bin替換掉原本的fip.bin:

python3 /path/to/duo-buildroot-sdk/fsbl/plat/cv180x/fiptool.py \ -v genfip "/path/to/tfcard/fip.bin" \ --OLD_FIP="/path/to/tfcard/fip.bin" \ --BLCP_2ND="build/zephyr/zephyr.bin"

將TF卡放到duo-s開(kāi)發(fā)板的卡槽中,上電!開(kāi)機!可以看到藍色LED燈重新開(kāi)始閃爍,代表我們的Zephyr RTOS就成功移植到我們的板子上啦!

適配外設

  • Mailbox
  • PINMUX
  • GPIO
  • PWM
  • UART

?

以上就是我們對Zephyr RTOS的介紹和移植說(shuō)明。無(wú)論您是在開(kāi)發(fā)智能家居設備,還是計劃在物聯(lián)網(wǎng)領(lǐng)域大展宏圖,Zephyr 都是一個(gè)不錯的選擇。搭載 SG200X 的 Duo 系列開(kāi)發(fā)板能夠為開(kāi)發(fā)者提供可靠的項目支持??靵?lái)開(kāi)啟 Zephyr on RISC-V 的探索之旅吧!

相關(guān)鏈接:

  1. Zephyr官方文檔:https://docs.zephyrproject.org/latest/introduction/index.html
  2. Milk-V開(kāi)發(fā)板SDK:https://github.com/milkv-duo/duo-buildroot-sdk/releases
  3. Zephyr適配倉庫:https://github.com/plctlab/rvspoc-p2307-zephyr.git
分享到 :
RM新时代|官方理财平台