快捷路径
相关路径:cd work/hxy/RK3308/sdk-1.5/
添加依赖包
若编译遇到报错,可以视报错信息,安装对应的软件包。当时下面一大段依赖包直接添加时,不能实现(可能是因为中间有换行符),后面就一个一个添加了
推荐Linux服务器系统版本
Ubuntu 16.04.2 LTS Linux version 4.4.0-62-generic (buildd@lcy01-30) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) ) #83-Ubuntu SMP Wed Jan 18 14:10:15 UTC 2017
kernel及u-boot编译所需
apt与apt-get的区别
#sudo apt-get update
#sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip device-tree-compiler liblz4-tool
buildroot编译所需
#sudo apt-get install libfile-which-perl sed make binutils gcc g++ bash patch gzip bzip2 perl tar cpio python unzip rsync file bc libmpc3 git repo texinfo pkg-config cmake tree texinfo
交叉编译工具链介绍
u-boot 及 kernel 编译工具链:
路径:Y:\hxy\RK3308\sdk-1.5\prebuilts\gcc\linux-x86\aarch64\gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu\aarch64-linux-gnu
对应版本:gcc version 6.3.1 20170404 (Linaro GCC 6.3-2017.05)
buildroot 编译工具链:
路径:Y:\hxy\RK3308\sdk-1.5\buildroot\output\rockchip_rk3308_release\host\bin
具体编译链:aarch64-rockchip-linux-gnu-g++(从LED控制Demo那确定的)
手动编译
u-boot 编译
查看设备是 64bit 还是 32bit 用指令:uname -a
uname -a
Linux rockchip 4.4.143 #11 SMP PREEMPT Thu Feb 17 16:05:42 CST 2022 aarch64 GNU/Linux
1
2
RK3308 64bit 编译:
#cd u-boot
#./make.sh evb-rk3308
RK3308 32bit 编译:
#./make.sh evb-aarch32-rk3308
编译完,会生成 trust.img、rk3308_loader_v2.05.133.bin、uboot.img 三个文件
kernel编译
主板丝印:RK_EVB_RK3308_DDR3P116SD4_V13
小板丝印:RK_EVB_DMIC_PDM_6C70_v11_20180427J
RK3308 EVB V13 开发板搭配不同的麦克风阵列小板,需要选用不同的板级配置文件,区分如下:
路径:Y:\hxy\RK3308\sdk-1.5\kernel\arch\arm64\boot\dts\rockchip
相关文件:rk3308-evb-dmic-pdm-v13.dts(PDM 数字麦克风)
编译指令:编译完成后,在 kernel 根目录,生成 boot.img 镜像文件.
#cd kernel
#make rk3308_linux_defconfig
#make rk3308-evb-dmic-pdm-v13.img
buildroot编译
客户按实际编译环境配置好编译依赖后,按照以下步骤配置完后,执行 make 即可
#source buildroot/build/envsetup.sh
Top of tree: /home/luckystar/work/hxy/RK3308/sdk-1.5
You're building on Linux
Lunch menu...pick a combo:
- rockchip_rk3308_64_dueros
- rockchip_rk3308_recovery
- rockchip_rk3308_release
Which would you like? [0]:
选择对应序号,如31或者30(选择30是因为编译31生成固件的时候需要一个recovery.img)
#make( make 出来后能在 buildroot/output 目录下看到)
#./mkfirmware.sh(完成编译后执行 SDK 根目录下的 mkfirmware.sh 脚本生成固件)所有烧写所需的镜像将都会拷贝于 rockdev 目录,如下:
boot.img
misc.img
parameter.txt
recovery.img
MiniLoaderAll.bin(即 rk3308_loader_v2.05.133.bin)
oem.img
userdata.img
rootfs.img
trust.img
uboot.img
自动编译
为了提高编译的效率,降低人工编译可能出现的误操作,该 SDK 中集成了全自动化编译脚本,方便固件编译、备份,在控制台上使用以下命令:./build.sh
路径:
Y:\hxy\RK3308\sdk-1.5\device\rockchip\common(全自动化编译脚本原始文件)
Y:\hxy\RK3308\sdk-1.5\device\rockchip\rk3308
文件:
build.sh
BoardConfig.mk(可以对脚本中特定的变量进行修改)
模块部分编译
为了方便开发调试,全自动化编译脚本也支持单独模块进行编译,方便模块调试,可指定并编译部分模块。模块部分编译可参见使用说明:
./build.sh -h
====USAGE: build.sh modules====
uboot -build uboot
kernel -build kernel
rootfs -build default rootfs, currently build buildroot as default
buildroot -build buildroot rootfs
yocto -build yocto rootfs, currently build ros as default
ros -build ros rootfs
debian -build debian rootfs
pcba -build pcba
recovery -build recovery
all -build uboot, kernel, rootfs, recovery image
cleanall -clean uboot, kernel, rootfs, recovery
firmware -pack all the image we need to boot up system
updateimg -pack update image
save -save images, patches, commands used to debug
default -build all modules
例如单独编译 kernel,只需要执行以下命令:./build.sh kernel
修改BoardConfig.mk
相关路径:Y:\hxy\RK3308\sdk-1.5\device\rockchip\rk3308
原作者:猫咪老师nia~