Zephyr客户OS镜像编译及使用流程
一、单核编译
1. 删除 build 构建目录
rm -rf build
2. 执行编译命令
west build -b roc_rk3588_pc samples/shmem/
3. 确认镜像是否存在
ls ./build/zephyr/zephyr.bin
二、多核编译
- 删除 build 构建目录:
rm -rf build - 需要更改核数请参考步骤 "三" ,不需要可跳过(默认双核)
- 需要添加自定义应用请参考步骤 "四",不需要可跳过
- 执行多核编译命令:
west build -b roc_rk3588_pc_smp samples/shmem/ - 确认镜像是否存在:
ls ./build/zephyr/zephyr.bin
三、更改核数步骤
下面将以编译 3 核为例:
1. 更改 CPU 核数
在 boards/firefly/roc_rk3588_pc/roc_rk3588_pc_rk3588_smp_defconfig,找到如下宏:
此处 CPU 核数改为 3:
2. 更改 CPU 节点数
在 dts/arm64/rockchip/rk3588_pl011.dtsi,找到如下
CPU 节点:
取消注释 CPU@200,保证 cpu 节点数和上面 CONFIG_MP_MAX_NUM_CPUS 一致:
四、应用添加步骤
下面以“三核 zephyr 客户 OS”为例,演示如何实现一个矩阵的输出:
1. 在 samples/shmem/src/main.c
下编写矩阵输出函数 Output_matrix(void),并加入 main(void) 中:
2. 编译镜像
west build -b roc_rk3588_pc_smp samples/shmem/
3. 查看镜像是否存在
ls ./build/zephyr/zephyr.bin
4. 将 Zephyr.bin 进行重命名
重命名规范: zephyr_rk3588s_c(核数)_m32.bin
例如三核:zephyr_rk3588s_c3_m32.bin
5. 镜像打包
将重命名后的镜像放到镜像打包目录下,执行打包脚本 merge_img_rk3588.sh。具体参考文档:
https://gitee.com/hnu-esnl/zvm-release/blob/rk3588/release_doc/2_2_pakage_images.rst
6. 效果展示
启动 ZVM, 创建三核的 zephyr 虚拟机,启动虚拟机后进入串口查看效果。启动 ZVM 参考:
https://gitee.com/hnu-esnl/zvm-release/blob/rk3588/release_doc/1_deploy_zvm_rk3588.rst
# 创建三核虚拟机
zvm create -t zephyr -c 3 -m 32
# 启动三核 zephyr 虚拟机
zvm run -n 0
# 进入串口
zvm look 0
矩阵输出效果如下: