文章目录
前言
下面开始学习如何编译和烧录镜像
获取瑞芯微官方源码
一般情况下,大家可以找供应商提供,如果大家没有的话,请@我
获取到源码之后,大家如果是压缩包就解压即可。
编译
编译的话分为一键编译和单独编译,其中的差异当然是时间的问题了,哈哈!!
1.一键编译
所谓的一键编译就是,把整个Android全部编译一遍,包过uboot、kernel、Android系统等。
步骤:
大家进入到Android目录:
执行下面语句:
source javaenv.sh
java -version
输入以上命令设置 java 版本为 1.8 版本,确认 java 版
本是 1.8 版本之后,才可以进行下一步编译,如下图:
输入以下命令使能编译环境:
source build/envsetup.sh
lunch rk3568_r-userdebug
最后输入以下命令开始整体编译
./build.sh -AUCKu
如上图所示之后就会编译成功
编译kernel
过程中会出现选择电源域配置的选择,大家按照前面的电源域配置章节进行对比设备树选择即可,如果校对准确,那么就会编译成功
2.镜像的位置
rockdev/Image-rk3568_r 目录下
生成的镜像包括 MiniLoaderAll.bin、uboot.img、trust.img、resource.img、 boot.img 、
misc.img 、 recovery.img 、 boot-debug.img 、 dtbo.img 、 pcba_small_misc.img
pcba_whole_misc.img 、super.img 、vbmeta.img 等 13 个镜像,但是在烧写系统时,这 13 个镜
像并不需要全部使用。
镜像作用如下:
3.烧录整镜像
如果想要烧整个镜像的话,直接烧录update.img即可,这个镜像大约有1.5G左右
4.单独编译和烧录
注意:在单独编译之前,一定要整编 Android 源码
编译 uboot
输入以下命令使能编译环境:
source build/envsetup.sh
lunch rk3568_r-userdebug
在 Android 源码目录下执行如下命令编译 uboot:
./build.sh -U
编译成功之后:
编译完成后在 u-boot 目录会生成 rk356x_spl_loader_v1.10.111.bin
文件、uboot.img
文件、
resource.img
三个镜像文件
单独烧录uboot
编译成功后会将 rk356x_spl_loader_v1.10.111.bin
、uboot.img
拷贝到rockdev/Image-rk3568_r
目录下,rk356x_spl_loader_v1.10.111 会改名为 MiniLoaderAll.bin。
只需要将 MiniLoaderAll.bin 和 uboot.img 烧写到开发板即可更新 uboot
编译 Android 内核
方式1:
在 Android 源码目录下执行如下命令编译 Android 内核。
./build.sh -CKA
编译后会在 rockdev/Image-rk3588_r
目录下生成 boot.img,boot.img 为内核镜像。boot.img
镜像里面包含了设备树镜像。所以烧写 boot.img 即可更新内核镜像
参数-C 表示用 clang 编译器编译,如果不带 C 则使用 gcc 编译,如果需要过 GMS 认证的
google 有要求要用 clang 编译。
因为 kernel 编译完后需要通过 Android 去打包成 boot.img,所以这里需要加上 A 参数,即
编译 kernel 的时需要一起编译 Android 才能打包 boot.img。通过以上介绍可以知道单独编译
kernel 需要同时编译 Android,导致编译很耗时,针对这个问题,我们推荐使用方法二来单独
编译内核。
方式2:
此方法常用于 kernel 的开发和调试,以下的方法既编译 kernel 部分时,同时打包成boot.img,这样加快了我们开发的速度;
在 kernel 目录下创建 makekernel.sh
,在调试的过程中直接在 kernel 目录下执行该脚本,makekernel.sh 内容为:
#!/bin/sh
make ARCH=arm64 CC=../prebuilts/clang/host/linux-x86/clang-r383902b/bin/clang \
LD=../prebuilts/clang/host/linux-x86/clang-r383902b/bin/ld.lld rockchip_defconfig \
android-11.config && make ARCH=arm64 \
CC=../prebuilts/clang/host/linux-x86/clang-r383902b/bin/clang \
LD=../prebuilts/clang/host/linux-x86/clang-r383902b/bin/ld.lld \
BOOT_IMG=../rockdev/Image-rk3568_r/boot.img rk3568-evb1-ddr4-v10.img
BOOT_IMG 是指整编 Android 源码之后在 rockdev 目录下生成的 boot.img,所以在单独编 译 Android
内核之前,一定要整编 Android 源码。整编 Android 源码生成的 rockdev 目录下的 boot.img 镜像里面不仅仅只有kernel 和 resource,还有其他文件。当我们修改了内核源码并单 独编译 Android 内核时,kernel 和
resource 发生了改变,这时候需要指定一个 boot.img,然后 将新编译的 kernel 和 resource
覆盖进去。打包完成之后,在 kernel 目录下会有新 boot.img 镜像 生成,就可以把这个 boot.img
镜像单独烧写到开发板中进行调试了 如果不指定 BOOT_IMG,会在下载镜像之后,系统跑进 recovery 模式,而不是进入正常的启动流程 rk3568-evb1-ddr4-v10.img 的意思是指定所使用的设备树 DTS;
单独烧录内核
打包完后,在 kernel 目录有 boot.img 镜像生成,就可以把这个 boot.img 镜像单独烧入到
机器中进行调试了
单独编译Android文件系统
单独烧录Android文件系统
烧录工具的使用
- 起始时间:
2023/8/16 - 更新时间:
2023.8.16 - 状态:
未完成