本文將為大家介紹在飛凌嵌入式OK3568-C開發板上進行源碼編譯的過程,希望能夠對各位工程師小伙伴有所幫助。話不多說,我們馬上進入正題。 一、準備源碼 1. 創建工作目錄 $mkdir -p ~/rk3568
2. 拷貝源碼 將RK3568用戶資料中的源碼文件OK3568-linux-source.tar.bz2.a*拷貝到虛擬機~/rk3568目錄。
拷貝文件的方式有很多,筆者使用的是共享文件夾方式。 【注】OK3568源碼使用分段壓縮,每段最大4G,這樣方便拷貝,因此有些存儲器單文件最大支持4G。 3. 解壓源碼 $cat OK3568-linux-source.tar.bz2.a* >OK3568-linux-source.tar.bz2 $tar -xvf OK3568-linux-source.tar.bz2 耐心等待完成即可,解壓時間有點久。 4. 進入源碼 $cd ~/rk3568/OK3568-linux-source 目錄結構
二、編譯SDK
1. 編譯前配置 在device/rockchip/ok3568/目錄下,有不同板型的配置文件,選擇配置文件: $./build.shBoardConfig-ok3568.mk 相關配置介紹:
2. 編譯 編譯u-boot $./build.shuboot
……
編譯kernel $./build.shkernel
……
【注】編譯一段時間后會彈出下圖界面,需要選擇,提取圖中信息,VCCIO4和VCCIO6選擇1800000其余選擇3300000,使用上下方向按鍵選擇選項,按回車確認選擇即可。
編譯recovery $./build.shrecovery
……
編譯Buildroot根文件系統 $./build.shbuildroot
制作文件系統的時間會比較久,請耐心等待編譯完成。
【注1】確保作為普通用戶編譯Buildroot根文件系統,避免不必要的錯誤; 【注2】如果不想編譯文件系統,也可直接從已有的鏡像中解壓后,將其拷貝到rockdev目錄下。
3. 打包固件 更新各部分鏡像鏈接到rockdev/目錄: $./mkfirmware.sh 打包固件,生成的完整固件會保存到rockdev/目錄。 $./build.shupdateimg
[PS]全自動編譯 全自動編譯會執行上述編譯、打包操作,生成完整固件。 $./build.sh
三、分區說明
1. parameter 分區表 parameter.txt文件中包含了固件的分區信息,以parameter-buildroot.txt為例: 路徑: device/rockchip/ok3568/parameter-buildroot-fit.txt
CMDLINE屬性是我們關注的地方,以uboot為例,0x00002000@0x00004000(uboot)中0x00004000為uboot分區的起始位置,0x00002000為分區的大小,以此類推。
2. package-file package-file文件用于打包固件時確定需要的分區鏡像和鏡像路徑,同時它需要與parameter.txt文件保持一致。
路徑: tools/linux/Linux_Pack_Firmware/rockdev/rk356x-package-file #NAME Relative path # #HWDEF HWDEF package-filepackage-file bootloader Image/MiniLoaderAll.bin parameter Image/parameter.txt #trust Image/trust.img uboot Image/uboot.img misc Image/misc.img #resource Image/resource.img #kernel Image/kernel.img boot Image/boot.img recovery Image/recovery.img rootfs Image/rootfs.img oem Image/oem.img userdata Image/userdata.img
#要寫入backup分區的文件就是自身(update.img) #SELF 是關鍵字,表示升級文件(update.img)自身 #在生成升級文件時,不加入SELF文件的內容,但在頭部信息中有記錄 #在解包升級文件時,不解包SELF文件的內容。
backup RESERVED #update-script update-script #recover-script recover-script
四、鏡像制作
編譯源碼可直接得到鏡像,但是編譯時間太長,有些部分不需要再次編譯,只需要從已有的鏡像中解包,然后再和新編譯的部分組合打包即可,下面是制作方法。
1. 工具安裝 下載工具包: $git clone https://github.com/TeeFirefly/rk2918_tools.git
進入工具包目錄: $cd rk2918_tools 編譯: $make
將可執行文件拷貝到用戶二進制目錄: $sudo cp afptool img_unpack img_maker mkkrnlimg/usr/local/bin
2. 解包 將update.img拷貝到Ubuntu中,然后使用命令解包: $img_unpack update.img img
解包到img目錄,img目錄會自動生成,解析成功之后,img目錄下會生成loader.img和update.img。
接下來進入到img目錄,使用afptool-unpack 解壓: $afptool -unpack update.img update
解壓到update目錄 打開update目錄,里面有很多img文件。
將需要的文件復制到rockdev目錄下。
3. 合成update.img 然后源碼目錄以下命令即可: $./build.shupdateimg
|