技术分享|TQ3568开发板如何单独编译uboot、内核、设备树、文件系统
  t5NtRixbu4xu 2023年11月02日 42 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            

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

退出时如果有修改过配置,会提示是否要保存,根据实际情况来决定。

退出时若保存了,修改后的配置保存在内核目录下的.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            

执行效果如下:

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

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  JiJ96DoSHEh4   2023年11月19日   15   0   0 bashlinux
  0eGysyk4Lrwg   2023年11月02日   42   0   0 vim持久化linux
  N6qfE06QLZwH   2023年11月02日   50   0   0 opensuselinux
  uRXtDv0LQww7   2023年12月11日   16   0   0 linux
t5NtRixbu4xu
最新推荐 更多