當前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文章
11415瀏覽量
212267 -
嵌入式主板
+關注
關注
7文章
6094瀏覽量
36075 -
Firefly
+關注
關注
2文章
541瀏覽量
7320 -
RK3308
+關注
關注
1文章
40瀏覽量
1422 -
Buildroot
+關注
關注
1文章
48瀏覽量
1555
發布評論請先 登錄
相關推薦
一文詳解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規格書

評論