嵌入式构建系统buildroot的简要介绍

电脑杂谈  发布时间:2020-06-26 14:19:50  来源:网络整理

利用流媒体技术构建实时直播系统_嵌入式系统的构建_网络营销系统平台构建

先前由前所有者开发的产品使用了英特尔的SoC,其官方评估委员会推荐了两个测试系统: yocto和timesys(后来发现这两个都是基于yocto构建的),因此我们还必须使用yocto进行构建系统.

Yocto的前身应该是OpenEmbedded,使用bitbake作为核心工具,bitbake解析程序包配置(配方),处理程序包相关性,并分叉任务以下载,解压缩,修补,编译,安装和制作映像. bitbake用python编写. Yocto用于直接构建重量级分配系统,还可以生成软件包管理系统以支持安装.

一开始嵌入式系统的构建,我认为这件事太荒谬了. 有了它,大部分令人头疼的工作都为您完成. 您只需要配置参数并执行编译即可获得系统映像dd对于USB驱动器,您将获得安装盘!但是惊喜只是一小会儿. 在随后的开发中,我发现使用Yocto带来许多不便:

实际上,这些缺陷归根结底是因为Yocto太复杂了,并且想要考虑所有方面,这使得编写文档来描述或实际定制文档非常令人沮丧.

网络营销系统平台构建_嵌入式系统的构建_利用流媒体技术构建实时直播系统

作为一个面向嵌入式的构建系统,buildroot使我像被Yocto讨厌的人一样感到自在和有针对性.

buildroot麻雀虽小,但具有所有内部器官. 还有许多重要功能:

以上只是我使用后的个人经历. 我觉得在构建中小型嵌入式系统时,buildroot比Yocto更好. 甚至对于大型系统,Yocto都很容易使用吗?我很怀疑. 因为最重要的一点是您不能期望在开发过程中下载构建系统,因此,在进行简单的配置然后编译之后,就可以满足产品要求. 在开发过程中,由于各种原因,您将需要修改和定制构建系统. Yocto是一个具有复杂代码,抽象和概念的层次很多,文档不清晰以及编译时间长的系统,让人感到噩梦.

已经讲了很多,下面简要介绍一下buildroot的使用,这里使用的buildroot版本是2015.08.1.

网络营销系统平台构建_嵌入式系统的构建_利用流媒体技术构建实时直播系统

从官方网站下载后,首先检查docs / manual / manual.pdf文档,该文档从浅入深地介绍了buildroot,从整体到细节,您可以在后续的开发过程中找到相关的细节. . 通过本文档,在了解了buildroot构建系统中的概念之后,您基本上可以直接上手了.

make help                // 查看编译命令的帮助说明
make menuconfig          // 配置构建系统,包括平台属性、指定内核和uboot等
make linux-menuconfig    // 调用内核的menuconfig
make busybox-menuconfig  // 调用busybox的menuconfig
make <package-name>;     // 单独构建package
make                     // 开始构建整个系统

其中,make menuconfig可用于配置构建系统,直接复制Linux内核的工具集(带有一些补丁),并可配置内核代码路径,目标平台体系结构,交叉编译链和生成文件系统映像格式.嵌入式系统的构建,非常简洁方便,不知道它比Yocto高.

添加软件包也非常方便. 有关详细信息,请参阅手册第17章向Buildroot添加新软件包,其中详细介绍了各种方法和变量. 这是一个栗子,用于解释buildroot如何对嵌入式开发友好.

利用流媒体技术构建实时直播系统_网络营销系统平台构建_嵌入式系统的构建

Embedded通常会编写自己的驱动程序模块,编译为ko文件,然后在内核启动后根据实际需求进行动态加载. 手册中的第17.14章“用于构建内核的软件包的基础结构”介绍了如何在板上添加自己的内核驱动程序模块. 这是一个示例配置文件:

#################################################################
# foobar driver
# refer to buildroot manual chapter 17.14
#################################################################
FOOBAR_VERSION = 1
FOOBAR_SITE_METHOD = local
FOOBAR_SITE = $(TOPDIR)/$(call qstrip,$(BR2_PACKEG_FOOBAR_SRCPATH))
FOOBAR_INSTALL_IMAGES = NO
FOOBAR_INSTALL_TARGET = YES
FOOBAR_MODULE_SUBDIRS=src
FOOBAR_CFG_DIR=$(TARGET_DIR)/etc/modprobe.d
define FOOBAR_INSTALL_TARGET_CMDS
	install -d $(FOOBAR_CFG_DIR)
	install -m 644 $(@D)/foobar.conf $(FOOBAR_CFG_DIR)
endef
$(eval $(kernel-module))
$(eval $(generic-package))

配置的最后两行表示使用的模板:

有了这两个模板,只需要一个简单的配置:

网络营销系统平台构建_利用流媒体技术构建实时直播系统_嵌入式系统的构建

在编译过程中,内核源代码树KERDIR,交叉工具CROSS_COMPILE和平台ARCH均由buildroot处理;编译后,模块文件会自动安装在/ lib / modules对应的内核版本目录中,并且depmod缓存也会更新.

如果需要安装其他文件,例如在上面的/etc/modprobe.d目录中安装foobar.conf,则只需定义FOOBAR_INSTALL_TARGET_CMDS并添加相应的安装Shell命令即可添加其他安装命令.

此外,由于buildroot本身编译迅速且具有高度定制性,因此即使不用于构建整个系统,但作为交叉编译平台,编译一两个工具软件并执行它也非常方便. 在板上.

本文仅简要介绍了此示例,因为手动文档的详细信息以及buildroot本身的简单性和清晰度,buildroot的用户即使遇到问题也可以通过使用shell的经验快速入门. 和内核Kconfig,还可以快速定位并解决问题.


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-259173-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 陈慥
        陈慥

        股市跳水

      • 蒿海涛
        蒿海涛

        果断要找一个会踢球的老公呀~

      • 元友让
        元友让

        那蛆就绝对不会只“傻呼呼的”呆在一个“房子”里

      热点图片
      拼命载入中...