當(dāng)前Buildroot版本為Buildroot-2018.02
按照以下步驟配置完后,執(zhí)行 make 即可。
如選擇 firefly_rk3308_release,輸入對應(yīng)序號 1
完成編譯后執(zhí)行 SDK 根目錄下的 mkfirmware.sh 腳本生成固件
執(zhí)行過程:
-
下載源碼;
-
配置、編譯、安裝交叉工具鏈;
-
配置、編譯、安裝選擇的包;
-
按選擇的格式生成根文件系統(tǒng);
Buildroot 輸出結(jié)果保存在output目錄,具體目錄由配置文件決定。 例如,編譯配置firefly_rk3308_release,輸出結(jié)果保存在buildroot/output/firefly_rk3308_release目錄。
后續(xù)編譯可以在buildroot/output/firefly_rk3308_release目錄或是工程根目錄下執(zhí)行(make menuconfig也可以在工程根目錄下執(zhí)行),這個目錄底下包括幾個子目錄:
-
image/:包含壓縮好的根文件系統(tǒng)鏡像文件。
-
build/: 包含所有的源文件,包括 Buildroot 所需主機(jī)工具和選擇的包,這個目錄包含所有模塊源碼。
-
staging/:這個目錄類似根文件系統(tǒng)的目錄結(jié)構(gòu),包含編譯生成的所有頭文件和庫,以及其他開發(fā)文件,不過他們沒有裁剪,比較龐大,不適用于目標(biāo)文件系統(tǒng)。
整個Buildroot是由Makefile腳本和Kconfig配置文件構(gòu)成的。你可以和編譯Linux內(nèi)核一樣。
配置界面如下:
在Target packages里面添加和裁剪一些工具,按需求定制系統(tǒng)功能,常用到的libdrm、ssh、vsftpd、wpa_supplicant、pppd等都可在里面配置。
執(zhí)行以下命令,將會保存當(dāng)前配置,并自動修改 buildroot/configs/ 目錄下的默認(rèn)配置文件:
需要注意的是:
-
進(jìn)行編譯時,buildroot根據(jù)配置,會自動從網(wǎng)絡(luò)獲取相關(guān)的軟件包,包括一些第三方庫,插件,實用工具等,放在dl/目錄。
-
軟件包會解壓在output/build/目錄下,然后進(jìn)行編譯。
-
如果要修改軟件包的源碼,可以通過打補(bǔ)丁的方式進(jìn)行修改,補(bǔ)丁集中放在package/目錄,buildroot會在解壓軟件包時為其打上相應(yīng)的補(bǔ)丁。
配置命令:
修改完成后,通過命令保存配置:
Buildroot 編譯完成后,會在指定的輸出目錄 host 目錄下生成交叉編譯工具,我們可以用來編譯目標(biāo)程序。默認(rèn)配置生成的交叉編譯工具目錄為:
我們可以直接用交叉編譯工具編譯程序,例如:
浮點支持(以下配置打開 neon 支持),RK3308 支持 crc/crypto/fp/simd 這幾個 feature,配置如下:
在開發(fā)過程中,針對output/build/某個模塊源碼進(jìn)行了修改,需要單獨(dú)重新編譯該模塊軟件包。
Buildroot在編譯某個包的時候,會將編譯的過程,通過一些標(biāo)志文件記錄下來,保存在對應(yīng)的軟件包源碼的目錄里,這些標(biāo)志文件分別有:
這些標(biāo)識文件主要控制這個軟件包的下載,解壓,打包,配置,編譯,安裝等。具體詳細(xì)說明可參考:
也可以直接看mk文件,了解原理:
要想重新執(zhí)行哪一個步驟,相應(yīng)的就要刪掉其對應(yīng)的標(biāo)志文件。假如你想重新編譯某軟件包源碼,只需刪掉該目錄下的.stamp_built和.stamp_target_installed,然后再編譯整個Buildroot就可以了。
Buildroot有更快捷的實現(xiàn)方法。
-
執(zhí)行makeshow-targets顯示出本次配置所要編譯所有的目標(biāo),即packages。
-
執(zhí)行make將構(gòu)建并安裝該軟件包及其依賴項。
同時我們還可以通過make-,對軟件包單獨(dú)調(diào)用構(gòu)建中的某一步驟,如下:
因此,如果我們想重新編譯xxx模塊軟件包,執(zhí)行makexxx-rebuild即可。
關(guān)于make的更多用法,可通過makehelp獲得。
以上介紹都是在 Buildroot 已有源碼包的情況下,我們?nèi)ミx擇打開編譯即可,如果 Buildroot沒有或者我們自己寫的應(yīng)用該如何集成到 Buildroot ?
Buildroot 支持多種模塊編譯方式,包括 generic-package、cmake-package、autotools-package 等,我們以 generic-package 舉例說明。
例子:buildroot/package/rockchip/fireflydemo
-
創(chuàng)建工程目錄
-
新建 Config.in
-
新建 fireflydemo.mk,填入以下內(nèi)容,其中源碼目錄指向 external/fireflydemo/src/
-
創(chuàng)建源碼目錄
-
編寫源碼 demo.c
-
編寫Makefile
-
在將新建包加入到 Buildroot 編譯系統(tǒng)內(nèi);
-
修改 package/rockchip/Config.in 最后加入下面這行:
-
配置選擇包,make menuconfig 然后選上 fireflydemo 包;
-
編譯: make fireflydemo
-
打包進(jìn)文件系統(tǒng):make
-
修改源碼后重新編譯包:make fireflydemo-rebuild
默認(rèn)編譯出來根文件系統(tǒng),有些配置文件可能不能滿足客制化需求,這時候 fs-overlay 就能排上用場,fs-overlay 目錄會在編譯的最后階段替換到文件系統(tǒng)目錄,打包進(jìn)根文件系統(tǒng)。 fs-overlay路徑由默認(rèn)配置文件指定:
Rootfs 可配置為可讀寫 ext2 文件系統(tǒng),方便系統(tǒng)調(diào)試使用。
-
修改 Kernel 中 bootargs 配置:
-
修改device/rockchip/rk3308/rockimg/對應(yīng)的 parameter 文件,確保 rootfs 分區(qū)大小足夠存放分區(qū)鏡像。
-
修改 device\rockchip\rk3308\BoardConfig.mk 中 rootfs 文件系統(tǒng)類型:
-
rootfs 分區(qū) ext2 文件系統(tǒng)鏡像會自動打包生成,也可以直接在以下路徑獲取:
-
Linux
+關(guān)注
關(guān)注
87文章
11509瀏覽量
213726 -
嵌入式主板
+關(guān)注
關(guān)注
7文章
6100瀏覽量
36300 -
Firefly
+關(guān)注
關(guān)注
2文章
542瀏覽量
8386 -
RK3308
+關(guān)注
關(guān)注
1文章
40瀏覽量
1566 -
Buildroot
+關(guān)注
關(guān)注
1文章
50瀏覽量
1683
發(fā)布評論請先 登錄
一文詳解RK3308開發(fā)板Qt開發(fā)的流程
使用DKCook進(jìn)行ROC-RK3308-CC Buildroot SDK的編譯
fireflyROC-RK3308B-CC固件編譯工具簡介
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規(guī)格書

四核64位開源主板ROC RK3308B CC Plus規(guī)格書

評論