3. Compile Android14.0 firmware¶
3.1. Download Android14.0 SDK¶
SDK source code and bundle compression package are stored in the Google Drive.
3.1.1. Download Android SDK¶
The SDK can be obtained by email. Send the order number to sales@t-firefly.com and indicate the required SDK name Firefly_rk3576_android14.0_git_20240721
After downloading, verify the MD5 code:
$ md5sum /path/to/Firefly_rk3576_android14.0_git_20240721.7z.001 $ md5sum /path/to/Firefly_rk3576_android14.0_git_20240721.7z.002 $ md5sum /path/to/Firefly_rk3576_android14.0_git_20240721.7z.003 $ md5sum /path/to/Firefly_rk3576_android14.0_git_20240721.7z.004 $ md5sum /path/to/Firefly_rk3576_android14.0_git_20240721.7z.005 $ md5sum /path/to/Firefly_rk3576_android14.0_git_20240721.7z.006 e214aca672be69feea8f9957474c8237 Firefly_rk3576_android14.0_git_20240721.7z.001 aa5d5c72439fe30842606e3c5c3fac54 Firefly_rk3576_android14.0_git_20240721.7z.002 4bd9b7982bd7e0b87067a7578b45f869 Firefly_rk3576_android14.0_git_20240721.7z.003 4709238fd5923da217b33713dbf46184 Firefly_rk3576_android14.0_git_20240721.7z.004 e593fdfaf20070beb3c4f7abd79d7303 Firefly_rk3576_android14.0_git_20240721.7z.005 15321b7612efb144ee86f2a8ee6bb824 Firefly_rk3576_android14.0_git_20240721.7z.006
After confirming that it is correct, we can unzip:
cd ~/proj/ 7z x ./Firefly_rk3576_android14.0_git_20240721.7z.001 -oRK3576_Android14.0 cd ./RK3576_Android14.0 git reset --hard
Attention: To avoid unnecessary errors, please do not unzip the SDK in shared folders, mounted folders or non-english directories.
3.2. ROC-RK3576-PC product compilation method¶
3.2.1. The overall compilation¶
3.2.1.1. HDMI Firmware Compilation¶
./FFTools/make.sh -d rk3576-firefly-roc-rk3576-pc -j8 -l rk3576_firefly_roc_rk3576_pc-userdebug
./FFTools/mkupdate/mkupdate.sh -l rk3576_firefly_roc_rk3576_pc-userdebug
3.2.1.2. 10.1‘ MIPI DSI0 Firmware Compilation:¶
./FFTools/make.sh -d rk3576-firefly-roc-rk3576-pc-mipi101-M101014-BE45-A1 -j8 -l rk3576_firefly_roc_rk3576_pc_mipi-userdebug
./FFTools/mkupdate/mkupdate.sh -l rk3576_firefly_roc_rk3576_pc_mipi-userdebug
3.2.2. Step by step to compile¶
Compile the kernel:
cd ~/proj/RK3576_Android14.0/kernel-6.10
export PATH=../prebuilts/clang/host/linux-x86/clang-r487747c/bin:$PATH
alias msk='make CROSS_COMPILE=aarch64-linux-gnu- LLVM=1 LLVM_IAS=1'
msk ARCH=arm64 firefly_defconfig android-14.config rk3576.config
msk ARCH=arm64 BOOT_IMG=../rockdev/Image-rk3576_firefly_roc_rk3576_pc/boot.img rk3576-firefly-roc-rk3576-pc.img -j8
Compile uboot:
cd ~/proj/RK3588_Android14.0/u-boot/
./make.sh rk3576
Compile Android:
cd ~/proj/RK3588_Android14.0/
source build/envsetup.sh
lunch rk3576_firefly_roc_rk3576_pc-userdebug
make installclean
make -j8
./mkimage.sh
3.2.3. Packaged into unified firmware update.img¶
After compilation, you can use Firefly official scripts to package into unified firmware, execute the following command:
./FFTools/mkupdate/mkupdate.sh -l rk3576_firefly_roc_rk3576_pc-userdebug
After packaging, it will be in rockdev/Image-rk3576_firefly_roc_rk3576_pc/ Generate unified firmware under the directory: (product name )XXX_XXX_date XXX.img
It is also very simple to package the unified firmware update.img under Windows. Copy the generated files to the rockdev \ Image directory of AndroidTool, and then run the mkupdate.bat batch file under the rockdev directory to create up date.img and store it in rockdev \ Image directory.
3.3. Some Introduction about Compiling¶
3.3.1. Android14.0 can’t be upgraded directly kernel.img and resource.img¶
kernel.img
and resource.img
for Android14.0 are included in boot.img
, After compiling the kernel, you need to run the ./mkimage.sh
command in the android root directory to repackage boot.img
, and then upgrade boot.img
of the rockdev/Image-rk3576_firefly_roc_rk3576_pc/ directory.
3.3.2. Compiling kernel generation separately boot.img¶
Principle of compilation: in the kernel directory, the generated kernel.img
And resource.img
Replace with old boot.img
, so you need to use BOOT_IMG=XXX parameter specification boot.img
when compiling. The command is as follows:
cd ~/proj/RK3576_Android14.0/kernel-6.10
export PATH=../prebuilts/clang/host/linux-x86/clang-r487747c/bin:$PATH
alias msk='make CROSS_COMPILE=aarch64-linux-gnu- LLVM=1 LLVM_IAS=1'
msk ARCH=arm64 firefly_defconfig android-14.config rk3576.config
msk ARCH=arm64 BOOT_IMG=../rockdev/Image-rk3576_firefly_roc_rk3576_pc/boot.img rk3576-firefly-roc-rk3576-pc.img -j8
After compiling, boot.img
in the kernel directory can be directly upgrade.
3.4. Partition image¶
When compiling, executing ./mkimage.sh
will repackage boot.img
and super.img
, and copy other related image files to the directory rockdev/Image-rk3576_firefly_roc_rk3576_pc/. The following lists the image files used by general firmware:
Image | Instruction |
---|---|
boot.img | including ramdis、kernel、dtb |
dtbo.img | Device Tree Overlays |
MiniLoaderAll.bin | including first level loader |
misc.img | including recovery-wipe boot symbol information, after flashing it will enter recovery |
parameter.txt | including partition information |
recovery.img | including recovery-ramdis、kernel、dtb |
super.img | including the contents of odm、vendor、system partitions |
uboot.img | including uboot image |
vbmeta.img | including avb verification information, used for AVB verification |
update.img | including the above img files to be flashed, can be used for the tool to directly flash the whole image package |
For details about how to upgrade a partition image file, see Upgrade the firmware via USB cable.
3.5. OTA Compilation¶
Refer to the OTA Compilation section
3.6. FAQs¶
3.6.1. git clone remote bundle repository failed¶
Q: Error occurred in git clone remote bundle repository while updating SDK:
$ git clone https://gitlab.com/T-Firefly/rk3588-Android14.0-bundle.git .bundle
Cloning into '.bundle'...
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (18/18), done.
error: RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected length was received.
fatal: the remote end hung up unexpectedly
fatal: early EOF
fatal: unpack-objects failed
A: The buffer size is insufficient and needs to be enlarged:
git config --global https.postBuffer 1048576000