除了系統要求外,還有其他軟硬方面的要求。
-
64 位系統
-
硬盤空間大于 40G,如果您進行多個構建,將需要更大的硬盤空間。
推薦使用Ubuntu 16.04 的系統進行編譯。其他版本沒有具體測試,可能需要對軟件包做相應調整。
操作系統安裝好后,且用戶已自行配置好網絡環境,則可繼續如下步驟完成相關軟件包的安裝。
-
apt-get update
sudo apt-get update
-
安裝 Kernel 及 U-Boot 編譯需要依賴的軟件包
-
安裝 Buildroot 編譯需要依賴的軟件包
-
必要工具安裝
sudo apt install genext2fs sudo apt install gawk
注意:編譯若遇到報錯,可以視報錯信息,安裝對應的軟件包。
鑒于 Rockchip Buildroot SDK 目前只在 Linux 下編譯,我們也僅提供了 Linux 下的交叉編譯工具鏈。其中 U-Boot 及 Kernel 使用的編譯工具鏈預置目錄在 prebuilt/gcc下,buildroot 使用該開源軟件中編譯出來的工具鏈。
U-Boot 及 Kernel 編譯工具鏈
prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
對應版本
gcc version 6.3.1 20170404 (Linaro GCC 6.3-2017.05)
Buildroot 編譯工具鏈
buildroot/output/rockchip_rk3308_release/host/bin/aarch64-rockchip-linux-gnu-
對應版本
gcc version 6.4.0 (Buildroot 2018.02-rc3-00017-g9c68ede)
如果需要其他平臺或版本的工具鏈,需自行編譯。
由于 SDK 比較大,我們提供了一個打包好的.git以供下載:
Firefly-RK3308_Linux_SDK
下載完成后先驗證一下 MD5 碼:
md5sum Firefly-RK3308_Linux_SDK_git_20190924.7z 97837ef273541b45ab12260db6c01fdd Firefly-RK3308_Linux_SDK_git_20190924.7z
確認無誤后,就可以解壓:
mkdir -p ~/prj/Firefly-RK3308 cd ~/prj/Firefly-RK3308 7zr x Firefly-RK3308_Linux_SDK_git_20190924.7z git reset --hard HEAD
解壓出來的SDK,已經默認添加遠程倉庫
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 開源項目代碼,可定制根文件系統 -
build.sh
為系統編譯腳本,執行可進行 SDK 的完整編譯 -
device
目錄存放板級配置及一些預置文件,開機腳本等 -
external
目錄存放 SDK 相關庫及工具源碼 -
kernel
為內核部分源碼 -
mkfirmware.sh
腳本可對鏡像文件進行打包,并統一拷貝至rockdev/
目錄 -
prebuilts
目錄存放 U-Boot、Kernel 編譯使用的交叉編譯工具鏈 -
rkbin
目錄存放 Rockchip 平臺一些關鍵性二進制文件,包括ddr.bin,miniloader.bin,bl31.bin,在 U-Boot 編譯過程中會用到 -
rockdev
執行 mkfirmware.sh 會把系統編譯的生成的鏡像,統一拷貝至 rockdev/ -
tools
目錄存放著 Windows 及 Linux 環境下的開發工具、調試工具、量產工具 -
u-boot
目錄存放著 U-Boot 部分的源碼
編譯 Uboot:
cd u-boot/ ./make.sh rk3308
編譯完,會生成 trust.img、rk3308_loader_xxx.bin、uboot.img 三個鏡像文件。
編譯 kenrel 的時候可以直接 make arch=arm64 dts-name.img
(如 rk3308b-roc-cc-amic_emmc.img
),即可生成對應的 resource.img(包含 dtb 數據)。
最終生成的kernel.img和resource.img將會被打包進zboot.img,更換內核的時候,只需燒寫zboot.img即可。
注意:凡是有大更新或者個別軟件更新,需要清掉舊版本的相關內容,但編譯腳本是不會自動覆蓋的。因此需要手動解決。最省事的方法就是刪掉 buildroot/output/
目錄,然后再重新編譯SDK。
rm buildroot/output -rf
編譯 Buildroot,envsetup.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,輸入對應序號 1
執行編譯:
make
完成編譯后執行 SDK 根目錄下的 mkfirmware.sh 腳本生成固件。
./mkfirmware.sh
所有燒寫所需的鏡像都將會拷貝于 rockdev 目錄。
rockdev/ ├── boot.img ├── MiniLoaderAll.bin ├── misc.img ├── oem.img ├── parameter.txt ├── recovery.img ├── rootfs.img ├── trust.img ├── uboot.img └── userdata.img
得到了所有鏡像文件后,為了方便燒寫及量產,通常可手動將這些單獨的鏡像通過腳本打包成為一個統一固件:update.img。打包方法見下文。
為了提高編譯的效率,降低人工編譯可能出現的誤操作,該 SDK 中集成了全自動化編譯腳本,方便固件編譯、備份。
該全自動化編譯腳本原始文件存放于:
device/rockchip/common/build.sh
在SDK根目錄創建了相應軟鏈接build.sh
。
./build.sh roc-rk3308b-cc_release_BoardConfig.mk ./build.sh
或者可以通過修改默認配置 device/rockchip/rk3308/BoardConfig.mk
腳本中的特定變量,以編出對應產品固件
#========================= # 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
執行自動編譯腳本:
./build.sh
該腳本會自動配置環境變量,并自動編譯 U-Boot,編譯 Kernel,編譯Buildroot,編譯 Recovery 繼而生成固件。
為了方便開發調試,上文說到的“全自動化編譯腳本”,也支持單獨模塊進行編譯,方便模塊調試,可指定并編譯部分模塊。
部分編譯可參見使用說明:
./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
如單獨編譯 kernel,只需要執行以下命令:
./build.sh kernel
固件打包工具可將各零散鏡像文件,打包成一個完整的 update.img 形式,方便量產燒寫及升級。
Windows 系統下,打包工具存放在 tools\windows\AndroidTool\rockdev
,打包步驟如下:
-
打開 rockdev 目錄,編輯 package-file。按照 package-file 進行配置,package-file 里面配置 img 鏡像放在 Image 目錄底下的,將需要放到 Image 目錄的鏡像拷貝進去即可。且注意配置時,鏡像名字的準確。其中注意bootloader選項,應該根據自己生成的 loader 名稱進行修改。
-
編輯 mkupdate.bat。 需要修改 loader 名稱為實際存放的loader 名稱即可。
-
點擊 mkupdate.bat 運行即可,運行完會在當前目錄生成一個 update.img。
打包工具存放在 SDK/tools/linux/Linux_Pack_Firmware/rockdev/
,打包步驟如下:
-
打開 rockdev 目錄,編輯 package-file。 按照 package-file 進行配置,package-file 里面配置 img 鏡像放在 Image 目錄底下的,將需要放到 Image 目錄的鏡像拷貝進去即可。且注意配置時,鏡像名字的準確。其中注意bootloader選項,應該根據自己生成的 loader 名稱進行修改。
-
編輯 mkupdate.sh。 需要修改 loader 名稱為實際存放的loader 名稱即可。
-
在 rockdev 目錄下,執行以下命令,運行完會在當前目錄生成一個 update.img。
./mkupdate.sh
另外,Linux下,SDK有提供一鍵打包工具,自動生成統一固件 rockdev/update.img
./build.sh updateimg
-
嵌入式主板
+關注
關注
7文章
6086瀏覽量
35612 -
安卓
+關注
關注
5文章
2136瀏覽量
57599 -
Firefly
+關注
關注
2文章
538瀏覽量
7129 -
RK3308
+關注
關注
1文章
39瀏覽量
1195
發布評論請先 登錄
相關推薦
fireflyROC-RK3308B主板CC固件簡介

fireflyROC-RK3308B-CC固件編譯工具簡介
fireflyROC-RK3308B-CC--啟動模式說明
fireflyROC-RK3308B主板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 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固件

四核64位開源主板ROC RK3308B CC Plus規格書

評論