嵌入式Linux开发——系统移植篇回顾
本文回顾了u-boot、内核移植,根文件系统构建的相关内容,旨在理清这些流程中的一些重要步骤。
·
前言:
最近在学习正点原子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中定义 |
除了可以使用代码进行配置,u-boot还支持图形化配置,具体的配置项在顶层的Kconfig(会调用子Kconfig)
make menuconfig
将编译出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 |
两种方式启动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中。
/etc/init.d/rcS:启动以后需要启动一些服务,实现开机自启动

/etc/resolv.conf:连通外网

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

总结:
此文的目的在于提取中每个流程中关键的步骤,如果想仔细研究的话可以参考开发手册。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)