Builtroot 定制自己的嵌入式软件系统(一)--初次

简介: Builtroot 定制自己的嵌入式软件系统(一)--初次

一 让带操作系统的嵌入式软件开发流程变得简单

通常情况下带操作系统的嵌入式软件系统由bootloader(u-boot),内核(Linux),文件系统组成。

对于bootloader和内核。嵌入式最大的特点之一就是平台比较多,各种架构的cpu(arm x86 mips.......)。对于不同的cpu架构有不同的交叉编译器。另外,就算cpu定下来,还可以有不同的外设。

对于文件系统灵活性更强,首先文件系统有jffs2,yaffs2,logfs,ubifs......,产生不同的文件系统需要用不同的工具,还有不同的参数配置。另外,对于做出来的文件系统可能又不同的需求,有的是音视频方案,有的是考勤机方案,有的是行车记录仪方案.....这个时候对借助busybox做出来的文件系统功能又有了不同的需求。这个时候的做不同版本的文件系统,哪个版本有什么应用,有什么库,有哪些启动参数,配置参数。

一个两个项目可能没有多大关系,假设你是芯片厂商,要把芯片卖给不同的产品客户并给他们提供方案,此时,是不是要崩溃了。

此时,就有一个需求。在PC上能否有个管理软件,对不同平台,不同需求的bootloader,内核,文件系统进行管理。程序员存在的使命就是让事情变得简单。其实国外的大牛们早已做了这件事请。一个神奇的软件工具诞生了-----builtroot(当然还有其他类似工具)

二 初次尝试Builtroot的甜头(Buildroot - Making Embedded Linux Easy)

打开https://buildroot.org/ builtroot的官网。就可以看到builtroot的广告词::Buildroot - Making Embedded Linux Easy(是不是特步的广告词就是在这产生的灵感?>_<)。其中有个很醒目的Button叫DOWNLOAD,点一下,完事之后就能得到一个类似叫buildroot-2016.08.tar.bz2或者buildroot-2016.08.tar.gz的东西。是他,是他,就是他。我们的主角闪亮登场了。先把他解压 到你认为比较合适的地方。

大概先瞄一眼这东西里面到底有什么:

我的妈呀,这么多文件夹,文件夹下面还有文件夹,蒙了不干了。不能这样干,没有苦哪来甜(有点类似追女孩,第一次一看这女的脾气太大,还是算了,那她永远成不了你太太........)。还得往下走,啃,啃。

在此应该介绍一下目录结构及其存放的是什么东西。介绍了会更蒙,这些文件都是满足实现自动配置功能产生的, 是被动产生的。不如先放一放,后续在详细介绍。在解压的buildroot-2016.08目录下面make menuconfig(跟linux内核差不多,Linux 的内核很多机制还是很极致,现在最新的U-Boot也开始模仿kernel 的配置方法make menuconfig)一下。在Linux kernel 目录下使用make menuconfig的过程是读取.config文件然后图形展示的过程。更改之后把相应的修改存入.config文件的过程。
结果如下图:

经常做Linux内核开发的小伙伴是不是好像看到了自己多年的老情人,很亲切。

先简单的介绍一下老朋友(LInux 的make menuconfig)的朋友。通过make menuconfig跳出来的界面就是我们日后管理我们配置的接口。

在Linux源码./arch/体系结构/configs的目录下 存放这已经保存的.config。原理就是将配置好的内核.config 重命名保存在了此文件夹下面(比如经典的三星2410配置 arch/arm/configs/s3c2410_defconfig)。在 Kernel根目录下可以通过“make 某配置”来选择当前项目,比如make s3c2410_defconfig。原理就是把arch/arm/configs/s3c2410_defconfig文件复制一份覆盖.config;builtroot也是使用的这种原理,它把配置文件放在了buildroot-2016.08/configs下面。有些厂商把自己的配置提交给了builtroot工程师,从而提高自己品牌的知名度。比如

如飞思卡尔 还有瑞芯微rk3288(firefly厂商二次开发)等等。

就拿firefly_rk3288_demo_defconfig为例,切换到buildroot-2016.08/ 根目录下,敲命令“make firefly_rk3288_demo_defconfig” 。此时make menuconfig 就可以看到基于firefly_rk3288_demo_defconfig配置的参数。具体配置下节在分析。

三 使用现成的配置体验一把

执行命令make ,可能需要几个小时。如果顺利的话可以在output/images目录下看到最终的果实

其中:

u-boot-spl-dtb.bin uboot可执行文件

uImage Linux 内核镜像

rootfs.ext2 ext2的文件系统

其他目录还有下载好的uboot,linux源代码,busybox。。。。。

哈哈,嵌入式软件相关的东西全在这里

相关文章
|
4天前
|
编解码 缓存 Prometheus
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
本期内容为「ximagine」频道《显示器测试流程》的规范及标准,我们主要使用Calman、DisplayCAL、i1Profiler等软件及CA410、Spyder X、i1Pro 2等设备,是我们目前制作内容数据的重要来源,我们深知所做的仍是比较表面的活儿,和工程师、科研人员相比有着不小的差距,测试并不复杂,但是相当繁琐,收集整理测试无不花费大量时间精力,内容不完善或者有错误的地方,希望大佬指出我们好改进!
47 16
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
|
运维 测试技术 区块链
链动2+1模式系统开发指南流程丨成熟案例丨功能设计丨测试部署丨方案项目丨逻辑需求丨源码出售
链动2+1模式系统开发方案是指一个较为复杂的系统开发模式,其中包含两个公链和一个私链的组合。
|
SQL 前端开发 Java
校园外卖点餐系统——Day01【项目简介、开发环境搭建、后台系统登录和退出功能】
校园外卖点餐系统——Day01【项目简介、开发环境搭建、后台系统登录和退出功能】
229 0
校园外卖点餐系统——Day01【项目简介、开发环境搭建、后台系统登录和退出功能】
|
Windows
分享五款功能简单粗暴的小软件
今天分享几款功能简单的小软件,小伙伴们们可以来看一下有没有你需要的功能软件。
158 0
分享五款功能简单粗暴的小软件
|
搜索推荐 Python
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(十一)
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(十一)
200 0
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(十一)
|
Python
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(七)
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(七)
200 0
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(七)
|
数据可视化 人机交互 Python
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(一)
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(一)
297 0
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(一)
|
Python
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(四)
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(四)
168 0
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(四)
|
Python
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(十)
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(十)
198 0
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(十)
|
Python 容器
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(六)
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(六)
137 0
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(六)