RTOS(Real-Time Operating System實(shí)時(shí)操作系統(tǒng))能夠讓設(shè)備在關(guān)鍵時(shí)刻以精準(zhǔn)的時(shí)序執(zhí)行任務(wù),為工業(yè)控制、物聯(lián)網(wǎng)設(shè)備、智能家居設(shè)備等都提供了可靠的底層支持,選擇一個(gè)合適的 RTOS 將決定項(xiàng)目的成功與否,那么今天就為大家介紹如何使用 DuoS 運(yùn)行 Zephyr RTOS 這款由 Linux 基金會(huì)維護(hù)、功能齊全的實(shí)時(shí)操作系統(tǒng)。
什么是 Zephyr RTOS?
Zephyr是一個(gè)開(kāi)源、靈活且安全的RTOS,從資源受限的物聯(lián)網(wǎng)傳感器到復(fù)雜的工業(yè)設(shè)備,Zephyr憑借其日漸強(qiáng)大和完善的功能迅速獲得了廣泛的認(rèn)可。這里我們列出幾個(gè)主要特性:
- 模塊化設(shè)計(jì):輕量級(jí)、靈活,Zephyr RTOS最低只要求8KB的內(nèi)存,并允許開(kāi)發(fā)者根據(jù)需求定制操作系統(tǒng)的各個(gè)模塊,來(lái)擴(kuò)展支持復(fù)雜的應(yīng)用和硬件。
- 強(qiáng)大的安全性:支持多種調(diào)度算法,包括合作式、搶占式和最早截止期優(yōu)先調(diào)度等。Zephyr還提供了加密、安全啟動(dòng)和固件更新等多種安全功能。
- 廣泛的硬件支持:兼容多種架構(gòu),如ARM、x86、RISC-V和ARC等,并擁有豐富的外圍驅(qū)動(dòng)和板級(jí)支持包,目前社區(qū)支持的板卡已經(jīng)超過(guò)了450種。
- 強(qiáng)大開(kāi)發(fā)工具:與主流開(kāi)發(fā)工具集成,擁有活躍的社區(qū)支持和詳細(xì)文檔,能夠讓開(kāi)發(fā)者迅速上手。
感興趣的話可以查閱官方網(wǎng)站了解關(guān)于 Zephyr OS 的更多功能。
Zephyr 系統(tǒng)架構(gòu)
Zephyr是一個(gè)開(kāi)源、靈活且安全的RTOS,從資源受限的物聯(lián)網(wǎng)傳感器到復(fù)雜的工業(yè)設(shè)備,Zephyr憑借其日漸強(qiáng)大和完善的功能迅速獲得了廣泛的認(rèn)可。這里我們列出幾個(gè)主要特性:
- 模塊化設(shè)計(jì):輕量級(jí)、靈活,Zephyr RTOS最低只要求8KB的內(nèi)存,并允許開(kāi)發(fā)者根據(jù)需求定制操作系統(tǒng)的各個(gè)模塊,來(lái)擴(kuò)展支持復(fù)雜的應(yīng)用和硬件。
- 強(qiáng)大的安全性:支持多種調(diào)度算法,包括合作式、搶占式和最早截止期優(yōu)先調(diào)度等。Zephyr還提供了加密、安全啟動(dòng)和固件更新等多種安全功能。
- 廣泛的硬件支持:兼容多種架構(gòu),如ARM、x86、RISC-V和ARC等,并擁有豐富的外圍驅(qū)動(dòng)和板級(jí)支持包,目前社區(qū)支持的板卡已經(jīng)超過(guò)了450種。
- 強(qiáng)大開(kāi)發(fā)工具:與主流開(kāi)發(fā)工具集成,擁有活躍的社區(qū)支持和詳細(xì)文檔,能夠讓開(kāi)發(fā)者迅速上手。感興趣的話可以查閱官方網(wǎng)站了解關(guān)于 Zephyr OS 的更多功能。
Zephyr 系統(tǒng)架構(gòu)
Zephyr 與其他 RTOS 的對(duì)比
特性 | Zephyr | ||
許可證 | Apache 2.0 | MIT | Apache 2.0 |
架構(gòu)支持 | ARM, x86, RISC-V, ARC等 | ARM, x86, RISC-V等 | ARM, x86, RISC-V, ARC等 |
模塊化設(shè)計(jì) | 高度模塊化 | 中度模塊化 | 高度模塊化 |
內(nèi)存占用 | 低 | 低 | 低 |
安全特性 | 內(nèi)存保護(hù)、多層次加密 | 基本加密支持 | 內(nèi)存保護(hù)、加密支持 |
網(wǎng)絡(luò)協(xié)議 | TCP/IP、UDP等 | TCP/IP、BLE等 | |
社區(qū)支持 | 活躍、全球性 | 活躍、全球性 | 活躍、亞洲為主 |
典型應(yīng)用 | 工業(yè)、物聯(lián)網(wǎng)、可穿戴設(shè)備等 | 工業(yè)、汽車(chē)等 | 工業(yè)、家居等 |
優(yōu)點(diǎn) | 內(nèi)核服務(wù)、靈活調(diào)度、多架構(gòu)支持 | 任務(wù)管理、內(nèi)存管理、低功耗模式 | 多線程管理、事件驅(qū)動(dòng)、文件系統(tǒng)、中文資料豐富 |
Zephyr 在 Duo S 上的應(yīng)用
算能SG2000和SG2002,作為同時(shí)能夠支持RISC-V、ARM以及已經(jīng)適配了FreeRTOS的新型SoCs,結(jié)合了高計(jì)算能力與低功耗的特點(diǎn),同樣支持Zephyr RTOS。想體驗(yàn)、探索Zephyr的開(kāi)發(fā)者們,繼續(xù)往后看,這里我們以Milk-V Duo-S這塊開(kāi)發(fā)板(搭載sg2000)為例,展示如何移植(以下步驟均在Ubuntu22..04環(huán)境下執(zhí)行)。
1.環(huán)境搭建:
具體參考Zephyr官方文檔:https://docs.zephyrproject.org/latest/develop/getting_started/index.html
安裝依賴庫(kù)
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
主要的依賴庫(kù)所需的最低版本如下,請(qǐng)安裝完成后檢查是否滿足要求。
- CMake:3.20.5
- Python:3.10
- Devicetree compiler:1.4.6 按照官方建議,我們使用python虛擬環(huán)境來(lái)進(jìn)行Zephyr項(xiàng)目的構(gòu)建:
sudoaptinstallpython3-venvpython3 -m venv ~/zephyrproject/.venv //構(gòu)建一個(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.xzwget -O - https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.5-1/sha256.sum | shasum --check --ignore-missingcd zephyr-sdk-0.16.5-1 && ./setup.sh
2.項(xiàng)目配置
west init ~/zephyrproject –m https://github.com/plctlab/rvspoc-p2307-zephyr.gitcd ~/zephyrproject/zephyrwest update //確認(rèn)版本是否一致
3.編譯
這里我們用經(jīng)典的blinky閃爍來(lái)做測(cè)試,該示例會(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.驗(yàn)證
刪掉milkv官方倉(cāng)庫(kù)里的PINMUX設(shè)定來(lái)避免引腳復(fù)用,然后重新編譯鏡像(具體細(xì)節(jié)查看倉(cāng)庫(kù)README)并燒錄到TF卡上,掛載到boot分區(qū)。記得先將大核 linux 下的 /mnt/system/blink.sh 重命名,此時(shí)LED 燈將不再默認(rèn)閃爍。接下來(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)機(jī)!可以看到藍(lán)色LED燈重新開(kāi)始閃爍,代表我們的Zephyr RTOS就成功移植到我們的板子上啦!
此示例里我們驗(yàn)證了GPIO,SysTick(CLINT中斷)的可行性。
適配外設(shè)
- Mailbox
- PINMUX
- GPIO
- PWM
- UART
以上就是我們對(duì)Zephyr RTOS的介紹和移植說(shuō)明。無(wú)論您是在開(kāi)發(fā)智能家居設(shè)備,還是計(jì)劃在物聯(lián)網(wǎng)領(lǐng)域大展宏圖,Zephyr 都是一個(gè)不錯(cuò)的選擇。搭載 SG200X 的 Duo 系列開(kāi)發(fā)板能夠?yàn)殚_(kāi)發(fā)者提供可靠的項(xiàng)目支持。快來(lái)開(kāi)啟 Zephyr on RISC-V 的探索之旅吧!
-
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6544瀏覽量
122727 -
智能家居
+關(guān)注
關(guān)注
1924文章
9394瀏覽量
182129 -
RTOS
+關(guān)注
關(guān)注
20文章
804瀏覽量
119112
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論