认识Buildroot

Buildroot是什么

如果你是一个嵌入式软件工程师,那你有必要要知道buildroot是什么。我们知道,通常一个嵌入式设备上运行的软件包括bootloader,linux和rootfs。我们可以独立去开发各个部分,在使用的时候分别去交叉编译,烧写这些软件组件。但是buildroot这个工具提供了一种更加高效的管理方法,它把bootloader,linux和rootfs集成在一起,可以非常方便的去定制,管理,编译和组装一个自己需要的,针对自己的设备的一个完整的软件系统。我们可以利用buildroot针对自己的嵌入式设备开发完整的BSP和SDK。

言归正传,上面都是我说的。而对这么一个新事物,我们一定要去它的官方网站上看一看介绍。
https://buildroot.org/
认识Buildroot_第1张图片
官网首页对buildroot的定义,和特点有非常明确的介绍。

  • buildroot的宗旨为了让嵌入式linux开发更容易。
  • 管理一切!为嵌入式设备生成交叉编译工具链,文件系统,交叉编译bootloader和kernel image。
  • 易用!所有配置通过像linux一样的menuconfig,gconfig和xconfig。
  • 支持丰富的package资源,构建你需要的rootfs。

Buildroot快速上手

我们来看一下buildroot是如何使用的,这里介绍的使用步骤并不详尽,主要是让大家对buildroot的使用有个大致的了解。假设你已经在linux机器上下载下来了buildroot的源码。(我想嵌入式软件工程师都会本能的用git clone,并且默默切到一个stable branch。)

git clone https://git.buildroot.net/buildroot
git checkout -b 2020.08.x origin/2020.08.x

然后,我们以imx6ullevk开发板为例,build一个包含bootloader,kernel和rootfs的完整的firmware总共分两步。

make imx6ullevk_defconfig
make

好的,介绍完了。

Buildroot的目录结构

确实,buildroot太易用了,build分两步,每步就一个命令。再也不需要配置复杂的交叉编译工具链,不用分别编译bootloader,kernel,构建文件系统。

我们来看看buildroot的目录结构是怎样的。Buildroot主要是Makefile写的,熟悉linux的人并不会陌生,而它的目录结构也很简单。

在Build之前,buildroot的目录是这样的。

$ ls
arch   boot     Config.in         configs  DEVELOPERS  fs     Makefile         package  support  toolchain
board  CHANGES  Config.in.legacy  COPYING  docs        linux  Makefile.legacy  README   system   utils

Build之后的目录是这样的。只多了个dl和output目录。

$ ls
arch   boot     Config.in         configs  DEVELOPERS  docs  linux     Makefile.legacy  package  support  toolchain
board  CHANGES  Config.in.legacy  COPYING  dl          fs    Makefile  output           README   system   utils

最终生成的板子需要的image在这里。

$ ls output/images/
boot.vfat  imx6ull-14x14-evk.dtb  rootfs.ext2  rootfs.ext4  rootfs.tar  sdcard.img  u-boot.bin  u-boot-dtb.imx  zImage

算了,好像没什么好介绍的,这些目录看名字也大概知道是存放什么文件用的了。

结束语

本文看似没介绍什么实质性的内容,但希望让你认识了一个叫buildroot的高效工具,以提高嵌入式linux BSP开发,使用,和管理的效率。以后会细致的介绍怎么在buildroot里支持一个自己的嵌入式设备。buildroot里如果已经有你的嵌入式设备所使用的SoC的一些其他的板子支持,那所需要做的可能仅仅就是添加一个板子的config文件。

你可能感兴趣的:(Buildroot,linux,嵌入式)