# bearkey-edge **Repository Path**: lodestar-luo/bearkey-edge ## Basic Information - **Project Name**: bearkey-edge - **Description**: RK356X/RK3588 edge sdk for Bearkey products - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 3 - **Created**: 2022-09-22 - **Last Updated**: 2025-08-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RK3588 Linux Debian11 快速入门 [TOC] --- ## 前言 为了方便文档描述,约定如下变量定义: - BOARD:开发板/产品型号;如Toybrick RK3588开发板的型号是TB-RK3588X0。 - DTB:内核设备树;如Toybrick RK3588开发板的产品内核设备树是rk3588-toybrick-x0-linux。 - ROOT_DIR:边缘计算SDK的工作目录;文档中所示的目录为/home/toybrick/work/edge。 - CHIP:开发板的芯片型号;当前边缘计算SDK支持的芯片型号为rk3588。 - OUT_DIR:编译生成的镜像路径${ROOT_DIR}/out/${CHIP}/${BOARD}/images ,如RK3588 EVB1的路径为/home/toybrick/work/edge/out/rk3588/TB-RK3588X0/images。 ## 搭建系统环境 ### 编译主机系统要求 - Ubuntu18.04及以上和Debian11版本,内存推荐16GB及以上。 - 系统的用户名不能有中文字符。 - 只能使用普通用户搭建开发环境,不允许用root用户执行。 ### 安装编译依赖基础软件 #### Debain系统安装依赖 ```shell sudo apt -y install python lz4 coreutils qemu qemu-user-static python3 \ devicetree-compiler clang bison flex lld libssl-dev bc genext2fs git make ``` #### Ubuntu系统安装依赖 ```shell sudo apt -y install python lz4 coreutils qemu qemu-user-static python3 \ device-tree-compiler clang bison flex lld libssl-dev bc genext2fs git make ``` ### 获取源码 1. 注册gitlab.com账号,并上传本地ssh公钥 2. 执行如下命令获取代码: ```shell git clone git@gitlab.com:bearkey-beiqi/bearkey-edge.git ``` ### 获取rootfs镜像 联系Bearkey公司,获取网盘镜像 ## 编译配置 ### 设置配置信息 执行如下执行命令,输入产品型号的序号(如:RK3588 EVB1开发板所对应的序号为0)设置配置信息: ```shell ./edge set [EDGE DEBUG] Board list: > rk3588 0. BQ-RK3588-C Enter the number of the board: 0 ``` ***注意:每次更新或修改边缘计算SDK相关代码后,请重新执行此命令,更新配置。*** ### 查看配置信息 执行如下命令,查看当前配置信息: ```shell ./edge env [EDGE DEBUG] root path: /home/bearkey/edge [EDGE DEBUG] out path: /home/bearkey/edge/out/rk3588/BQ-RK3588-C/images [EDGE DEBUG] board: BQ-RK3588-C [EDGE DEBUG] chip: rk3588 [EDGE DEBUG] arch: arm64 [EDGE DEBUG] bootmode: extlinux [EDGE DEBUG] > Partition: [EDGE DEBUG] uboot: ['0x00002000', '0x00004000'] [EDGE DEBUG] misc: ['0x00006000', '0x00002000'] [EDGE DEBUG] boot_linux:bootable: ['0x00008000', '0x00020000'] [EDGE DEBUG] recovery: ['0x00028000', '0x00040000'] [EDGE DEBUG] resource: ['0x00068000', '0x00010000'] [EDGE DEBUG] rootfs:grow: ['0x00078000', '-'] [EDGE DEBUG] > Uboot: [EDGE DEBUG] config: rk3588-toybrick [EDGE DEBUG] > Kernel: [EDGE DEBUG] version: 5.10 [EDGE DEBUG] config: rk3588_edge.config rk3588_toybrick.config [EDGE DEBUG] dtbname: rk3588-toybrick-x0-linux [EDGE DEBUG] size: 64 [EDGE DEBUG] docker: False [EDGE DEBUG] debug: 0xfeb50000 ``` ### 配置信息说明 SDK配置项包含系统配置、安全启动、分区配置、uboot配置、内核配置和文件系统配置。配置说明如下: - 公共配置保存在vendor/common/config.json。 - 板级配置保存在vendor/${CHIP}/${BOARD}/config.json,其值会覆盖公共配置的同名配置项的值。 - 值为“not set”的配置项必须在《板级配置》中设置;其他配置项可根据实际需要在《板级配置》中修改。 #### 系统配置 系统配置项包含board、chip、arch和bootmode配置项: | 配置项 | 描述 | 默认值 | 备注 | | -------- | ---------------- | -------- | ----------------------------------------------------- | | board | 开发板或产品型号 | not set | board值必须和vendor/${CHIP}目录下的${BOARD}目录名一致 | | chip | 芯片型号 | not set | RK3588和RK3588s的芯片型号都设置为rk3588 | | arch | 芯片架构 | not set | arm或arm64 | | bootmode | Uboot的启动方式 | extlinux | 支持extlinux和fit两种启动方式 | #### 分区配置 系统的分区信息,包括分区名,起始地址和分区大小(起始地址和分区大小的单位为block,每个block的大小为512字节)。编译脚本会根据bootmode设置的启动方式加载part-extlinux和part-fit分区表,分区表信息如下: **part-extlinux:extlinux启动方式的系统分区** | 配置项 | 描述 | 起始地址 | 分区大小 | 备注 | | ---------- | -------------- | ---------- | ---------- | -------------------------- | | uboot | uboot分区 | 0x00002000 | 0x00004000 | 必选 | | misc | misc分区 | 0x00006000 | 0x00002000 | 烧写进入recovery模式,可选 | | boot_linux | 内核分区 | 0x00008000 | 0x00020000 | 必选 | | recovery | recovery分区 | 0x00028000 | 0x00040000 | 必选 | | resource | resource分区 | 0x00068000 | 0x00010000 | 保存开机LOGO,必选 | | rootfs | 根文件系统分区 | 0x00078000 | - | 所有剩余空间,必选 | **part-fit: fit启动方式的系统分区** | 配置项 | 描述 | 起始地址 | 分区大小 | 备注 | | -------- | -------------- | ---------- | ---------- | -------------------------- | | uboot | uboot分区 | 0x00002000 | 0x00004000 | 必选 | | misc | misc分区 | 0x00006000 | 0x00002000 | 烧写进入recovery模式,可选 | | boot | 内核分区 | 0x00008000 | 0x00020000 | 必选 | | recovery | recovery分区 | 0x00028000 | 0x00040000 | 必选 | | backup | backup分区 | 0x00068000 | 0x00010000 | 可选 | | rootfs | 根文件系统分区 | 0x00078000 | 0x01c00000 | 必选 | | oem | oem分区 | 0x01c78000 | 0x00040000 | 可选 | | userdata | userdata分区 | 0x01cb8000 | - | 所有剩余空间,可选 | *说明:* 1. *如果起始地址和分区地址都为0,则脚本会忽略此分区。* 2. *OTG口不接USB线、长按recovery按键,系统会从recovery分区引导,并进入紧急修复模式。* 3. *烧写misc镜像,系统也会从recovery分区引导,并进入紧急修复模式。* #### uboot配置 | 配置项 | 描述 | 默认值 | 备注 | | ------ | ------------- | ----------- | -------------------------- | | config | uboot编译配置 | rk3588-edge | configs/rk3588-edge.config | #### 内核配置 | 配置项 | 描述 | 默认值 | 备注 | | ------- | -------------------------- | ------------------ | ------------------------------------- | | version | 内核版本号 | 5.10 | 目前只支持5.10内核 | | config | 内核编译配置 | rk3588_edge.config | arch/arm64/configs/rk3588_edge.config | | size | 内核镜像的大小,单位:M | 64 | auto表示自动调整大小 | | dtbname | 内核设备树文件名 | not set | 不包含后缀dts | | docker | 内核配置是否需要支持docker | false | 内核镜像会增大 | | debug | 芯片调试口物理地址 | not set | 根据芯片配置 | 说明:内核编译配置默认会加载rockchip_linux_defconfig和config配置项指定的配置。 ## 镜像编译 ### 一键编译 执行如下命令编译所有镜像,并打包update.img,保存在OUT_DIR目录: ```shell ./edge build -a ``` ### 生成分区文件 执行如下命令生成parameter.txt,保存在OUT_DIR目录: ```shell ./edge build -p ``` ### 编译Uboot镜像 执行如下命令编译生成MiniLoaderAll.bin和uboot.img镜像,保存在OUT_DIR目录: ```shell ./edge build -u ``` ### 编译kernel镜像 执行如下命令编译生成内核镜像,保存在OUT_DIR目录: ```shell ./edge build -k ``` 说明: fit启动方式:生成boot.img和recovery.img extlinux启动方式:生成boot_linux.img、recovery.img和resource.img ### 编译update镜像 执行如下命令编译生成update镜像,保存在OUT_DIR目录: ```shell ./edge build -U ``` ### 查看编译帮助 查看支持的编译参数: ```shell ./edge build -h ``` ## 烧写镜像 ### 进入烧写模式 #### 进入loader烧写模式 1. 连接Type-C口到电脑PC端,按住主板的V+/Recovery按键不放。 2. 开发板供电12V,若已经上电,按下复位按键。 3. 当开发板进入loader模式后,松开按键。 4. 参考《查询烧写状态》章节,确认开发板进入loader模式。 #### 进入maskrom烧写模式 1. 连接Type-C口到电脑PC端,按住主板的Maskrom按键不放。 2. 开发板供电12V,若已经上电,按下复位按键。 3. 当开发板进入loader模式后,松开按键。 4. 参考《查询烧写状态》章节,确认开发板进入maskrom模式。 ### 查询烧写状态 #### Linux主机查询 执行如下命令查询烧写状态: ```shell ./edge flash -q ``` - none:表示开发板未进入烧写模式。 - loader:表示开发板进入loader烧写模式。 - maskrom:表示开发板进入maskrom烧写模式。 #### Windows主机查询 双击打开tools\RKDevTool_Release_v2.84目录下的RKDevTool.exe,界面显示: - 没有发现设备(如图1-1所示):表示开发板未进入烧写模式。 - 发现一个LOADER设备(如图1-2所示):表示开发板进入loader烧写模式。 - 发现一个MASKROM设备(如图1-3所示):表示开发板进入maskrom烧写模式。 