跳到主要内容

源码编译

搭建系统环境

编译主机系统要求

  • Ubuntu18.04及以上和Debian11版本,内存推荐16GB及以上。
  • 系统的用户名不能有中文字符
  • 只能使用普通用户搭建开发环境,不允许用root用户登录,如需要root权限请使用 sudo命令。

安装编译依赖基础软件

Debain系统安装依赖

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系统安装依赖

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

编译配置

请在获取到的源代码的根目录下执行以下操作。edge 可执行文件预置在源代码的根目录下。

为了方便文档描述,约定如下变量定义:

  • BOARD:开发板/产品型号;如 TB-RK3588X0开发板的型号是 TB-RK3588X0
  • DTB:内核设备树;如 TB-RK3588X0开发板的产品内核设备树是 rk3588-toybrick-x0-linux
  • ROOT_DIR:Linux源代码SDK的工作目录;文档中所示的目录为 /home/toybrick/work/edge
  • CHIP:开发板的芯片型号;当前Linux源代码支持的芯片型号为 rk3588rk3588s
  • OUT_DIR:编译生成的镜像路径 ${ROOT_DIR}/out/${CHIP}/${BOARD}/images ,如 TB-RK3588X0的路径为 /home/toybrick/work/edge/out/rk3588/TB-RK3588X0/images

设置配置信息

执行如下执行命令,输入产品型号的序号(如:TB-RK3588X0开发板所对应的序号为0)设置配置信息:

./edge set

[EDGE DEBUG] Board list:
> rk3588
0. TB-RK3568X0
Enter the number of the board: 0
.. important:: 每次更新或修改相关代码后,请重新执行此命令,更新配置。

配置文件分别位于 vendor/common/config.json以及 vendor/${CHIP}/${BOARD}/config.json,详细说明请查阅配置信息说明章节

查看配置信息

执行如下命令,查看当前配置信息:

./edge env

[EDGE DEBUG] root path: /home/toybrick/edge/edge-toybrick
[EDGE DEBUG] out path: /home/toybrick/edge/edge-toybrick/out/rk3588/TB-RK3588X0/images
[EDGE DEBUG] board: TB-RK3588X0
[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

<a id='config_md'></a>

配置信息说明

公共配置

公共配置保存在 vendor/common/config.json,其中值为 not set的配置项必须在《板级配置》中设置;其他配置项可根据实际需要在《板级配置》中修改。

kernel

  1. config:内核menuconfig配置,默认值为 rk3588_edge.configrk3588_tobrick.config,编译时会加载 rockchip_linux_defconfigrk3588_edge.configrk3588_toybrick.config。如果有需要增减内核配置可修改 kernel/linux-5.10/arch/arm64/configs/rk3588_toybrick.config
  2. docker:默认值为 false。false为关闭docker配置,True为打开docker配置。

板级配置

公共配置保存在 vendor/${CHIP}/${BOARD}/config.json,其值会覆盖公共配置的同名配置项的值。

名称说明
board开发板或产品型号,其值必须和vendor/${CHIP}目录下的${BOARD}目录名一致
chip芯片型号,目前支持rk3588、rk3588s
arch芯片架构,目前支持的两颗芯片都是arm64
uboot默认为rk3588-toybrick,如果有需要增减uboot配置可修改uboot/configs/rk3588-toybrick.config
kernellinuxdtb:产品/开发板的内核设备树文件名,如RK3588 EVB1开发板的dtbname为rk3588-toybrick-x0-linux
kernelandroiddtb:产品/开发板的内核设备树文件名,如RK3588 EVB1开发板的dtbname为rk3588-toybrick-x0-android

注意事项

  1. 产品目录下的 config.json只需要添加需要修改的字段即可。
  2. edge脚本首先会加载 vendor/common/config.json;然后加载 vendor/${CHIP}/${BOARD}/config.json,更新相同字段的值。
  3. RK3588和RK3588s芯片的配置信息里的kernel子集的chip值都设置为:rk3588

镜像编译

以下操作请先设置好配置信息 ./edge set,请参考设置配置信息 章节。

.. attention:: rootfs.img未进行编译,rootfs.img可在发布固件内下载。若要生成自定义rootfs.img请参考后面制作客制化Debian11固件章节。

一键编译

执行如下命令编译所有镜像(包括MiniLoaderAll.bin,uboot.img,kernel.img,resource.img),保存在OUT_DIR目录:

./edge build -a

编译Uboot镜像

执行如下命令编译生成MiniLoaderAll.bin和uboot.img镜像,保存在OUT_DIR目录:

./edge build -u

编译kernel镜像

执行如下命令编译生成boot_linux.img和resource.img,保存在OUT_DIR目录:

./edge build -k

查看编译帮助

查看支持的编译参数:

./edge build -h