除了系統要求外,還有其他軟硬方面的要求。
-
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固件簡介
![<b class='flag-5'>fireflyROC-RK3308B</b><b class='flag-5'>主板</b><b class='flag-5'>CC</b><b class='flag-5'>固件</b><b class='flag-5'>簡介</b>](https://file.elecfans.com/web1/M00/AB/4C/o4YBAF222fqACaYjAAHVb76hkDo587.png)
fireflyROC-RK3308B-CC固件編譯工具簡介
fireflyROC-RK3308B-CC--啟動模式說明
fireflyROC-RK3308B主板CC升級固件簡介
Core 3308Y固件ROC RK3308B CC PLUS Buildroot NoUI
![Core <b class='flag-5'>3308</b>Y<b class='flag-5'>固件</b>ROC <b class='flag-5'>RK3308B</b> <b class='flag-5'>CC</b> PLUS Buildroot NoUI](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Core 3308Y固件ROC RK3308B CC PLUS Buildroot MiniGUI
![Core <b class='flag-5'>3308</b>Y<b class='flag-5'>固件</b>ROC <b class='flag-5'>RK3308B</b> <b class='flag-5'>CC</b> PLUS Buildroot MiniGUI](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
ROC RK3308B CC PLUS Buildroot QT Desktop固件
![ROC <b class='flag-5'>RK3308B</b> <b class='flag-5'>CC</b> PLUS Buildroot QT Desktop<b class='flag-5'>固件</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Core 3308Y ROC RK3308B CC PLUS Ubuntu Minimal固件
![Core <b class='flag-5'>3308</b>Y ROC <b class='flag-5'>RK3308B</b> <b class='flag-5'>CC</b> PLUS Ubuntu Minimal<b class='flag-5'>固件</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Core 3308Y固件ROC RK3308B CC PLUS Ubuntu Desktop固件
![Core <b class='flag-5'>3308</b>Y<b class='flag-5'>固件</b>ROC <b class='flag-5'>RK3308B</b> <b class='flag-5'>CC</b> PLUS Ubuntu Desktop<b class='flag-5'>固件</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Core 3308Y固件ROC RK3308B CC PLUS支持Docker固件
![Core <b class='flag-5'>3308</b>Y<b class='flag-5'>固件</b>ROC <b class='flag-5'>RK3308B</b> <b class='flag-5'>CC</b> PLUS支持Docker<b class='flag-5'>固件</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Core 3308Y固件ROC RK3308B CC Buildroot NoUI固件
![Core <b class='flag-5'>3308</b>Y<b class='flag-5'>固件</b>ROC <b class='flag-5'>RK3308B</b> <b class='flag-5'>CC</b> Buildroot NoUI<b class='flag-5'>固件</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
ROC RK3308B CC Buildroot Qt Desktop固件
![ROC <b class='flag-5'>RK3308B</b> <b class='flag-5'>CC</b> Buildroot Qt Desktop<b class='flag-5'>固件</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
四核64位開源主板ROC RK3308B CC Plus規格書
![四核64位開源<b class='flag-5'>主板</b>ROC <b class='flag-5'>RK3308B</b> <b class='flag-5'>CC</b> Plus規格書](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論