初识Buildroot

共 2806字,需浏览 6分钟

 ·

2021-07-19 01:26

转自CSDN ,记录是为了作者小编学习需要

作者:xixihaha331


什么是buildroot

Buildroot是Linux平台上一个构建嵌入式Linux系统的框架。整个Buildroot是由Makefile脚本和Kconfig配置文件构成的。你可以和编译Linux内核一样,通过buildroot配置,menuconfig修改,编译出一个完整的可以直接烧写到机器上运行的Linux系统软件(包含boot、kernel、rootfs以及rootfs中的各种库和应用程序)。

buildroot目录结构

1.buildroot/package/下面放着应用软件的配置文件,每个应用软件的配置文件有Config.in和soft_name.mk其中soft_name.mk(这种其实就Makefile脚本的自动构建脚本)文件可以去下载应用软件的包。 

2.buildroot/output/是编译出来的输出文件夹,里面的build/目录存放着解压后的各种软件包编译完后的现场。host/目录放着制作好的编译工具链,target/ 目录是用来制作rootfs的,里面放着Linux系统基本的目录结构,以及各种编译好的应用库和bin可执行文件。Images/目录下就是最终生成的可烧写到板子上的各种image。 

3.buildroot/dl存放下载的源码包及应用软件的压缩包 

4.buildroot/fs放各种文件系统的源代码 

5.buildroot/fs/skeleton放生成文件系统镜像的地方,及板子里面的系统 

6.buildroot/linux/ 存放着Linux kernel的自动构建脚本。 

7.buildroot/configs放置开发板的一些配置参数。

8.buildroot/dl/目录存在从官网上下载的开源软件包,第一次下载后,下次就不会再去从官网下载了,而是从dl/目录下拿开源包,以节约时间。 

9.buildroot/docs/ 存放相关的参考文档。

 
10.buildroot/arch/ 目录存放CPU架构相关的配置脚本,如arm/mips/x86 ,这些CPU相关的配置,在制作工具链,编译boot和内核时很关键。

buildroot工作原理

Buildroot原则上是一个自动构建框架,虽然说u-boot、linux kernel这些经典的开源软件包的构建脚本,官方社区都在帮你实现了,但是有时候你还是需要加入你自己特有的app_pkg软件包,用以构建自己的应用。 

Buildroot提供了函数框架和变量命令框架(下一篇文章将介绍细节),采用它的框架编写的app_pkg.mk这种Makefile格式的自动构建脚本,将被package/pkg-generic.mk 这个核心脚本展开填充到buildroot主目录下的Makefile中去。最后make all执行Buildroot主目录下的Makefile,生成你想要的image。

package/pkg-generic.mk中通过调用同目录下的pkg-download.mk、pkg-utils.mk文件,已经帮你自动实现了下载、解压、依赖包下载编译等一系列机械化的流程。你只要需要按照格式写Makefile脚app_pkg.mk,填充下载地址,链接依赖库的名字等一些特有的构建细节即可。

总而言之,Buildroot本身提供构建流程的框架,开发者按照格式写脚本,提供必要的构建细节,配置整个系统,最后自动构建出你的系统。 



buildroot/packages里面有丰富的应用软件的配置文件,可以通过make menuconfig,出现图形化界面进行选择丰富的开源软件包的编译和构建。

在Buildroot论坛中,了解到关于STM32F4系列芯片运行Nuttx系统的相关介绍:

In case anyone is interested....


I modified buildroot to create a distribution for the STM32F4 processor. (It should be fairly portable to different Cortex-M processors though, the STM32F4 is the only one I've tested so far). 

So far it:


Builds the toolchain

Builds a modified Nuttx RTOS

Builds the icsp tools for programming and debugging (openocd/gdb) 

It also integrates the filesystem buildroot generates into the Nuttx kernel so it shows up in Nuttx's filesystem. 

It still has a ways to go, but right now it builds everything and works on my hardware. 

So far I've tested it on hardware I built, and on the STM32F407 discovery board with the attached baseboard. 

You can find instructions here 


http://www.vxmdesign.com/STM32.html


The git repo is 


https://github.com/vxmdesign/prjpluto.git 


and vdsc_defconfig is the config for the discovery board. 

Happy programming!

-Chris





感谢完成阅读,我是喜欢打篮球的写代码的篮球球痴,这个是我的公众号,感谢你关注并支持。我从大学开始接触电子和嵌入式软件知识,至今,已经毕业工作了9年,我喜欢嵌入式,也愿意从事这个行业。不管是从技术还是职场经验,都积累了足够多的经验,目前在一个非常优秀的团队中做开发工作。


很高兴认识每一个对技术努力,对人用心的朋友。


浏览 22
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报