使用buildroot制作文件系统基于天嵌IMX6UL

使用buildroot制作文件系统基于天嵌IMX6UL

    • 1.引言
    • 2.硬件
  • 3.软件资料
    • 4.Buildroot根文件系统制作

1.引言

一名入门小白因工作需求需要接触Freecale/NXP的I.MX6处理器。在此记录自己用buildroot成功制作文件系统的经历。这次的制作过程参照:
https://blog.csdn.net/wangwenxue1989/article/details/90085798 结合了自己的一些修改。

2.硬件

使用buildroot制作文件系统基于天嵌IMX6UL_第1张图片
这次我使用的是天嵌的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)进行定制化配置
弹出以下界面:
使用buildroot制作文件系统基于天嵌IMX6UL_第2张图片

  • Target options
    目标选项。包括处理器体系结构、二进制文件格式、架构系列、ABI、浮点运算、指令集。对应到我这里使用的I.MX6UL,它的CPU架构师cortex-A7架构
    使用buildroot制作文件系统基于天嵌IMX6UL_第3张图片
    如果用的是I.MX6D,那它对应的就是cortex-A9架构。

  • Build options
    编译选项,和编译相关的配置。
    这里没做修改,用的是默认设置。

  • Toolchain
    交叉编译链。选择哪种编译链,包括Buildroot自身提供的和外部的。这里我使用的是外部的编译链。
    使用buildroot制作文件系统基于天嵌IMX6UL_第4张图片
    注1:上面标号6那里External toolchain gcc version的查看方式是:先 export 查看交叉编译工具链的环境变量
    设置交叉编译链环境的方法:https://blog.csdn.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

找到文件后,打开看一下,里面就有相关信息
使用buildroot制作文件系统基于天嵌IMX6UL_第5张图片
用计算器把这个十进制换算成16进制,40000,对应过去就是4.0.0版本
使用buildroot制作文件系统基于天嵌IMX6UL_第6张图片

  • System configuration 系统配置选项。例如hostname,banner,busybox,password,console等一些配置
    使用buildroot制作文件系统基于天嵌IMX6UL_第7张图片
    核对一下登录的串口号是否配置正确。
    在这里插入图片描述
    使用buildroot制作文件系统基于天嵌IMX6UL_第8张图片
    TTY port 调试串口设备名,如果不知道的话。可以烧写其他已经制作好的文件系统进入文件系统,查看/dev下的调试串口设备名字。

  • Kernel
    配置嵌入式系统的内核,因为我们不在Buildroot里面编译内核,所以我们不需要
    选中内核相关配置。默认是选中的,需要取消掉。
    使用buildroot制作文件系统基于天嵌IMX6UL_第9张图片

  • Target packages
    文件系统运用程序以及库安装包。
    这里我要使用到tftp和telnet。
    https://www.bbsmax.com/A/kvJ3yr97dg/
    注:telnet服务的添加需要在终端上敲命令
    make busybox-menuconfig(这个界面里面可以配置文件系统的命令)

  • Filesystem images
    文件系统镜像文件。生成各种类型的根文件系统,例如BUIFS、EXT2/3/4/、jffs2等。
    这里使用如下的默认配置:
    使用buildroot制作文件系统基于天嵌IMX6UL_第10张图片

  • Bootloaders
    系统引导程序。包括Barebox、mxs-bootlets、U-boot等因为这里我不在buildroot里面编译Uboot,所以不做配置。默认是选择了Uboot,这里把它取消掉。

使用buildroot制作文件系统基于天嵌IMX6UL_第11张图片

  • Host utilities
    嵌入式系统的主机工具。选择一些需要的工具。

  • Legacy config options
    历史遗留的配置。该版本的buildroot已经删除或者不支持的内容。

5)sudo make all编译
会编译一段时间,输出结果位于output/images下,会生成rootfs.tar

你可能感兴趣的:(使用buildroot制作文件系统基于天嵌IMX6UL)