Buildroot 开发

Buildroot 是 Linux 平台上一个构建嵌入式 Linux 系统的框架。整个 Buildroot 是由 Makefile(*.mk) 脚本和 Kconfig(Config.in) 配置文件构成的。你可以和编译 Linux 内核一样,通过 buildroot 配置,menuconfig 修改,编译出一个完整的可以直接烧写到机器上运行的 Linux 系统软件(包含 boot、kernel、rootfs 以及 rootfs 中的各种库和应用程序)。若您要了解更多 Buildroot 开发相关内容,可以参考 Buildroot 官方的 《开发手册》

硬件配置

编译 Ubuntu 开发环境硬件配置建议:

  • 64 位 CPU

  • Ubuntu20.04系统,不要使用 Windows 子系统 (WSL)

  • 16GB 内存

  • 250GB 空闲空间用来编译

  • 普通用户编译,不要使用 root 用户编译

软件配置

安装环境包

sudo apt update
sudo apt-get install git ssh make gcc libssl-dev liblz4-tool \
expect g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support \
qemu-user-static live-build bison flex fakeroot cmake gcc-multilib g++-multilib \
unzip device-tree-compiler libncurses-dev

sudo apt install python3-pip
sudo pip install python-pip pyelftools
sudo apt install python2
sudo apt install python

SDK获取

发送邮件至 support@neardi.com 获取相关开发资料

下载完成后,在解压前先查看 MD5 码和Neardi-3588-SDK-Linux-${Version}.tar.gz.md5sum中是否一致:

$ md5sum Neardi-3588-SDK-Linux-${Version}.tar.gz
******************************** Neardi-3588-SDK-Linux-${Version}tar.gz

解压:

** 请使用当前Ubuntu系统用户直接解压文件,避免在Windows系统中解压后再复制到Ubuntu系统中。这样做可以确保文件属性和权限的正确性,避免潜在的兼容性问题**

tar zxvf Neardi-3588-SDK-Linux-${Version}.tar.gz

提取:

cd Neardi-3588-SDK-Linux-${Version}

# 务必执行,否则只有.git目录,没有源码
git reset --hard

编译 SDK

选择配置

boardConfig explain
BoardConfig-rk3588-neardi-linux-lpa3588-f0.mk AHDx8x1080p + HDMIIN + HDMI1 + HDMI2 + HDMI3 + DP
BoardConfig-rk3588-neardi-linux-lpa3588-f2.mk AHDx8x1080p + EV101WXM 10.1inc + HDMIIN + HDMI1 + HDMI2 + HDMI3 + DP
./build.sh lunch
默认选择BoardConfig-rk3588-neardi-linux-lpa3588-f0.mk

全自动编译

第一次编译SDK,务必全编一次,否则打包会出错

全自动编译会执行所有编译, 编译生成u-boot、kernel和buildroot。

./build.sh

生成的完整固件会保存到 rockdev/update.img

FAQ

如何单独编译

  • 编译 u-boot

./build.sh uboot
  • 编译 kernel

./build.sh kernel
  • 编译 recovery

./build.sh recovery

编译错误

dl文件下载不成功

请选择以下网盘下载 LKD3568-Buildroot-DL.tar.gz 并解压替换至 buildroot/dl 目录

tar zxvf LKD3568-Buildroot-DL.tar.gz
cp -rf LKD3568-Buildroot-DL/dl LKD3568-SDK-Linux-V1.0/buildroot/

lz4错误

Incorrect parameters
Usage :
      lz4 [arg] [input] [output]

input   : a filename
          with no FILE, or when FILE is - or stdin, read standard input
Arguments :
 -1     : Fast compression (default) 
 -9     : High compression 
 -d     : decompression (default for .lz4 extension)
 -z     : force compression
 -f     : overwrite output without prompting 
 -h/-H  : display help/long help and exit
arch/arm64/boot/Makefile:31: recipe for target 'arch/arm64/boot/Image.lz4' failed
make[2]: *** [arch/arm64/boot/Image.lz4] Error 1
make[2]: *** Deleting file 'arch/arm64/boot/Image.lz4'
arch/arm64/Makefile:170: recipe for target 'Image.lz4' failed
make[1]: *** [Image.lz4] Error 2
make[1]: *** Waiting for unfinished jobs....

解决方法,重新手动安装lz4:

git clone https://github.com/lz4/lz4.git
cd lz4
make
sudo make install