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

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

相关文章
|
7月前
|
Linux 测试技术
Linux基础项目开发1:量产工具——UI系统(五)
Linux基础项目开发1:量产工具——UI系统(五)
72 0
Linux基础项目开发1:量产工具——UI系统(五)
|
7月前
|
Linux 测试技术
Linux基础项目开发1:量产工具——页面系统(六)
Linux基础项目开发1:量产工具——页面系统(六)
60 0
Linux基础项目开发1:量产工具——页面系统(六)
|
4月前
|
SQL 开发框架 前端开发
基于SqlSugar的开发框架循序渐进介绍(28)-- 快速构建系统参数管理界面
基于SqlSugar的开发框架循序渐进介绍(28)-- 快速构建系统参数管理界面
|
4月前
|
内存技术
【软件开发流程控制文档】嵌入式应用软件在线升级功能软件概要设计
【软件开发流程控制文档】嵌入式应用软件在线升级功能软件概要设计
59 0
|
4月前
|
存储 内存技术
【软件开发流程控制文档】嵌入式应用软件在线升级功能软件需求规格书
【软件开发流程控制文档】嵌入式应用软件在线升级功能软件需求规格书
44 0
|
7月前
|
编解码 Linux
Linux基础项目开发1:量产工具——显示系统(二)
Linux基础项目开发1:量产工具——显示系统(二)
80 0
Linux基础项目开发1:量产工具——显示系统(二)
|
7月前
|
存储 监控 前端开发
JavaScript手册:公司员工电脑监控软件前端交互的代码设计
在当今信息时代,随着公司对员工电脑活动的监控需求不断增加,前端交互的代码设计变得尤为关键。本手册将深入探讨JavaScript编写的公司员工电脑监控软件监控代码,着重介绍如何设计能够在不引起怀疑的情况下,实现对员工电脑活动的细致监控。
268 2
|
7月前
|
监控 JavaScript 前端开发
Vue.js前端开发:为员工计算机监控软件定制动态界面
在当今数字化的工作环境中,员工计算机监控软件的需求日益增加。为了满足不同企业的需求,我们需要一种灵活且高度定制化的监控软件。本文将介绍如何利用Vue.js构建一个动态界面,为员工计算机监控软件提供个性化的前端体验。
250 0
|
监控 前端开发 JavaScript
Webgis系统调试与发布
Webgis系统调试与发布
94 0
谈谈嵌入式应用软件人机界面开发的菜单框架编写
谈谈嵌入式应用软件人机界面开发的菜单框架编写
106 0