1.简介
在基于
AndroidP 分支上,
kernel开始支持独立编译及 DTBO 功能。加入这两个功能后,与之前相比编译流程上有些区别,本文档主要提供在 AndroidP 下新建 kernel board 介绍。
2. Board-config 创建
2.1. kernel 相关修改
2.1.1. 创建 board 相关属性文件
创建一个新的 board,必然有一些 board 独有的 config,这些 config 通过 diff-config 文件控制。
product加载哪些 diff-config,就需要与 board 相关的属性宏,这些属性宏原来定义在
device/sprd/project_name
目录下,现在统一把这部分属性宏移动到 kernel 下,sprd-board-config 目录下。
操作步骤如下:
1) 创建 board 相关属性文件(以 sharkle gofu 为例) sprd-board-config/sharkle/sp9832e_1h10_go/sp9832e_1h10_go_base sprd-board-config/sharkle/sp9832e_1h10_go/sp9832e_1h10_gofu
黄色:大系统名
绿色:product 名称,按原 device 下类别区分
红色:每个 product 属性文件必须创建出一个 base 文件,其余具体项目再基于此进行添加
蓝色:具体的 product 名称 2) 完善属性文件内容 sp9832e_1h10_go_base 文件内容如下,其中红色部分需要根据具体 board 进行更改。 14~18 行,因是 base 文件,请确保通用性。若是修改只改:=后面的内容,不要删除前面的定义 1 TARGET_KERNEL_ARCH=
arm
2 ifdef BUILD_FROM_KERNEL 3 KERNEL_OUT=. 4 TARGET_
root_OUT=. 5 KERNEL_DEFCONFIG=sprd_sharkle_defconfig
6 KERNEL_DIFF_CONFIG_ARCH := sprd-diffconfig/sharkle/$(TARGET_KERNEL_ARCH) 7 KERNEL_DIFF_CONFIG_COMMON := sprd-diffconfig/sharkle/common 8 else 9 KERNEL_OUT := $(TARGET_OUT_INTER
mediaTES)/KERNEL
......
2.2.Android Board 相关修改
2.2.1. 删除 AndroidKernel.mk 文件
已经把该文件移至 kernel 目录下,需要删除该文件,若已删除则跳过此项。
路径:device/sprd/sharkle/common/AndroidKernel.mk
删除此项后,还需要修改从 kernel 中
include 该文件,位于 AndroidBoard.mk 中
路径:device/sprd/sharkle/sp9832e_1h10_go/AndroidBoard.mk -include device/sprd/sharkle/common/AndroidKernel.mk
+include kernel/AndroidKernel.mk
2.2.2. 在 device 下 include sprd-board-config
修改 device/sprd/sharkle/sp9832e_1h10_go/sp9832e_1h10_gofu.mk,在该文件首行添加
BOARD_PATH := kernel/sprd-board-config/sharkle/sp9832e_1h10_go/sp9832e_1h10_gofu
include $(BOARD_PATH)
3. System as root
3.1.把 system 分区从 early mount 中删除 较之 AndroidO,AndroidP 将 system 分区从 early mount 中删除,相关代码如下:
arch/arm64/boot/dts/sprd/sharkle-board-common.dtsi
firmware {
android { compatible = "android,firmware";
vb
META {
compatible = "android,vbmeta";
parts = "vbmeta,boot,recovery,system,vendor"; };fstab {
compatible = "android,fstab";
- system {
- compatible = "android,system";
- dev = "/dev/block/platform/
SOC/soc:ap-ahb/20600000.
SDIO/by-name/system";
- type = "ext4"; - mnt_flags = "ro,barrier=1";
- fsmgr_flags = "wait,avb";
- };
......
3.2.在 boot_args 中指定 root 分区为 system
arch/arm64/boot/dts/sprd/sp9832e-1h10-native.dts - root=/dev/ram0 rw
+ root=/dev/mmcblk0
P30 rootfstype=ext4 rw rootwait
更多详细内容请下载附件查看