ITPub博客

首页 > 嵌入式/内核开发 > 嵌入式/内核开发 > 技术分享|TQ3568开发板如何单独编译uboot、内核、设备树、文件系统

技术分享|TQ3568开发板如何单独编译uboot、内核、设备树、文件系统

原创 嵌入式/内核开发 作者:天嵌科技2023 时间:2023-04-17 14:34:17 0 删除 编辑

一、编译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            
执行效果如下:
图片


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70028099/viewspace-2946235/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2023-03-23

  • 博文量
    6
  • 访问量
    4116