Buildroot----使用buildroot快速构建基于itop4412的uboot、kernel、rootfs

  • 前言
  • 开始
    • 上来就一个make menuconfig
    • 一、配置目标平台:
    • 二、配置工具链
    • 三、配置Linux内核
    • 四、配置Bootloader
  • 大功告成
  • 絮叨
  • 工程地址

前言

最近在学习linux开发板的系统构建。Linux下的三大组件可以简单分为:Bootloader(引导程序)、LinuxKernel(Linux内核服务)、Rootfs(根文件系统)。
以往我的认知里,这些工具构建的常规流程,都是独立编译构建的。后来接触到有更便捷的编译构建工具----Buildroot、Yocto等。今天写博客记录一下Buildroot的简单构建流程。

开始

上Buildroot的官网下载Buildroot镜像:
https://buildroot.org/
解压到目录中:
在这里插入图片描述
只是使用可以不太关心buildroot是如何构建的,如果对这个工具感兴趣,有很多对buildroot介绍的博客可以参考。
接下来:

上来就一个make menuconfig

make menuconfig

进入:
Buildroot----使用buildroot快速构建基于itop4412的uboot、kernel、rootfs_第1张图片
如上图所示,需要配置几个选项,逐个来看。
配置menuconfig时,我们尽量遵循一个原则,看不懂的选项看Help,还看不懂就不配,完事。

一、配置目标平台:

itop4412使用的是三星4412的soc,基于ARM-A9架构。ARM芯片默认是小端模式,在目标结构里选择即可,buildroot支持的架构有很多,像龙芯MIPS架构也支持。如下配置就可以了。如果你的SOC支持硬件浮点,当然也可以配置。

二、配置工具链

1、选择Toolchain type,工具链类型,选择外部工具链,配置为custom toochail,预安装的pre-installed,这样我们就可以使用自己安装好的交叉编译工具,将来更换编译工具也很方便。
2、配置好Toolchain Path工具链路径,根据你的工具链路径来填写就好了,填写到bin目录前即可,如abc/bin/arm-linux-cc,填写到abc即可。
3、配置编译器前缀,在前面提到的工具链路径中可以看到,如:arm-linux-gnueabi-gcc类似这样的编译工具,填写前缀即可:arm-linux-gnueabi
Buildroot----使用buildroot快速构建基于itop4412的uboot、kernel、rootfs_第2张图片
4、配置工具链的gcc版本,根据你编译器选择。
5、配置工具链内核的头信息,这里可以先不管,如果你知道可以先配置上对应版本就行。如果不知道,在最后的编译过程中会报错,根据报错信息,重新选择对应的版本,重新编译即可。
6、gcc的c库为glibc。
7、把c++支持也勾选上,以后编译别的库可能需要,例如QT5
Buildroot----使用buildroot快速构建基于itop4412的uboot、kernel、rootfs_第3张图片
这里就配置完了。

三、配置Linux内核

说明:Linux内核,我选择了我已经配置好的内核,该内核是已经可用的,上传到了gitee仓库。这样的好处,就是内核可以根据需求定制,可以直接改代码,不用总是打patch包,而且代码托管到仓库,版本管理更方便!

配置如下:
1、选择内核版本,选择个人git仓库。并填写git仓库地址。
Buildroot----使用buildroot快速构建基于itop4412的uboot、kernel、rootfs_第4张图片
2、注意的是Custom repository version ,选择你git提交生成的标签,如图。
在这里插入图片描述
3、编译Linux内核时的配置,即defconfig,如itop4412_defconfig。把_defconfig去掉。
4、kernel镜像格式,因为使用uboot启动,生成uImage,当然也可以生成别的格式,根据需要选择。
Buildroot----使用buildroot快速构建基于itop4412的uboot、kernel、rootfs_第5张图片
5、Linux镜像的启动地址,根据实际情况填写,必填,不然报错。
6、是否编译设备树,也是根据需要,itop4412的设备树,linux官方包内有,这里我就不选择了。

内核就配置完成

四、配置Bootloader

buildroot支持的Bootloader有很多,我选择UBOOT。同样的,我把配置好的UBOOT也上传到了gitee仓库,和linux内核同样的操作,如图配置即可。
Buildroot----使用buildroot快速构建基于itop4412的uboot、kernel、rootfs_第6张图片
在配置选项中,可以自由的选择生成的uboot镜像格式。

需要的注意的是,如果你的开发板需要SPL镜像,这里需要配置。

itop4412是需要的,因为4412片内的ram很小,塞不下uboot,需要一个小的镜像来完成一些简单的操作。SPL镜像负责初始化简单外设,并把完整的uboot加载到内存中去运行。

另外这里生产的SPL镜像的名字为 itop4412-spl.bin,因为4412的BL1要对SPL校验,所以itop4412-spl.bin是由原始的spl-uboot.bin生成而来。
Buildroot----使用buildroot快速构建基于itop4412的uboot、kernel、rootfs_第7张图片

大功告成

最后一连串的Esc,保存,退出menuconfig,直接make启动编译。
0报错,一堆警告,编译成功!到output目录下,查看生成的各种镜像,可以烧录啦~
在这里插入图片描述

絮叨

其实这里并没有体现buildroot的特性,buildroot是可以很方便的添加各种库文件支持的,因为仅是记录最简化的buildroot使用过程,这里就没有展示。

如果要添加你所需要的库,如QT5,可以按如下方式操作,回到顶层菜单。
Buildroot----使用buildroot快速构建基于itop4412的uboot、kernel、rootfs_第8张图片
找到:
Graphic libraries and applications (graphic/text) —> QT5,配置上即可,当然要想功能完整,还要配置字体,webkit等支持,配置方法和这个一样,耐心地找一找就好了。
Buildroot----使用buildroot快速构建基于itop4412的uboot、kernel、rootfs_第9张图片
需要注意的是,编译完成后,需要make sdk,将编译套件打包出来,在QT create中构建kit的时候,可以很方便的使用工具链编译工程。
这时QT5的流程,相应的opencv、python也是大同小异。

工程地址

这是我的gitee,欢迎关注

本工程中用到的:
buildroot
linuxkernel
uboot ---- 该uboot来自 jason416

你可能感兴趣的:(buildroot)