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月前
|
Linux 测试技术
Linux基础项目开发1:量产工具——页面系统(六)
Linux基础项目开发1:量产工具——页面系统(六)
46 0
Linux基础项目开发1:量产工具——页面系统(六)
|
存储 小程序 JavaScript
借助云开发实现小程序的登陆注册功能
借助云开发实现小程序的登陆注册功能
282 0
|
4月前
|
网络协议 Java 网络安全
基于Jeecgboot前后端分离的流程管理平台演示系统安装(一)
基于Jeecgboot前后端分离的流程管理平台演示系统安装(一)
35 1
|
4月前
|
前端开发 jenkins Java
基于Jeecgboot前后端分离的流程管理平台演示系统安装(三)
基于Jeecgboot前后端分离的流程管理平台演示系统安装(三)
34 1
|
4月前
|
资源调度 前端开发 jenkins
基于Jeecgboot前后端分离的流程管理平台演示系统安装(四)
基于Jeecgboot前后端分离的流程管理平台演示系统安装(四)
46 1
|
4月前
|
jenkins 持续交付
基于Jeecgboot前后端分离的流程管理平台演示系统安装(五)
基于Jeecgboot前后端分离的流程管理平台演示系统安装(五)
25 0
基于Jeecgboot前后端分离的流程管理平台演示系统安装(五)
|
4月前
|
存储 小程序 数据库
零基础开发小程序第五课-修改数据
零基础开发小程序第五课-修改数据
|
4月前
|
存储 监控 前端开发
JavaScript手册:公司员工电脑监控软件前端交互的代码设计
在当今信息时代,随着公司对员工电脑活动的监控需求不断增加,前端交互的代码设计变得尤为关键。本手册将深入探讨JavaScript编写的公司员工电脑监控软件监控代码,着重介绍如何设计能够在不引起怀疑的情况下,实现对员工电脑活动的细致监控。
252 2
|
11月前
|
安全
潮玩元宇宙大逃杀游戏系统开发稳定版/案例设计/详细功能/需求逻辑/源码项目
The development rules of virtual reality game systems, especially the metaverse escape game system, can vary depending on specific designs and requirements. The following are some common development rules and considerations that may include
|
存储 前端开发 安全
什么是盲盒游戏系统开发规则丨指南教程丨功能逻辑丨需求项目丨源码方案
确定盲盒游戏的目标受众、玩法要素和游戏规则。 - 确定游戏系统的核心功能,如盲盒的获取、开启、物品收集、交易等。 - 确定技术平台和开发语言,如移动端应用的开发是选择原生开发(如iOS的Swift或Android的Java/Kotlin)还是跨平台开发(如React Native或Flutter)。