当前Buildroot版本为Buildroot-2018.02
按照以下步骤配置完后,执行 make 即可。
如选择 firefly_rk3308_release,输入对应序号 1
完成编译后执行 SDK 根目录下的 mkfirmware.sh 脚本生成固件
执行过程:
-
下载源码;
-
配置、编译、安装交叉工具链;
-
配置、编译、安装选择的包;
-
按选择的格式生成根文件系统;
Buildroot 输出结果保存在output目录,具体目录由配置文件决定。 例如,编译配置firefly_rk3308_release,输出结果保存在buildroot/output/firefly_rk3308_release目录。
后续编译可以在buildroot/output/firefly_rk3308_release目录或是工程根目录下执行(make menuconfig也可以在工程根目录下执行),这个目录底下包括几个子目录:
-
image/:包含压缩好的根文件系统镜像文件。
-
build/: 包含所有的源文件,包括 Buildroot 所需主机工具和选择的包,这个目录包含所有模块源码。
-
staging/:这个目录类似根文件系统的目录结构,包含编译生成的所有头文件和库,以及其他开发文件,不过他们没有裁剪,比较庞大,不适用于目标文件系统。
整个Buildroot是由Makefile脚本和Kconfig配置文件构成的。你可以和编译Linux内核一样。
配置界面如下:
在Target packages里面添加和裁剪一些工具,按需求定制系统功能,常用到的libdrm、ssh、vsftpd、wpa_supplicant、pppd等都可在里面配置。
执行以下命令,将会保存当前配置,并自动修改 buildroot/configs/ 目录下的默认配置文件:
需要注意的是:
-
进行编译时,buildroot根据配置,会自动从网络获取相关的软件包,包括一些第三方库,插件,实用工具等,放在dl/目录。
-
软件包会解压在output/build/目录下,然后进行编译。
-
如果要修改软件包的源码,可以通过打补丁的方式进行修改,补丁集中放在package/目录,buildroot会在解压软件包时为其打上相应的补丁。
配置命令:
修改完成后,通过命令保存配置:
Buildroot 编译完成后,会在指定的输出目录 host 目录下生成交叉编译工具,我们可以用来编译目标程序。默认配置生成的交叉编译工具目录为:
我们可以直接用交叉编译工具编译程序,例如:
浮点支持(以下配置打开 neon 支持),RK3308 支持 crc/crypto/fp/simd 这几个 feature,配置如下:
在开发过程中,针对output/build/某个模块源码进行了修改,需要单独重新编译该模块软件包。
Buildroot在编译某个包的时候,会将编译的过程,通过一些标志文件记录下来,保存在对应的软件包源码的目录里,这些标志文件分别有:
这些标识文件主要控制这个软件包的下载,解压,打包,配置,编译,安装等。具体详细说明可参考:
也可以直接看mk文件,了解原理:
要想重新执行哪一个步骤,相应的就要删掉其对应的标志文件。假如你想重新编译某软件包源码,只需删掉该目录下的.stamp_built和.stamp_target_installed,然后再编译整个Buildroot就可以了。
Buildroot有更快捷的实现方法。
-
执行makeshow-targets显示出本次配置所要编译所有的目标,即packages。
-
执行make将构建并安装该软件包及其依赖项。
同时我们还可以通过make-,对软件包单独调用构建中的某一步骤,如下:
因此,如果我们想重新编译xxx模块软件包,执行makexxx-rebuild即可。
关于make的更多用法,可通过makehelp获得。
以上介绍都是在 Buildroot 已有源码包的情况下,我们去选择打开编译即可,如果 Buildroot没有或者我们自己写的应用该如何集成到 Buildroot ?
Buildroot 支持多种模块编译方式,包括 generic-package、cmake-package、autotools-package 等,我们以 generic-package 举例说明。
例子:buildroot/package/rockchip/fireflydemo
-
创建工程目录
-
新建 Config.in
-
新建 fireflydemo.mk,填入以下内容,其中源码目录指向 external/fireflydemo/src/
-
创建源码目录
-
编写源码 demo.c
-
编写Makefile
-
在将新建包加入到 Buildroot 编译系统内;
-
修改 package/rockchip/Config.in 最后加入下面这行:
-
配置选择包,make menuconfig 然后选上 fireflydemo 包;
-
编译: make fireflydemo
-
打包进文件系统:make
-
修改源码后重新编译包:make fireflydemo-rebuild
默认编译出来根文件系统,有些配置文件可能不能满足客制化需求,这时候 fs-overlay 就能排上用场,fs-overlay 目录会在编译的最后阶段替换到文件系统目录,打包进根文件系统。 fs-overlay路径由默认配置文件指定:
Rootfs 可配置为可读写 ext2 文件系统,方便系统调试使用。
-
修改 Kernel 中 bootargs 配置:
-
修改device/rockchip/rk3308/rockimg/对应的 parameter 文件,确保 rootfs 分区大小足够存放分区镜像。
-
修改 device\rockchip\rk3308\BoardConfig.mk 中 rootfs 文件系统类型:
-
rootfs 分区 ext2 文件系统镜像会自动打包生成,也可以直接在以下路径获取:
-
Linux
+关注
关注
87文章
11373浏览量
211295 -
嵌入式主板
+关注
关注
7文章
6092浏览量
35839 -
Firefly
+关注
关注
2文章
539浏览量
7212 -
RK3308
+关注
关注
1文章
40浏览量
1289 -
Buildroot
+关注
关注
1文章
48浏览量
1465
发布评论请先 登录
相关推荐
一文详解RK3308开发板Qt开发的流程
使用DKCook进行ROC-RK3308-CC Buildroot SDK的编译
fireflyROC-RK3308B-CC固件编译工具简介
fireflyROC-RK3308B-CC--启动模式说明
微雪电子RK3308主板CC启动模式介绍
Core 3308Y固件ROC RK3308B CC PLUS Buildroot NoUI

Core 3308Y固件ROC RK3308B CC PLUS Buildroot MiniGUI

ROC RK3308B CC PLUS Buildroot QT Desktop固件

Core 3308Y固件ROC RK3308B CC Buildroot NoUI固件

ROC RK3308B CC Buildroot Qt Desktop固件

IoT四核64位开源主板ROC RK3308B CC规格书

四核64位开源主板ROC RK3308B CC Plus规格书

评论