返回首页

Zephyr客户OS镜像编译及使用流程

一、单核编译

1. 删除 build 构建目录

rm -rf build

2. 执行编译命令

west build -b roc_rk3588_pc samples/shmem/

3. 确认镜像是否存在

ls ./build/zephyr/zephyr.bin

二、多核编译

  1. 删除 build 构建目录:rm -rf build
  2. 需要更改核数请参考步骤 "三" ,不需要可跳过(默认双核)
  3. 需要添加自定义应用请参考步骤 "四",不需要可跳过
  4. 执行多核编译命令: west build -b roc_rk3588_pc_smp samples/shmem/
  5. 确认镜像是否存在: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节点

取消注释 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

矩阵输出效果如下:

效果展示