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。。。。。

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

相关文章
|
6月前
十分钟上手把玩树莓派——系统创建指南
十分钟上手把玩树莓派——系统创建指南
|
6月前
|
存储 监控 前端开发
JavaScript手册:公司员工电脑监控软件前端交互的代码设计
在当今信息时代,随着公司对员工电脑活动的监控需求不断增加,前端交互的代码设计变得尤为关键。本手册将深入探讨JavaScript编写的公司员工电脑监控软件监控代码,着重介绍如何设计能够在不引起怀疑的情况下,实现对员工电脑活动的细致监控。
262 2
|
6月前
|
监控 JavaScript 前端开发
Vue.js前端开发:为员工计算机监控软件定制动态界面
在当今数字化的工作环境中,员工计算机监控软件的需求日益增加。为了满足不同企业的需求,我们需要一种灵活且高度定制化的监控软件。本文将介绍如何利用Vue.js构建一个动态界面,为员工计算机监控软件提供个性化的前端体验。
248 0
|
SQL 前端开发 Java
校园外卖点餐系统——Day01【项目简介、开发环境搭建、后台系统登录和退出功能】
校园外卖点餐系统——Day01【项目简介、开发环境搭建、后台系统登录和退出功能】
202 0
校园外卖点餐系统——Day01【项目简介、开发环境搭建、后台系统登录和退出功能】
|
监控 druid 数据库
作业收缴系统使用手册(自写开源小系统)
系统概述:写了个作业收缴系统。系统旨在优化作业上交流程,解决收缴作业的繁琐过程,传统收缴作业基于qq文件,或者邮箱收发。需要大量的人工操作和精力取维护。而本系统将作业系统部署到服务器,大大方便了教师/收作业者对作业的管理。系统简单易用。能够满足大部分需求。项目已开源,可以自己使用或者二次开发等等。欢迎star!!
245 0
作业收缴系统使用手册(自写开源小系统)
|
搜索推荐 Python
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(十一)
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(十一)
186 0
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(十一)
|
Python
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(十)
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(十)
181 0
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(十)
|
数据可视化 人机交互 Python
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(一)
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(一)
281 0
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(一)
|
Python
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(四)
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(四)
162 0
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(四)
|
Python 容器
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(六)
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(六)
123 0
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(六)
下一篇
无影云桌面