RTOS(Real-Time Operating System实时操作系统)能够让设备在关键时刻以精准的时序执行任务,为工业控制、物联网设备、智能家居设备等都提供了可靠的底层支持,选择一个合适的 RTOS 将决定项目的成功与否,那么今天就为大家介绍如何使用 DuoS 运行 Zephyr RTOS 这款由 Linux 基金会维护、功能齐全的实时操作系统。
Zephyr是一个开源、灵活且安全的RTOS,从资源受限的物联网传感器到复杂的工业设备,Zephyr凭借其日渐强大和完善的功能迅速获得了广泛的认可。这里我们列出几个主要特性:
感兴趣的话可以查阅官方网站了解关于 Zephyr OS 的更多功能。
Zephyr是一个开源、灵活且安全的RTOS,从资源受限的物联网传感器到复杂的工业设备,Zephyr凭借其日渐强大和完善的功能迅速获得了广泛的认可。这里我们列出几个主要特性:
特性
| 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等
|
模块化设计
| 高度模块化
| 中度模块化
| 高度模块化
|
内存占用
| 低
| 低
| 低
|
安全特性
| 内存保护、多层次加密
| 基本加密支持
| 内存保护、加密支持
|
网络协议
| 多种协议支持,包括BLE、Wi-Fi、CAN等
| TCP/IP、UDP等
| TCP/IP、BLE等
|
社区支持
| 活跃、全球性
| 活跃、全球性
| 活跃、亚洲为主
|
典型应用
| 工业、物联网、可穿戴设备等
| 工业、汽车等
| 工业、家居等
|
优点
| 内核服务、灵活调度、多架构支持
| 任务管理、内存管理、低功耗模式
| 多线程管理、事件驱动、文件系统、中文资料丰富 |
算能SG2000和SG2002,作为同时能够支持RISC-V、ARM以及已经适配了FreeRTOS的新型SoCs,结合了高计算能力与低功耗的特点,同样支持Zephyr RTOS。想体验、探索Zephyr的开发者们,继续往后看,这里我们以Milk-V Duo-S这块开发板(搭载sg2000)为例,展示如何移植(以下步骤均在Ubuntu22..04环境下执行)。
具体参考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
主要的依赖库所需的最低版本如下,请安装完成后检查是否满足要求。
sudo apt install python3-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
west init ~/zephyrproject –m https://github.com/plctlab/rvspoc-p2307-zephyr.gitcd ~/zephyrproject/zephyrwest update //确认版本是否一致
这里我们用经典的blinky闪烁来做测试,该示例会以1s的时间间隔闪烁开发板上的LED灯:
west build -p always -b milkv_duos -s samples/basic/blinky
编译成功后,会在~/zephyrproject/zephyr/build/zephyr路径下找到我们的zephyr.bin
删掉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中断)的可行性。
适配外设
以上就是我们对Zephyr RTOS的介绍和移植说明。无论您是在开发智能家居设备,还是计划在物联网领域大展宏图,Zephyr 都是一个不错的选择。搭载 SG200X 的 Duo 系列开发板能够为开发者提供可靠的项目支持。快来开启 Zephyr on RISC-V 的探索之旅吧!
全部0条评论
快来发表一下你的评论吧 !