Compile Android12.0 firmware Download Android12.0 SDK SDK source code and bundle compression package are stored in the Google Drive. 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_rk3588_android12.0_git_20220311 After downloading, verify the MD5 code: $ md5sum /path/to/firefly_rk3588_android12.0_git_20220311.7z.001 $ md5sum /path/to/firefly_rk3588_android12.0_git_20220311.7z.002 $ md5sum /path/to/firefly_rk3588_android12.0_git_20220311.7z.003 $ md5sum /path/to/firefly_rk3588_android12.0_git_20220311.7z.004 $ md5sum /path/to/firefly_rk3588_android12.0_git_20220311.7z.005 $ md5sum /path/to/firefly_rk3588_android12.0_git_20220311.7z.006 8f48ca82f247426d0a7111b851d65f0f firefly_rk3588_android12.0_git_20220311.7z.001 e99d68485860b86c2ec5b67aeda7249d firefly_rk3588_android12.0_git_20220311.7z.002 cb45fc9e39848b459398467c08acd6f1 firefly_rk3588_android12.0_git_20220311.7z.003 7774a64cc73dbf4381c100ad1d703fa9 firefly_rk3588_android12.0_git_20220311.7z.004 cd53c8c752a5162a0638da1cf9a0ed8f firefly_rk3588_android12.0_git_20220311.7z.005 fd7744c8098791a8f1dd62527fcac32c firefly_rk3588_android12.0_git_20220311.7z.006 After confirming that it is correct, we can unzip: cd ~/proj/ 7z x ./firefly_rk3588_android12.0_git_20220311.7z.001 -oRK3588_Android12.0 cd ./RK3588_Android12.0 git reset --hard Attention: To avoid unnecessary errors, please do not unzip the SDK in shared folders, mounted folders or non-english directories. Second, Update SDK Note: Be sure to update the remote warehouse after decompression. The following is how to update from gitlab: 1. Enter the SDK root directory cd ~/proj/RK3588_Android12.0 2. Download remote bundle repository git clone https://gitlab.com/T-Firefly/rk3588-android12.0-bundle.git .bundle 3. If the download warehouse fails, it may be stuck or failed problems during synchronization. we can download and unzip it from the cloud disk link below to the SDK root directory. 7z x rk3588-android12.0-bundle.7z -r -o. && mv rk3588-android12.0-bundle .bundle 4. Update the SDK, and subsequent updates do not need to pull the remote warehouse again, just execute the following command .bundle/update 5. Follow the prompts to update the content to FETCH_HEAD, synchronize FETCH_HEAD to the firefly branch git rebase FETCH_HEAD Google Driver Android12.0 Bundle 。 Core-3588SJD4 product compilation method The overall compilation HDMI Firmware Compilation ./FFTools/make.sh -d aio-3588sjd4 -j8 -l aio_3588sjd4-userdebug ./FFTools/mkupdate/mkupdate.sh -l aio_3588sjd4-userdebug 10.1‘ MIPI DSI0 Firmware Compilation: ./FFTools/make.sh -d aio-3588sjd4-mipi101-M101014-BE45-A1 -j8 -l aio_3588sjd4_mipi-userdebug ./FFTools/mkupdate/mkupdate.sh -l aio_3588sjd4_mipi-userdebug Dual Camera CAM-2MS2MF Compile HDMI+CAM-2MS2MF modify dts --- a/kernel-5.10/arch/arm64/boot/dts/rockchip/aio-3588sjd4.dts +++ b/kernel-5.10/arch/arm64/boot/dts/rockchip/aio-3588sjd4.dts @@ -9,8 +9,9 @@ #include "aio-3588sjd4.dtsi" -#include "aio-3588sjd4-cam-8ms1m.dtsi" #include "aio-3588sjd4-cam-dcphy-8ms1m.dtsi" -//#include "aio-3588sjd4-cam-2ms2mf.dtsi" +//#include "aio-3588sjd4-cam-8ms1m.dtsi" +#include "aio-3588sjd4-cam-2ms2mf.dtsi" Compile ./FFTools/make.sh -d aio-3588sjd4 -j8 -l aio_3588sjd4-userdebug ./FFTools/mkupdate/mkupdate.sh -l aio_3588sjd4-userdebug HDMI TO MIPI_CSI(RK628D) Compile HDMI+CAM-2MS2MF modify dts --- a/kernel-5.10/arch/arm64/boot/dts/rockchip/aio-3588sjd4.dts +++ b/kernel-5.10/arch/arm64/boot/dts/rockchip/aio-3588sjd4.dts @@ -7,9 +7,9 @@ /dts-v1/; #include "aio-3588sjd4.dtsi" -#include "aio-3588sjd4-cam-8ms1m.dtsi" +//#include "aio-3588sjd4-cam-8ms1m.dtsi" //#include "aio-3588sjd4-cam-2ms2mf.dtsi" -//#include "aio-3588sjd4-tf-hdmi-mipi-rk628.dtsi" +#include "aio-3588sjd4-tf-hdmi-mipi-rk628.dtsi" #include "aio-3588sjd4-cam-dcphy-8ms1m.dtsi" Compile ./FFTools/make.sh -d aio-3588sjd4 -j8 -l aio_3588sjd4-userdebug ./FFTools/mkupdate/mkupdate.sh -l aio_3588sjd4-userdebug Step by step to compile Compile the kernel: cd ~/proj/RK3588_Android12.0/kernel-5.10 export PATH=../prebuilts/clang/host/linux-x86/clang-r416183b/bin:$PATH alias msk='make CROSS_COMPILE=aarch64-linux-gnu- LLVM=1 LLVM_IAS=1' msk ARCH=arm64 firefly_defconfig android-11.config pcie_wifi.config msk ARCH=arm64 BOOT_IMG=../rockdev/Image-aio_3588sjd4/boot.img aio-3588sjd4.img -j8 Compile uboot: cd ~/proj/RK3588_Android12.0/u-boot/ ./make.sh rk3588 Compile Android: cd ~/proj/RK3588_Android12.0/ source build/envsetup.sh lunch aio_3588sjd4-userdebug make installclean make -j8 ./mkimage.sh 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 aio_3588sjd4-userdebug After packaging, it will be in rockdev/Image-aio_3588sjd4/ 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. Some Introduction about Compiling Android12.0 can’t be upgraded directly kernel.img and resource.img "kernel.img" and "resource.img" for Android12.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- aio_3588sjd4/ directory. 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/RK3588_Android12.0/kernel-5.10 export PATH=../prebuilts/clang/host/linux-x86/clang-r416183b/bin:$PATH alias msk='make CROSS_COMPILE=aarch64-linux-gnu- LLVM=1 LLVM_IAS=1' msk ARCH=arm64 firefly_defconfig android-11.config pcie_wifi.config msk ARCH=arm64 BOOT_IMG=../rockdev/Image-aio_3588sjd4/boot.img aio-3588sjd4.img -j8 After compiling, "boot.img" in the kernel directory can be directly upgrade. 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-aio_3588sjd4/. The following lists the image files used by general firmware: For details about how to upgrade a partition image file, see Upgrade the firmware via USB cable . OTA Compilation Refer to the OTA Compilation section FAQs 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-android12.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