本章介紹 Buildroot 固件的編譯使用。
-
方法一
初始化 repo 倉庫:
同步源碼:
同步過程中,網絡波動會導致下載速度過低中斷同步,可以使用下面腳本同步代碼:
-
方法二(國內用戶推薦使用)
考慮到國內用戶使用 repo 從網絡上下載全部代碼會比較慢,官方提供了基礎的源碼包Linux_SDK.7z。
下載 Linux_SDK.7z:
目錄:
安裝 Buildroot 編譯所需工具,確保工具都正確安裝:
選擇開發板對應的配置文件。配置文件會鏈接到device/rockchip/.BoardConfig.mk,查看該文件可確認當前所使用的配置文件:
用戶也可以通過參考該配置生成新的配置文件來適配自己所需要的固件。
重要配置介紹:(如果需要定制固件,可以修改下列配置信息)
在配置和搭建環境的工作都做好的前提下:
全自動編譯會編譯并打包固件,生成固件目錄rockdev/,同時會在IMAGE/中備份。
-
kernel
-
u-boot
-
recovery
recovery 分區可省略,若有需要,編譯 recovery:
-
rootfs
編譯 Buildroot 根文件系統,將會在buildroot/output生成編譯輸出目錄:
注意:確保作為普通用戶編譯 Buildroot 根文件系統,避免不必要的錯誤。編譯過程中會自動下載所需軟件包,請保持聯網狀態。
每次打包固件前先確保rockdev/目錄下文件鏈接正確:
可以運行./mkfirmware.sh更新鏈接:
提示:若不是編譯全部的分區鏡像,在運行./mkfirmware時,會遇到如下類似情況:
注意:打包前請確認tools/linux/Linux_Pack_Firmware/rockdev/package-file是否正確。打包會根據此文件進行分區打包。此文件鏈接會在執行./build.shpx30-buildroot.mk命令時更新,如果配置不對請再次執行該命令。
整合統一固件:
parameter.txt包含了固件的分區信息十分重要,你可以在device/rockchip/px30目錄下找到一些parameter.txt文件,下面以 parameter-debian.txt 為例子做介紹:
CMDLINE屬性是我們關注的地方。以 uboot 為例0x00002000@0x00004000(uboot)中0x00004000為uboot分區的起始位置0x00002000為分區的大小。后面的分區規則相同。用戶可以根據自己需要增減或者修改分區信息,但是請最少保留 uboot,trust,boot,rootfs 分區,這是機器能正常啟動的前提條件。parameter-ubuntu.txt 中使用的就是這樣的最簡分區方案。
分區介紹:
-
uboot 分區:燒寫 uboot 編譯出來的 uboot.img
-
trust 分區:燒寫 uboot 編譯出來的 trust.img
-
misc 分區:燒寫 misc.img,開機檢測進入 recovery 模式(可省略)
-
boot 分區:燒寫 kernel 編譯出來的 boot.img,包含 kernel 和設備樹信息
-
recovery 分區:燒寫 recovery.img(可省略)
-
backup 分區:預留,暫時沒有用。后續跟 Android 一樣作為 recovery 的 backup 使用(可省略)
-
oem 分區:給廠家使用,存放廠家的 app 或數據。只讀。代替原來音箱的 data 分區。掛載在 /oem 目錄(可省略)
-
rootfs 分區:存放 Buildroot 或者 Debian 編出來的 rootfs.img,只讀
-
userdata 分區:存放 app 臨時生成的文件或者是給最終用戶使用。可讀寫,掛載在 /userdata 目錄下(可省略)
此文件應當與parameter保持一致,用于固件打包。可以在tools/linux/Linux_Pack_Firmware/rockdev下找到相關文件。以 px30-ubuntu-package-file 為例介紹:
以上是 SDK 編譯后生成的鏡像文件。根據parameter.txt只打包自己用到的映像文件。
Buildroot 編譯輸出結果保存在output目錄,具體目錄由配置文件決定,本例保存在buildroot/output/rockchip_px30_64目錄,后續可以在該目錄執行make編譯根文件系統。
采用全自動編譯方式時,默認會生成buildroot/output/rockchip_px30_recovery目錄,這是recovery.img的編譯輸出目錄。
子目錄說明:
-
build/包含所有的源文件,包括 Buildroot 所需主機工具和選擇的包,這個目錄包含所有 模塊源碼。
-
host/主機端編譯需要的工具包括交叉編譯工具。
-
images/包含壓縮好的根文件系統鏡像文件。
-
staging/這個目錄類似根文件系統的目錄結構,包含編譯生成的所有頭文件和庫,以及其他開發文件,不過他們沒有裁剪,比較龐大,不適用于目標文件系統。
-
target/包含完整的根文件系統,對比staging/,它沒有開發文件,不包含頭文件,二進制文件也經過strip處理。
下文將介紹一些自定義 Buildroot 的方法。
模塊配置
默認編譯好的根文件系統不一定滿足我們的需求,我們可能需要增加一些第三方包,或者修改包的配置選項,Buildroot 支持圖形化方式去做配置選擇:
需要了解的是:
-
進行編譯時,Buildroot 根據配置,會自動從網絡獲取相關的軟件包,包括一些第三方庫,插件,實用工具等,放在dl/目錄。
-
軟件包會解壓在output/rockchip_px30_64/build/目錄下,然后進行編譯。
-
如果要修改軟件包的源碼,可以通過打補丁的方式進行修改,補丁集中放在package/目錄,Buildroot 會在解壓軟件包時為其打上相應的補丁。
busybox 配置修改
busybox 用于管理系統的命令工具,可按如下方式修改:
文件系統覆蓋
文件系統覆蓋是指在目標文件系統編譯完成后將文件覆蓋到文件系統目錄。通過這種方式,我們可以簡單的添加或修改一些文件:
-
本例覆蓋目錄buildroot/board/rockchip/px30/fs-overlay-64
-
公有覆蓋目錄buildroot/board/rockchip/common
例:buildroot/board/rockchip/px30/fs-overlay-64/usr/bin/rkbt將覆蓋文件系統的/usr/bin/rkbt文件。
-
嵌入式主板
+關注
關注
7文章
6097瀏覽量
36177 -
安卓
+關注
關注
5文章
2149瀏覽量
58402 -
Firefly
+關注
關注
2文章
541瀏覽量
7424 -
Buildroot
+關注
關注
1文章
50瀏覽量
1624
發布評論請先 登錄
fireflyCORE-PX30-JD4燒寫工作介紹

fireflyCORE-PX30-JD4接口定義介紹

fireflyCORE-PX30-JD4編譯 Ubuntu 固件簡介
fireflyCORE-PX30-JD4燒寫固件簡介
fireflyCORE-PX30-JD4產品簡介
fireflyAIO-3288J簡介編譯Buildroot固件簡介
Core 3328 JD4固件Buildroot(GPT)

Core PX30 JD4固件Android 8.1固件分享

Core PX30 JD4固件Buildroot(GPT)文件分享

Core PX30 JD4固件Ubuntu(GPT)文件分享

評論