一、编译u-boot
u-boot源码位于在Linux源码目录下的u-boot目录中。u-boot也有2种编译方法,客户选任一即可。
方法1(build.sh 脚本编译)功能更全,适用性更高。
方法2(使用make.sh 编译)更灵活,适合开发时使用。
1、使用build.sh 脚本编译
在Linux源码目录下找到.build.sh脚本。所有编译都可以通过此脚本完成。(它最终也是调用.make.sh 完成编译)。
在源码目录/opt/EmbedSky/TQ3568/CoreA/Linux_SDK_XXX下,输入以下指令完成编译。具体的编译过程请看《TQ3568编译手册》。
./build.sh uboot
编译后会更新rockdev/中的镜像u-boot.img(不更新update.img),可以使用分步烧写的方式更新到板子上。
如果编译选项有 updateimg(见编译脚本说明)则会同时是更新到打包镜像update.img。如:
./build.sh uboot firmware updateimg
2、使用make.sh 编译
在u-boot源码目录(Linux_SDK_xxx/u-boot)下可以找到make.sh的编译脚本,通过使用此脚本完成对u-boot源码的编译,编译时直接执行脚本即可,具体的编译过程请看《TQ3568编译手册》。
./make.sh rk3568
编译完成后镜像会生成当前目录下:uboot.img。
说明:
(1)默认使用的配置单是rk3568_defconfig
(2)此方法更灵活,编译更快,适合开发u-boot时使用。
(3)此方法不会更新update.img,如要最终生成打包镜像update.img时,请参考第一种方法build.sh 脚本编译。
注:镜像只会更新u-boot目录下的u-boot.img,此镜像可以通过分步烧写的方式更新到板子上。
二、编译内核
内核源码目录在TQ3568_Linux_SDK_xxx/kernel 目录下,内核编译同样也可以使用Linux源码目录下的build.sh脚本 。一般编译前要按自己实际情况先配置一下内核,若无需配置,请直接看第2小节编译内核。
1、配置内核
(1)修改显示配置单
TQ3568-coreA主要用到的dts有:rk3568.dtsi,rk3568-tqcoreA-core.dtsi,rk3568-tqcoreA-BaseA_v1.dtsi,rk3568-tqcoreA-BaseA_v1-defaultPanel.dts。其中rk3568-tqcoreA-BaseA_v1-defaultPanel.dts为显示相关。
RK3568支持LVDS、MIPI、HDMII、EDP多个显示,我司也提供了各个显示的不同配置,位于kernel/arch/arm64/boot/dts/rockchip/ 目录下。
说明:
(1)实际内核只使用rk3568-tqcoreA-BaseA_v1-defaultPanel.dts文件。其它显示配置只作为参考。
(2)对应的显示配置文件只适配我司配的屏,用户如果使用自己的屏,需要根据自己的屏的具体参数修改相关文件,然后复制到rk3568-tqcoreA-BaseA_v1-defaultPanel.dts 文件中,编译。最终生成可用镜像。
用户可根据自己使用的屏,复制到rk3568-tqcoreA-BaseA_v1-defaultPanel.dts文件中。
如:要配置使用LVDS输出,则:
cd kernel/arch/arm64/boot/dts/rockchip/
cp rk3568-tqcoreA-BaseA_v1_lvds-only.dts rk3568-tqcoreA-BaseA_v1-defaultPanel.dts
(2)修改内核配置单
编译时系统会先检测当前内核源码目录下是否存在.config文件,如果存在,直接使用此配置.config进行编译,如果不存在,则使用默认配置单。
编译前请使用原厂的配置单配置内核。
进行内核源码目录,直接复制现成的配置单。
cd kernel
cp config-tq-linux-coreA .config
说明:随着版本更新,配置单名可能会有不同,以实际发行版本为准。如果不执行这一步,系统会使用默认的原厂配置rockchip_linux_defconfig
另外,如果要修改内核配置,可以在编译前进入内核源码目录
cd /opt/EmbedSky/TQ3568/CoreA/TQ3568-Linux_SDK-xxx/kernel
打开配置菜单:
make menuconfig ARCH=arm64
退出时如果有修改过配置,会提示是否要保存,根据实际情况来决定。
退出时若保存了,修改后的配置保存在内核目录下的.config文件里,我们需要将.config的配置拷贝回默认配置单rk3568_linux_tqcoreA_defconfig文件中,这 是 因 为 内 核 最 终 编 译 的 时 候 , 会 使 用rk3568_linux_tqcoreA_defconfig 配置文件。
值得注意的是,默认配置单在内核的arch/arm64/configs/目录下
cd kernel
cp .config /arch/arm64/configs/rk3568_linux_tqcoreA_defconfig
2、编译内核
完成配置后就可以进行编译了。在源码目录/opt/EmbedSky/TQ3568/CoreA/TQ3568-Linux_SDK-xxx下执行以下命令,具体的编译过程请看《TQ3568编译手册》。
./build.sh kernel
注:终端第一次运行build.sh 脚本前,要先执行source build/envsetup.sh 与lunch rk3568_r-userdebug
编译完成后内核镜像会在kernel/boot.img,同时因为rockdev/boot.img只是一个到kernel/boot
.img的连接,所以也会得到更新(可以使用分步烧写的方式更新到板子上)。
但不会更新update.img文件,需要更新请在编译时加下updateimg。
如:
./build.sh kernel firmware updateimg
三、编译文件系统
必须先成功完成内核与u-boot的编译才可以成功编译文件系统。
编译脚本位于源码目录下。
直接执行即可,具体的编译过程请看《TQ3568编译手册》。
./build.sh buildroot
编译完成后
文件系统镜像会在buildroot/output/rockchip_rk3568/images/rootfs.ext2中,同时因为rockdev/rootfs.img,rockdev/rootfs.ext4只是一个到该文件的连接,所以也会得到更新(可以使用分步烧写的方式更新到板子上,镜像的使用方法见《TQ3568镜像更新说明.pdf》)。
但不会更新update.img文件,需要更新请在编译时加下updateimg。
如:
./build.sh buildroot firmware updateimg
四、编译设备树
进入内核目录/opt/EmbedSky/TQ3568/CoreA/TQ3568-Linux_SDK-xxx/kernel,执行
make dtbs ARCH=arm64
执行效果如下: