RTOS(Real-Time Operating System实时操作系统)能够让设备在关键时刻以精准的时序执行任务,为工业控制、物联网设备、智能家居设备等都提供了可靠的底层支持,选择一个合适的 RTOS 将决定项目的成功与否,那么今天就为大家介绍如何使用 DuoS 运行 Zephyr RTOS 这款由 Linux 基金会维护、功能齐全的实时操作系统。
什么是 Zephyr RTOS?
Zephyr是一个开源、灵活且安全的RTOS,从资源受限的物联网传感器到复杂的工业设备,Zephyr凭借其日渐强大和完善的功能迅速获得了广泛的认可。这里我们列出几个主要特性:
- 模块化设计:轻量级、灵活,Zephyr RTOS最低只要求8KB的内存,并允许开发者根据需求定制操作系统的各个模块,来扩展支持复杂的应用和硬件。
- 强大的安全性:支持多种调度算法,包括合作式、抢占式和最早截止期优先调度等。Zephyr还提供了加密、安全启动和固件更新等多种安全功能。
- 广泛的硬件支持:兼容多种架构,如ARM、x86、RISC-V和ARC等,并拥有丰富的外围驱动和板级支持包,目前社区支持的板卡已经超过了450种。
- 强大开发工具:与主流开发工具集成,拥有活跃的社区支持和详细文档,能够让开发者迅速上手。
感兴趣的话可以查阅官方网站了解关于 Zephyr OS 的更多功能。
Zephyr 系统架构
Zephyr是一个开源、灵活且安全的RTOS,从资源受限的物联网传感器到复杂的工业设备,Zephyr凭借其日渐强大和完善的功能迅速获得了广泛的认可。这里我们列出几个主要特性:
- 模块化设计:轻量级、灵活,Zephyr RTOS最低只要求8KB的内存,并允许开发者根据需求定制操作系统的各个模块,来扩展支持复杂的应用和硬件。
- 强大的安全性:支持多种调度算法,包括合作式、抢占式和最早截止期优先调度等。Zephyr还提供了加密、安全启动和固件更新等多种安全功能。
- 广泛的硬件支持:兼容多种架构,如ARM、x86、RISC-V和ARC等,并拥有丰富的外围驱动和板级支持包,目前社区支持的板卡已经超过了450种。
- 强大开发工具:与主流开发工具集成,拥有活跃的社区支持和详细文档,能够让开发者迅速上手。感兴趣的话可以查阅官方网站了解关于 Zephyr OS 的更多功能。
Zephyr 系统架构
Zephyr 与其他 RTOS 的对比
特性 | Zephyr | ||
许可证 | Apache 2.0 | MIT | Apache 2.0 |
架构支持 | ARM, x86, RISC-V, ARC等 | ARM, x86, RISC-V等 | ARM, x86, RISC-V, ARC等 |
模块化设计 | 高度模块化 | 中度模块化 | 高度模块化 |
内存占用 | 低 | 低 | 低 |
安全特性 | 内存保护、多层次加密 | 基本加密支持 | 内存保护、加密支持 |
网络协议 | TCP/IP、UDP等 | TCP/IP、BLE等 | |
社区支持 | 活跃、全球性 | 活跃、全球性 | 活跃、亚洲为主 |
典型应用 | 工业、物联网、可穿戴设备等 | 工业、汽车等 | 工业、家居等 |
优点 | 内核服务、灵活调度、多架构支持 | 任务管理、内存管理、低功耗模式 | 多线程管理、事件驱动、文件系统、中文资料丰富 |
Zephyr 在 Duo S 上的应用
算能SG2000和SG2002,作为同时能够支持RISC-V、ARM以及已经适配了FreeRTOS的新型SoCs,结合了高计算能力与低功耗的特点,同样支持Zephyr RTOS。想体验、探索Zephyr的开发者们,继续往后看,这里我们以Milk-V Duo-S这块开发板(搭载sg2000)为例,展示如何移植(以下步骤均在Ubuntu22..04环境下执行)。
1.环境搭建:
具体参考Zephyr官方文档:https://docs.zephyrproject.org/latest/develop/getting_started/index.html
安装依赖库
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
主要的依赖库所需的最低版本如下,请安装完成后检查是否满足要求。
- CMake:3.20.5
- Python:3.10
- Devicetree compiler:1.4.6 按照官方建议,我们使用python虚拟环境来进行Zephyr项目的构建:
sudoaptinstallpython3-venvpython3 -m venv ~/zephyrproject/.venv //构建一个新的虚拟环境source ~/zephyrproject/.venv/bin/activate //激活环境pip install west //zephyr提供的”meta-tool”,可看成一个git工具
接下来我们需要安装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.项目配置
west init ~/zephyrproject –m https://github.com/plctlab/rvspoc-p2307-zephyr.gitcd ~/zephyrproject/zephyrwest update //确认版本是否一致
3.编译
这里我们用经典的blinky闪烁来做测试,该示例会以1s的时间间隔闪烁开发板上的LED灯:
west build -p always -b milkv_duos -s samples/basic/blinky
编译成功后,会在~/zephyrproject/zephyr/build/zephyr路径下找到我们的zephyr.bin
4.验证
删掉milkv官方仓库里的PINMUX设定来避免引脚复用,然后重新编译镜像(具体细节查看仓库README)并烧录到TF卡上,挂载到boot分区。记得先将大核 linux 下的 /mnt/system/blink.sh 重命名,此时LED 灯将不再默认闪烁。接下来,用如下命令将编译好的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开发板的卡槽中,上电!开机!可以看到蓝色LED灯重新开始闪烁,代表我们的Zephyr RTOS就成功移植到我们的板子上啦!
此示例里我们验证了GPIO,SysTick(CLINT中断)的可行性。
适配外设
- Mailbox
- PINMUX
- GPIO
- PWM
- UART
以上就是我们对Zephyr RTOS的介绍和移植说明。无论您是在开发智能家居设备,还是计划在物联网领域大展宏图,Zephyr 都是一个不错的选择。搭载 SG200X 的 Duo 系列开发板能够为开发者提供可靠的项目支持。快来开启 Zephyr on RISC-V 的探索之旅吧!
-
操作系统
+关注
关注
37文章
6818浏览量
123322 -
智能家居
+关注
关注
1928文章
9559浏览量
185060 -
RTOS
+关注
关注
22文章
812浏览量
119617
发布评论请先 登录
相关推荐
评论