Duo 系列开发板支持 Zephyr 了,赶紧拿出你的 Duo 来试试吧!

描述

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

 

 

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等

 

 

社区支持

 

 

活跃、全球性

 

 

活跃、全球性

 

 

活跃、亚洲为主

 

 

典型应用

 

 

工业、物联网、可穿戴设备等

 

 

工业、汽车等

 

 

工业、家居等

 

 

优点

 

 

内核服务、灵活调度、多架构支持

 

 

任务管理、内存管理、低功耗模式

 

 

多线程管理、事件驱动、文件系统、中文资料丰富

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项目的构建:

 

  •  
  •  
  •  
  •  

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

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 的探索之旅吧!

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分