编译 Android12.0 固件 下载 Android12.0 SDK SDK 源码与 bundle 压缩包均存放在云盘中。 下载 SDK SDK通过邮件的方式获取,把订单号发送到sales@t-firefly.com邮箱并注明需要的SDK名称 firefly_rk3588_android12.0_git_20220311 下载完成后,在解压前先校验下 MD5 码: $ 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 然后解压: cd ~/proj/ 7z x ./firefly_rk3588_android12.0_git_20220311.7z.001 -oRK3588_Android12.0 cd ./RK3588_Android12.0 git reset --hard 注意:不要在共享文件夹、挂载文件夹以及非英文目录解压SDK,避免产生不必 要的错误 更新 SDK 下载 SDK 后,从 gitlab 处更新代码的方法: #1. 进入 SDK 根目录 cd ~/proj/RK3588_Android12.0 #2. 下载远程 bundle 仓库 git clone https://gitlab.com/T-Firefly/rk3588-android12.0-bundle.git .bundle #3. bundle仓库会随着更新的资源越多而会越来越大,如果bundle仓库下载速度缓慢或若下载失败, # 请在资源下载界面选择对应的机器bundle文件进行下载并解压到SDK根目录,解压指令如下: 7z x rk3588-android12.0-bundle.7z -r -o. && mv rk3588-android12.0-bundle .bundle #4. 更新 SDK,并且后续更新不需要再次拉取远程仓库,直接执行以下命令即可 .bundle/update #5. 按照提示已经更新内容到 FETCH_HEAD,同步 FETCH_HEAD 到 firefly 分支 git rebase FETCH_HEAD 下载页面选择云盘下载 Android12.0 Bundle 。 iCore-3588Q 产品编译方法 整体编译 HDMI 固件编译 ./FFTools/make.sh -d rk3588-firefly-aio-3588q -j8 -l rk3588_firefly_aio_3588q-userdebug ./FFTools/mkupdate/mkupdate.sh -l rk3588_firefly_aio_3588q-userdebug 显示屏 DM-M10R800 V2 固件编译: ./FFTools/make.sh -d rk3588-firefly-aio-3588q-mipi101-M101014-BE45-A1 -j8 -l rk3588_firefly_aio_3588q_mipi-userdebug ./FFTools/mkupdate/mkupdate.sh -l rk3588_firefly_aio_3588q_mipi-userdebug edp 显示屏 NV156FHM-T06 固件编译: ./FFTools/make.sh -d rk3588-firefly-aio-3588q-edp-NV156FHM-T06 -j8 -l rk3588_firefly_aio_3588q_edp-userdebug ./FFTools/mkupdate/mkupdate.sh -l rk3588_firefly_aio_3588q_edp-userdebug 双目摄像头 CAM-2MS2MF 编译 HDMI+CAM-2MS2MF 修改 dts --- a/kernel-5.10/arch/arm64/boot/dts/rockchip/rk3588-firefly-aio-3588q.dts +++ b/kernel-5.10/arch/arm64/boot/dts/rockchip/rk3588-firefly-aio-3588q.dts @@ -7,8 +7,8 @@ #include "rk3588-firefly-aio-3588q.dtsi" -#include "rk3588-firefly-aio-cam-8ms1m.dtsi" -//#include "rk3588-firefly-aio-cam-2ms2mf.dtsi" +//#include "rk3588-firefly-aio-cam-8ms1m.dtsi" +#include "rk3588-firefly-aio-cam-2ms2mf.dtsi" #include "rk3588-firefly-demo.dtsi" 双目摄像头 CAM-2MS2MF 编译: 编译 ./FFTools/make.sh -d rk3588-firefly-aio-3588q -j8 -l rk3588_firefly_aio_3588q-userdebug ./FFTools/mkupdate/mkupdate.sh -l rk3588_firefly_aio_3588q-userdebug HDMI TO MIPI_CSI(RK628D) 编译 修改 dts --- a/kernel-5.10/arch/arm64/boot/dts/rockchip/rk3588-firefly-aio-3588q.dts +++ b/kernel-5.10/arch/arm64/boot/dts/rockchip/rk3588-firefly-aio-3588q.dts @@ -7,9 +7,9 @@ /dts-v1/; #include "rk3588-firefly-aio-3588q.dtsi" -#include "rk3588-firefly-aio-cam-8ms1m.dtsi" +//#include "rk3588-firefly-aio-cam-8ms1m.dtsi" //#include "rk3588-firefly-aio-cam-2ms2mf.dtsi" -//#include "rk3588-firefly-aio-3588q-tf-hdmi-mipi-rk628.dtsi" +#include "rk3588-firefly-aio-3588q-tf-hdmi-mipi-rk628.dtsi" #include "rk3588-firefly-demo.dtsi" 编译 ./FFTools/make.sh -d rk3588-firefly-aio-3588q -j8 -l rk3588_firefly_aio_3588q-userdebug ./FFTools/mkupdate/mkupdate.sh -l rk3588_firefly_aio_3588q-userdebug 分步编译 编译 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-rk3588_firefly_aio_3588q/boot.img rk3588-firefly-aio-3588q.img -j8 编译 uboot: cd ~/proj/RK3588_Android12.0/u-boot/ ./make.sh rk3588 编译 Android: cd ~/proj/RK3588_Android12.0/ source build/envsetup.sh lunch rk3588_firefly_aio_3588q-userdebug make installclean make -j8 ./mkimage.sh 打包成统一固件 update.img 编译完可以用Firefly官方的脚本打包成统一固件,执行如下命令: ./FFTools/mkupdate/mkupdate.sh -l rk3588_firefly_aio_3588q-userdebug 打包完成后将在rockdev/Image-rk3588_firefly_aio_3588q/ 目录下生成统一固 件: product名XXX_XXX_日期XXX.img 在 Windows 下打包统一固件 update.img 也很简单,将编译生成的文件拷贝到 AndroidTool 的 rockdev\Image 目录中,然后运行 rockdev 目录下的 mkupdate.bat 批处理文件即可创建 update.img 并存放到 rockdev\Image 目录 里。 其他编译说明 Android12.0 不能直接烧写 kernel.img 和 resource.img Android12.0的"kernel.img"和"resource.img"包含在"boot.img"中,编译 kernel后需要在android根目录下执行"./mkimage.sh"重新打包"boot.img",然后 烧写rockdev/Image-rk3588_firefly_aio_3588q/目录下的"boot.img"。 单独编译kernel生成boot.img 编译的原理:在kernel目录下将编译生成的 "kernel.img" 和 "resource.img" 替换到旧的 "boot.img" 中, 所以编译的时候需要用 BOOT_IMG=xxx 参数指定 "boot.img"的路径,命令如下: 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-rk3588_firefly_aio_3588q/boot.img rk3588-firefly-aio-3588q.img -j8 编译后可以直接烧写kernel目录下的"boot.img"。 分区镜像 编译的时候执行 "./mkimage.sh" 会重新打包 "boot.img" 和 "super.img", 并 将其它相关的镜像文件拷贝到目录 rockdev/Image-rk3588_firefly_aio_3588q/ 中。以下列出一般固件用到的镜像文件: 请参照 《使用USB线缆升级固件》 一文来烧写分区镜像文件。 OTA 编译 请参照 《OTA编译》 章节 常见问题 git clone 远程 bundle 仓库失败 Q: 更新SDK 时,git clone 远程 bundle 仓库出错: $ 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:缓冲区大小不够,需要扩大缓冲区: git config --global https.postBuffer 1048576000