前言:

最近在学习正点原子Linux开发板u-boot、内核移植,根文件系统构建的相关内容,本文旨在起到一个流程梳理、宏观地把握整个移植u-boot、kernel,构建文件系统过程的作用,像Makefile等文件具体修改了什么内容,或者一些函数之间的调用、宏的调用可以看参考手册。

一、U-boot(bootloader)的移植

三种u-boot:

种类 描述
u-boot官方的u-boot代码 由 u-boot 官方维护开发的 u-boot 版本,版本更新快,基本包含所有常用的芯片
半导体厂商(NXP)的 u-boot 代码 半导体厂商维护的一个 u-boot,专门针对自家的芯片,在对自家芯片支持上要比 u-boot 官方的好
开发板厂商(正点原子)的 u-boot 代码 开发板厂商在半导体厂商提供的 u-boot 基础上加入了对自家开发板的支持

添加的重要文件:

文件、参数名 相对路径
mx6ull_alientek_emmc_defconfig configs/mx6ull_alientek_emmc_defconfig
mx6ull_alientek_emmc.h include/configs/mx6ull_alientek_emmc.h
板级文件夹mx6ull_alientek_emmc board/freescale/mx6ull_alientek_emmc
mx6ull_alientek_emmc.c board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.c
bootargs、bootcmd 在mx6ull_alientek_emmc.h中定义

相关文件路径

 

bootargs、bootcmd定义

 

除了可以使用代码进行配置,u-boot还支持图形化配置,具体的配置项在顶层的Kconfig(会调用子Kconfig)

make menuconfig

u-boot图形化配置界面​

 将编译出u-boot.bin通过imxdownload软件最终将u-boot.imx下载到SD卡中。

二、Kernel(zImage、dtb)的移植

添加的重要文件:

文件、参数名 相对路径
imx_alientek_emmc_defconfig arch/arm/configs/imx_alientek_emmc_defconfig
imx6ull-alientek-emmc.dts arch/arm/boot/dts/imx6ull-alientek-emmc.dts

编译出的zImage和.dtb:

文件、参数名 相对路径
zImage arch/arm/boot/zImage
imx6ull-alientek-emmc.dtb arch/arm/boot/dts/imx6ull-alientek-emmc.dtb

zImage路径
.dtb路径

 

 

Kernel图形化配置界面

 

两种方式启动Linux内核:

从emmc启动linux:

setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'

setenv bootcmd 'mmc dev 1; fatload mmc 1:1 80800000 zImage; fatload mmc 1:1 83000000 imx6ull-alientek-emmc.dtb; bootz 80800000 - 83000000;'

saveenv

从网络(tftp)启动Linux:

setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'

setenv bootcmd 'tftp 80800000 zImage; tftp 83000000 imx6ull-alientek-emmc.dtb; bootz
80800000 - 83000000'

saveenv

三、根文件系统(Rootfs)的构建

此阶段基本上是通过BusyBox来 构建根文件系统(动态),移植交叉编译链中的lib到rootfs的/lib/usr/lib中。

busybox官网

 /etc/init.d/rcS:启动以后需要启动一些服务,实现开机自启动

 /etc/resolv.conf:连通外网

 

四、系统烧写工具mfgtool

mfgtool是NXP官方做的向I.MX系列烧写系统的软件,可以通过USB烧写u-boot.imx、zImage、.dtb、rootfs。可以将自己要烧写的文件在files和firmware进行替换,最后执行.vbs实现系统烧写。

 

自己的文件

 

将文件进行重命名将files、firmware中的文件进行替换

 

选择对应开发板的.vbs

 

系统烧写成功

 

总结:

此文的目的在于提取中每个流程中关键的步骤,如果想仔细研究的话可以参考开发手册。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐