Ubuntu System Compilation
Hardware Configuration
Recommended hardware configuration for compiling Ubuntu development environment:
64-bit CPU
Ubuntu 20.04 system
16GB memory
250GB free space for compilation
Compile as a regular user, do not compile as root
Software Configuration
Install environment packages
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 Acquisition
Send an email to support@neardi.com to obtain related development materials. Before unzipping after downloading, check whether the MD5 code matches with Neardi-3568-SDK-Linux-Version.tar.gz.md5sum:
$ md5sum Neardi-3568-SDK-Linux-Version.tar.gz
******************************** Neardi-3568-SDK-Linux-Version.tar.gz
Unzip:
tar zxvf Neardi-3568-SDK-Linux-Version.tar.gz
Extract:
cd Neardi-3568-SDK-Linux-Version
git reset --hard
Switch branches:
branch | explain |
---|---|
lpa3568 | Neardi master branch |
git checkout lpa3568
Compile SDK
Select Configuration
./build.sh lunch rockchip_rk3568_neardi_lpa3568_defconfig
Fully Automatic Compilation
For the first compilation of the SDK, it is imperative to compile everything once, otherwise packaging will fail.
Fully automatic compilation will execute all compilations, generating u-boot, kernel, and buildroot.
./build.sh
Partial Compilation
Compile u-boot
./build.sh uboot
Compile kernel
./build.sh kernel
Compile recovery
./build.sh recovery
Compile Ubuntu
./build.sh focal
Packaging Firmware
RK firmware is packaged in a proprietary format by Rockchip, and can be flashed onto eMMC or SD card using tools provided by Rockchip (Note: Unless specified otherwise, the firmware mentioned on the WIKI by default refers to RK firmware).
# Package RK firmware
./build.sh updateimg
The complete firmware will be saved to rockdev/update.img
。
Partition Explanation
Parameter Partition Table
The parameter.txt file contains the partition information of the firmware, taking parameter-buildroot-fit.txt as an example:
Path:device/rockchip/rk356x/parameter-buildroot-fit.txt
FIRMWARE_VER: 1.0
MACHINE_MODEL: RK3568
MACHINE_ID: 007
MANUFACTURER: RK3568
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 0xffffffff
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
CMDLINE: mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00002000@0x00006000(misc),0x00020000@0x00008000(boot),0x00020000@0x00028000(recovery),0x00010000@0x00048000(backup),-@0x00058000(rootfs:grow)
uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9
The CMDLINE attribute is our focus. Taking uboot as an example, in 0x00002000@0x00004000(uboot), 0x00004000 is the starting position of the uboot partition, and 0x00002000 is the size of the partition, and so on.
package-file
The package-file is used to determine the required partition images and image paths when packaging firmware, and it needs to be consistent with the parameter.txt file.
Path:tools/linux/Linux_Pack_Firmware/rockdev/package-file
# NAME Relative path
#
#HWDEF HWDEF
package-file package-file
bootloader Image/MiniLoaderAll.bin
parameter Image/parameter.txt
uboot Image/uboot.img
misc Image/misc.img
boot Image/boot.img
recovery Image/recovery.img
rootfs Image/rootfs.img
userdata RESERVED
backup RESERVED
FAQ
Compilation Errors
dl File Download Unsuccessful
Please download LKD3568-Buildroot-DL.tar.gz
from the following network disk and unzip it to replace the buildroot/dl
directory:
tar zxvf LKD3568-Buildroot-DL.tar.gz
cp -rf LKD3568-Buildroot-DL/dl LKD3568-SDK-Linux-V1.0/buildroot/
lz4 Error
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....
Workaround, re-install LZ4 manually:
git clone https://github.com/lz4/lz4.git
cd lz4
make
sudo make install