使用buildroot制作文件系统基于天嵌IMX6UL
使用buildroot制作文件系统基于天嵌IMX6UL
1.引言
一名入门小白因工作需求需要接触Freecale/NXP的I.MX6处理器。在此记录自己用buildroot成功制作文件系统的经历。这次的制作过程参照:
https://blog.****.net/wangwenxue1989/article/details/90085798 结合了自己的一些修改。
2.硬件
这次我使用的是天嵌的I.MX6UL的开发板。由于工作需要,以公司的名义去借用的。
3.软件资料
1 )http://wiki.armbbs.net/tqwiki/public/docs/TQi.MX6UL#产品选型-1 这个是天嵌官方提供的板子资料链接,打开网站滑到最下面有板子配套的Uboot、Kernel、设备树文件、根文件系统。
2 ) buildroot,官方下载地址:https://buildroot.org/download.html
本次使用的是buildroot-2019.08.1.tar.bz2,是最新发布的版本,我是将它解压到了Ubunto~(家目录)TQ的目录下。
3 )工具链,我这里使用的是Linaro的gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf这个版本。
工具链在Liunx平台工具目录下。
4.Buildroot根文件系统制作
1 )进入到buildroot解压后的对应目录中
cd buildroot-2019.08.1
2)用默认的配置文件生成.config文件,
sudo make imx6ulevk_defconfig
注1:imx6ulevk_defconfig这个文件在/buildroot-2019.08.1/configs
目录里,可以自己根据具体芯片型号来选择,因为我使用的是6UL,所以使用这个。
注2:如果报错,可能是因为没加sudo的原因。
3)如果make all找不到库编译错误的话。将交叉工具链下的lib的所有库(/opt/EmbedSky/linaro-4.9/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/lib)复制到/buildroot-2019.08.1/output/target/lib目录下。
4)make nconfig(或者menuconfig)进行定制化配置
弹出以下界面:
-
Target options
目标选项。包括处理器体系结构、二进制文件格式、架构系列、ABI、浮点运算、指令集。对应到我这里使用的I.MX6UL,它的CPU架构师cortex-A7架构
如果用的是I.MX6D,那它对应的就是cortex-A9架构。 -
Build options
编译选项,和编译相关的配置。
这里没做修改,用的是默认设置。 -
Toolchain
交叉编译链。选择哪种编译链,包括Buildroot自身提供的和外部的。这里我使用的是外部的编译链。
注1:上面标号6那里External toolchain gcc version的查看方式是:先 export 查看交叉编译工具链的环境变量
设置交叉编译链环境的方法:https://blog.****.net/qq_37230121/article/details/80387731设置完环境变量,然后使用arm-linux-gnueabihf-gcc -v查看。
结果如下:
所以External toolchain version 为4.9.x
注2:External toolchain kernel header series在工具链目录终里的version.h中,我的工具链具体是在:./arm-linux-gnueabihf/libc/usr/include/linux/version.h ,你如果不知道具体在哪,很好办,进入到你的交叉工具链目录里,使用find指令很快就找到了。
find -name version.h
找到文件后,打开看一下,里面就有相关信息
用计算器把这个十进制换算成16进制,40000,对应过去就是4.0.0版本
-
System configuration 系统配置选项。例如hostname,banner,busybox,password,console等一些配置
核对一下登录的串口号是否配置正确。
TTY port 调试串口设备名,如果不知道的话。可以烧写其他已经制作好的文件系统进入文件系统,查看/dev下的调试串口设备名字。 -
Kernel
配置嵌入式系统的内核,因为我们不在Buildroot里面编译内核,所以我们不需要
选中内核相关配置。默认是选中的,需要取消掉。 -
Target packages
文件系统运用程序以及库安装包。
这里我要使用到tftp和telnet。
https://www.bbsmax.com/A/kvJ3yr97dg/
注:telnet服务的添加需要在终端上敲命令
make busybox-menuconfig(这个界面里面可以配置文件系统的命令) -
Filesystem images
文件系统镜像文件。生成各种类型的根文件系统,例如BUIFS、EXT2/3/4/、jffs2等。
这里使用如下的默认配置: -
Bootloaders
系统引导程序。包括Barebox、mxs-bootlets、U-boot等因为这里我不在buildroot里面编译Uboot,所以不做配置。默认是选择了Uboot,这里把它取消掉。
-
Host utilities
嵌入式系统的主机工具。选择一些需要的工具。 -
Legacy config options
历史遗留的配置。该版本的buildroot已经删除或者不支持的内容。
5)sudo make all编译
会编译一段时间,输出结果位于output/images下,会生成rootfs.tar