i.MX6ULL开发板-Buildroot制作交叉编译器

前言

文章基于HD-IMX6ULL-MB 系列开发板测试验证,该开发板由武汉芯路遥科技有限公司与武汉万象奥科电子有限公司合作推出。此开发板基于 NXP iMX6ULL 系列 Cortex-A7 高性能处理器设计,适用于快速开发一系列具有创新性的产品如人机界面工业 4.0 扫描仪、车载终端以及便携式医疗设备。

i.MX6ULL开发板-Buildroot制作交叉编译器_第1张图片

1. Buildroot制作交叉编译器

在前面我们提到,如果想要自己制作交叉编译器的话,通常会用到两个工具,分别是 crosstool-NG 和Buildroot 。但需要了解的是制作交叉编译器只是嵌入式开发的第一步,后面我们还需要使用交叉编译器来移植 bootloader、linux kernel 以及制作根文件系统 rootfs,之后还会用它来交叉编译各种所需要的应用程序。其中 crosstool-NG 只是制作了一个交叉编译器,而如果你希望一键完成这所有的事情, 则可以使用 Buildroot 。

如果你是一个嵌入式软件工程师,那你有必要要知道buildroot是什么。buildroot这个工具除了可以制 作交叉编译器以外,还提供了一种更加高效的管理方法,它把bootloader,linux,应用程序和rootfs集 成在一起,可以非常方便的去定制,管理,编译和组装一个自己需要的,针对自己的设备的一个完整的 软件系统,这样我们可以利用buildroot针对自己的嵌入式设备开发完整的BSP和SDK。

接下来我们将介绍如何使用 buildroot 来制作交叉编译器,同时生成一个开发板可以使用的根文件系统。需要注意的是,因为 Linux 内核 和 u-boot 今后需要自己针对开发板做移植修改,所以这里将不编译 Linux内核 和 u-boot 程序。

1.1Buildroot 介绍

Buildroot 官网首页对buildroot的定义,和特点有非常明确的介绍: h ttps://buildroot.org/ 。

  • buildroot的宗旨为了让嵌入式linux开发更容易;

  • 管理一切!为嵌入式设备生成交叉编译工具链,文件系统,交叉编译bootloader和kernel image;

  • 易用!所有配置通过像linux一样的menuconfig,gconfig和xconfig;

  • 支持丰富的package资源,构建你需要的rootfs;

i.MX6ULL开发板-Buildroot制作交叉编译器_第2张图片

这里,我们从Buildroot的官方下载地址下载当前的最新长期支持版本 buildroot-2021.02.7 并解压缩。

i.MX6ULL开发板-Buildroot制作交叉编译器_第3张图片

整个Buildroot是由Makefile(*.mk)脚本和Kconfig(Config.in)配置文件构成的,因此可以像配置Linux内 核一样执行make menuconfig进行配置,编译出一个完整的、可以直接烧写到机器上运行的Linux系统文件(包含bootloader、kernel、rootfs以及rootfs中的各种库和应用程序)。而构建开源软件包的流程, 工作流大致如下:

  • 获取:获取源代码解压:解压源代码

  • 补丁:针对缺陷修复和增加的功能应用补丁配置:根据环境准备构建过程

  • 安装:复制二进制和辅助文件到它们的目标目录

  • 打包:为在其它系统上安装而打包二进制和辅助文件

构建每个软件包的工作流几乎是相同的,Buildroot主要就是把这些重复操作自动化,用户只需勾选上所 需软件包,便自动完成以上所有操作。其次,U-boot、Linux Kernel的编译工作流的差不多,只是配置的自定义参数更多,在Buildroot设置好了,也就一并生成。

1.2Buildroot 配置

在 buildroot 源码路径下,有很多参考的示例配置,其中就包含有 imx6ullevk 的参考配置。我们没有必要所有的选项都自己从0开始配置,接下来我们将在它的基础上来修改。

如果是使用 SecureCRT 远程登录到Linux服务器上操作的话,需要 export TERM=vt100 命令配置TERM 环境变量,否则接下来的配置可能不能输入。接下来再执行 make menuconfig 对交叉编译器制作进行配置。

下面是 Buildroot 的配置界面,接下来我们将对齐进行配置。在配置的过程中:

  • 使用 上、下键 选择菜单;

  • 使用 Tab键 选择底行的