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

fireflyAIO-3399C主板編譯Buildroot固件介紹
fireflyCORE-PX30-JD4接口定義介紹

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

Core PX30 JD4固件Android 8.1固件分享

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

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

Core PX3 SEJ固件Buildroot系統(tǒng)

Core 1808 JD4固件Buildroot

AIO 3566JD4固件Buildroot

評論