除了系統(tǒng)要求外,還有其他軟硬方面的要求。
-
64 位系統(tǒng)
-
硬盤(pán)空間大于 40G,如果您進(jìn)行多個(gè)構(gòu)建,將需要更大的硬盤(pán)空間。
推薦使用Ubuntu 16.04 的系統(tǒng)進(jìn)行編譯。其他版本沒(méi)有具體測(cè)試,可能需要對(duì)軟件包做相應(yīng)調(diào)整。
操作系統(tǒng)安裝好后,且用戶(hù)已自行配置好網(wǎng)絡(luò)環(huán)境,則可繼續(xù)如下步驟完成相關(guān)軟件包的安裝。
-
apt-get update
sudo apt-get update -
安裝 Kernel 及 U-Boot 編譯需要依賴(lài)的軟件包
-
安裝 Buildroot 編譯需要依賴(lài)的軟件包
-
必要工具安裝
sudo apt install genext2fs sudo apt install gawk 注意:編譯若遇到報(bào)錯(cuò),可以視報(bào)錯(cuò)信息,安裝對(duì)應(yīng)的軟件包。
鑒于 Rockchip Buildroot SDK 目前只在 Linux 下編譯,我們也僅提供了 Linux 下的交叉編譯工具鏈。其中 U-Boot 及 Kernel 使用的編譯工具鏈預(yù)置目錄在 prebuilt/gcc下,buildroot 使用該開(kāi)源軟件中編譯出來(lái)的工具鏈。
U-Boot 及 Kernel 編譯工具鏈
prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- 對(duì)應(yīng)版本
gcc version 6.3.1 20170404 (Linaro GCC 6.3-2017.05) Buildroot 編譯工具鏈
buildroot/output/rockchip_rk3308_release/host/bin/aarch64-rockchip-linux-gnu- 對(duì)應(yīng)版本
gcc version 6.4.0 (Buildroot 2018.02-rc3-00017-g9c68ede) 如果需要其他平臺(tái)或版本的工具鏈,需自行編譯。
由于 SDK 比較大,我們提供了一個(gè)打包好的.git以供下載:
Firefly-RK3308_Linux_SDK
下載完成后先驗(yàn)證一下 MD5 碼:
md5sum Firefly-RK3308_Linux_SDK_git_20190924.7z 97837ef273541b45ab12260db6c01fdd Firefly-RK3308_Linux_SDK_git_20190924.7z 確認(rèn)無(wú)誤后,就可以解壓:
mkdir -p ~/prj/Firefly-RK3308 cd ~/prj/Firefly-RK3308 7zr x Firefly-RK3308_Linux_SDK_git_20190924.7z git reset --hard HEAD 解壓出來(lái)的SDK,已經(jīng)默認(rèn)添加遠(yuǎn)程倉(cāng)庫(kù)
git remote -v gitlab git@gitlab.com/TeeFirefly/rk3308-linux.git (fetch) gitlab git@gitlab.com/TeeFirefly/rk3308-linux.git (push) 以后就可以直接從 gitlab 處更新:
git pull gitlab firefly:firefly 也可以到 https://gitlab.com/TeeFirefly/rk3308-linux 在線瀏覽源碼
. ├── buildroot ├── build.sh -> device/rockchip/common/build.sh ├── device ├── envsetup.sh -> buildroot/build/envsetup.sh ├── external ├── kernel ├── Makefile -> buildroot/build/Makefile ├── mkfirmware.sh -> device/rockchip/rk3308/mkfirmware.sh ├── prebuilts ├── rkbin ├── rockdev ├── tools ├── u-boot └── yocto 其中:
-
buildroot目錄存放 buildroot 開(kāi)源項(xiàng)目代碼,可定制根文件系統(tǒng) -
build.sh為系統(tǒng)編譯腳本,執(zhí)行可進(jìn)行 SDK 的完整編譯 -
device目錄存放板級(jí)配置及一些預(yù)置文件,開(kāi)機(jī)腳本等 -
external目錄存放 SDK 相關(guān)庫(kù)及工具源碼 -
kernel為內(nèi)核部分源碼 -
mkfirmware.sh腳本可對(duì)鏡像文件進(jìn)行打包,并統(tǒng)一拷貝至rockdev/目錄 -
prebuilts目錄存放 U-Boot、Kernel 編譯使用的交叉編譯工具鏈 -
rkbin目錄存放 Rockchip 平臺(tái)一些關(guān)鍵性二進(jìn)制文件,包括ddr.bin,miniloader.bin,bl31.bin,在 U-Boot 編譯過(guò)程中會(huì)用到 -
rockdev執(zhí)行 mkfirmware.sh 會(huì)把系統(tǒng)編譯的生成的鏡像,統(tǒng)一拷貝至 rockdev/ -
tools目錄存放著 Windows 及 Linux 環(huán)境下的開(kāi)發(fā)工具、調(diào)試工具、量產(chǎn)工具 -
u-boot目錄存放著 U-Boot 部分的源碼
編譯 Uboot:
cd u-boot/ ./make.sh rk3308 編譯完,會(huì)生成 trust.img、rk3308_loader_xxx.bin、uboot.img 三個(gè)鏡像文件。
cd kernel/ make arch=arm64 firefly-rk3308b_linux_defconfig make arch=arm64 rk3308b-roc-cc-amic_emmc.img
編譯 kenrel 的時(shí)候可以直接 make arch=arm64 dts-name.img (如 rk3308b-roc-cc-amic_emmc.img),即可生成對(duì)應(yīng)的 resource.img(包含 dtb 數(shù)據(jù))。
最終生成的kernel.img和resource.img將會(huì)被打包進(jìn)zboot.img,更換內(nèi)核的時(shí)候,只需燒寫(xiě)zboot.img即可。
注意:凡是有大更新或者個(gè)別軟件更新,需要清掉舊版本的相關(guān)內(nèi)容,但編譯腳本是不會(huì)自動(dòng)覆蓋的。因此需要手動(dòng)解決。最省事的方法就是刪掉 buildroot/output/ 目錄,然后再重新編譯SDK。
rm buildroot/output -rf 編譯 Buildroot,envsetup.sh 是終端環(huán)境變量設(shè)置腳本:
source buildroot/build/envsetup.sh You're building on Linux Lunch menu...pick a combo: 1. firefly_rk3308_release 2. firefly_rk3308_recovery 3. firefly_rk3308_pcba Which would you like? [1] 1 =========================================== 如選擇 firefly_rk3308_release,輸入對(duì)應(yīng)序號(hào) 1
執(zhí)行編譯:
make 完成編譯后執(zhí)行 SDK 根目錄下的 mkfirmware.sh 腳本生成固件。
./mkfirmware.sh 所有燒寫(xiě)所需的鏡像都將會(huì)拷貝于 rockdev 目錄。
rockdev/ ├── boot.img ├── MiniLoaderAll.bin ├── misc.img ├── oem.img ├── parameter.txt ├── recovery.img ├── rootfs.img ├── trust.img ├── uboot.img └── userdata.img 得到了所有鏡像文件后,為了方便燒寫(xiě)及量產(chǎn),通??墒謩?dòng)將這些單獨(dú)的鏡像通過(guò)腳本打包成為一個(gè)統(tǒng)一固件:update.img。打包方法見(jiàn)下文。
為了提高編譯的效率,降低人工編譯可能出現(xiàn)的誤操作,該 SDK 中集成了全自動(dòng)化編譯腳本,方便固件編譯、備份。
該全自動(dòng)化編譯腳本原始文件存放于:
device/rockchip/common/build.sh
在SDK根目錄創(chuàng)建了相應(yīng)軟鏈接build.sh。
./build.sh roc-rk3308b-cc_release_BoardConfig.mk ./build.sh
或者可以通過(guò)修改默認(rèn)配置 device/rockchip/rk3308/BoardConfig.mk 腳本中的特定變量,以編出對(duì)應(yīng)產(chǎn)品固件
#========================= # Compile Config #========================= # Target arch export RK_ARCH=arm64 # Uboot defconfig export RK_UBOOT_DEFCONFIG=rk3308 # Kernel defconfig export RK_KERNEL_DEFCONFIG=firefly-rk3308b_linux_defconfig # Kernel dts export RK_KERNEL_DTS=rk3308b-roc-cc-amic_emmc # boot image type export RK_BOOT_IMG=zboot.img # kernel image path export RK_KERNEL_IMG=kernel/arch/arm64/boot/Image.lz4 執(zhí)行自動(dòng)編譯腳本:
./build.sh 該腳本會(huì)自動(dòng)配置環(huán)境變量,并自動(dòng)編譯 U-Boot,編譯 Kernel,編譯Buildroot,編譯 Recovery 繼而生成固件。
為了方便開(kāi)發(fā)調(diào)試,上文說(shuō)到的“全自動(dòng)化編譯腳本”,也支持單獨(dú)模塊進(jìn)行編譯,方便模塊調(diào)試,可指定并編譯部分模塊。
部分編譯可參見(jiàn)使用說(shuō)明:
./build.sh -h ====USAGE: build.sh modules==== uboot -build uboot kernel -build kernel rootfs -build default rootfs, currently build buildroot as default buildroot -build buildroot rootfs yocto -build yocto rootfs, currently build ros as default ros -build ros rootfs debian -build debian rootfs pcba -build pcba recovery -build recovery all -build uboot, kernel, rootfs, recovery image cleanall -clean uboot, kernel, rootfs, recovery firmware -pack all the image we need to boot up system updateimg -pack update image save -save images, patches, commands used to debug default -build all modules 如單獨(dú)編譯 kernel,只需要執(zhí)行以下命令:
./build.sh kernel 固件打包工具可將各零散鏡像文件,打包成一個(gè)完整的 update.img 形式,方便量產(chǎn)燒寫(xiě)及升級(jí)。
Windows 系統(tǒng)下,打包工具存放在 tools\windows\AndroidTool\rockdev,打包步驟如下:
-
打開(kāi) rockdev 目錄,編輯 package-file。按照 package-file 進(jìn)行配置,package-file 里面配置 img 鏡像放在 Image 目錄底下的,將需要放到 Image 目錄的鏡像拷貝進(jìn)去即可。且注意配置時(shí),鏡像名字的準(zhǔn)確。其中注意bootloader選項(xiàng),應(yīng)該根據(jù)自己生成的 loader 名稱(chēng)進(jìn)行修改。
-
編輯 mkupdate.bat。 需要修改 loader 名稱(chēng)為實(shí)際存放的loader 名稱(chēng)即可。
-
點(diǎn)擊 mkupdate.bat 運(yùn)行即可,運(yùn)行完會(huì)在當(dāng)前目錄生成一個(gè) update.img。
打包工具存放在 SDK/tools/linux/Linux_Pack_Firmware/rockdev/,打包步驟如下:
-
打開(kāi) rockdev 目錄,編輯 package-file。 按照 package-file 進(jìn)行配置,package-file 里面配置 img 鏡像放在 Image 目錄底下的,將需要放到 Image 目錄的鏡像拷貝進(jìn)去即可。且注意配置時(shí),鏡像名字的準(zhǔn)確。其中注意bootloader選項(xiàng),應(yīng)該根據(jù)自己生成的 loader 名稱(chēng)進(jìn)行修改。
-
編輯 mkupdate.sh。 需要修改 loader 名稱(chēng)為實(shí)際存放的loader 名稱(chēng)即可。
-
在 rockdev 目錄下,執(zhí)行以下命令,運(yùn)行完會(huì)在當(dāng)前目錄生成一個(gè) update.img。
./mkupdate.sh
另外,Linux下,SDK有提供一鍵打包工具,自動(dòng)生成統(tǒng)一固件 rockdev/update.img
./build.sh updateimg-
嵌入式主板
+關(guān)注
關(guān)注
7文章
6107瀏覽量
36834 -
安卓
+關(guān)注
關(guān)注
5文章
2173瀏覽量
59720 -
Firefly
+關(guān)注
關(guān)注
2文章
544瀏覽量
8933 -
RK3308
+關(guān)注
關(guān)注
1文章
40瀏覽量
1898
發(fā)布評(píng)論請(qǐng)先 登錄
ROC-RK3308主板CC固件編譯的知識(shí)點(diǎn)解析,絕對(duì)實(shí)用
fireflyROC-RK3308B主板CC固件簡(jiǎn)介
fireflyROC-RK3308B-CC固件編譯工具簡(jiǎn)介
fireflyROC-RK3308B-CC--啟動(dòng)模式說(shuō)明
fireflyROC-RK3308B主板CC升級(jí)固件簡(jiǎn)介
fireflyROC-RK3308B主板CC教程簡(jiǎn)介
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 PLUS Ubuntu Minimal固件
Core 3308Y固件ROC RK3308B CC PLUS Ubuntu Desktop固件
Core 3308Y固件ROC RK3308B CC PLUS支持Docker固件
Core 3308Y固件ROC RK3308B CC Buildroot NoUI固件
ROC RK3308B CC Buildroot Qt Desktop固件
IoT四核64位開(kāi)源主板ROC RK3308B CC規(guī)格書(shū)

fireflyROC-RK3308B主板CC固件編譯簡(jiǎn)介
評(píng)論