当前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 文件系统镜像会自动打包生成,也可以直接在以下路径获取:
TF卡设备挂载目录:/sdcard
U盘设备挂载目录:/udisk
支持文件系统格式:ext2,vfat,ntfs等。
全部0条评论
快来发表一下你的评论吧 !