本手册提供一种在RK3568 平台量产烧录 SylixOS 镜像的方法。 主要通过修改瑞芯微RK3568 Linux SDK 环境以便编译打包生成可烧录的 SylixOS 镜像,最后通过瑞芯微提供的烧录工具进行镜像的烧录量产。
本手册以 RK3568 MI 板卡为示例板卡,适用于对嵌入式开发有一定基础的工程师。
LINUX 编译环境
SDK源码
RK USB驱动
RK 烧录工具 RKDevTool.exe
rk356x_sylix_sdk
下载 Release_DriverAssistant.zip,解压,然后运行里面的 DriverInstall.exe 。为了所有设备都使用更新的驱动,请先选择驱动卸载,然后再选择驱动安装。
以 RK356X_LINUX_SDK_V1.2_20210930.tgz 为例,拷⻉到该初始化包后,通过如下命令可检出源码:
mkdir rk356x
tar xvf RK356X_LINUX_SDK_V1.2_20210930.tgz -C rk356x
cd rk356x
.repo/repo/repo sync -l
.repo/repo/repo sync -c --no-tags
量产制作需要增加相关启动命令及分区设置,因此需要对U-boot进行相关修改。
修改文件:u-boot/include/configs/rk3568_common.h
根据板卡具体启动命令修改,以下命令仅供参考。
#define BOOTCMD_SYLIX \
"bootcmd_sylixos=mmc dev 0; fatload mmc 0:4 0x200000 bsprk3568_core0_x32.bin;fatload mmc 0:4 0x20000000 bmcore1.bin;fatload mmc 0:4 0x25000000 bmcore2.bin;fatload mmc 0:4 0x30000000 bmcore3.bin;go 0x20000\0"
根据板卡实际分区进行修改,以下命令仅供参
以5个分区为例,前三个分区为EFI保留分区即0x9d,第四个为fatfs分区即0x0b,第五个为tpsfs分区即0x9c。
修改文件:u-boot/include/configs/rk3568_common.h
#define FS_FIX \
"fs_fix=mmc dev 0; mmc read 0x9400000 1 1;" \
"mw.b 0x9400080 0x9d; mw.b 0x9400081 0x9d; mw.b 0x9400082 0x9d; mw.b 0x9400083 0x0b; mw.b 0x9400084 0x9c;" \
"mmc write 0x9400000 1 1;\0"
#define FS_CHECK \
"fs_check=mmc dev 0; mmc read 0x9400000 1 1; if cmp.b 0x9400080 0x94000A0 2; then run fs_fix; fi;\0"
修改文件:u-boot/include/configs/rk3568_common.h
FS_FIX \
FS_CHECK \
BOOTCMD_SYLIX
修改文件:u-boot/include/configs/rockchip-common.h
#if 0
#if defined(CONFIG_AVB_VBMETA_PUBLIC_KEY_VALIDATE)
#define RKIMG_BOOTCOMMAND \
"boot_android ${devtype} ${devnum};"
#elif defined(CONFIG_FIT_SIGNATURE)
#define RKIMG_BOOTCOMMAND \
"boot_fit;"
#else
#define RKIMG_BOOTCOMMAND \
"boot_android ${devtype} ${devnum};" \
"boot_fit;" \
"bootrkp;" \
"run distro_bootcmd;"
#endif
#else
#define RKIMG_BOOTCOMMAND \
"run fs_check;run bootcmd_sylixos"
#endif
根据实际板卡情况制作sdk img镜像,将rockdev中生成的img镜像拷贝至提供的 rk356x_sylix_sdk/rockdevwe路径中。
rk356x_sylix_sdk可见附件。
注意:parameter.txt 文件不需要拷贝,后续制作量产镜像会自动生成
将板卡 boot目录相关文件拷贝至rk356x_sylix_sdk/sylixos/syboot 目录下。拷贝完成后, 进入rk356x_sylix_sdk目录下,设置构建参数,然后进行构建,生成syboot.img。
rk356x$ cd rk356x_sylix_sdk/
rk356x/rk356x_sylix_sdk$ source common/envsetup-buildroot-xx.sh
rk356x/rk356x_sylix_sdk$ ./build.sh syboot
根据板卡实际emmc大小执行对应envsetup-buildroot-xx.sh文件
将需要进行量产的环境拷贝至rk356x_sylix_sdk/sylixos/syrootfs 相对应的目录中,板卡boot目录中相关文件需放至rk356x_sylix_sdk/sylixos/syboot 目录。拷贝完成后,进行构建,生成syrootfs.img。
./build.sh syrootfs
sylix-update.img镜像制作需要依赖SDK中 Linux_Pack_Firmware工具,因此在制作前需将SDK tools\linux路径下的Linux_Pack_Firmware 拷贝至rk356x_sylix_sdk/tools/linux目录下。为sylix-update.img的正常制作,当前用户需要有afptool 及rkImageMaker可执行的权限。
上述操作完成后,进行构建。
./build.sh updateimg
构建完成后,在rockdev/pack目录下生成量产镜像sylix-update.img
连接烧录线,打开 RK 烧录工具 RKDevTool.exe,板卡上电进入loader或maksrom烧录模式。
点击固件,选择生成的sylix-update.img
固件选择完成后,点击升级进行烧录,烧录完毕后板卡会自动重启,进入SYLIXOS。