简述AOSP ROM Tree迁移CLO ROM Tree
侧边栏壁纸
  • 累计撰写 7 篇文章
  • 累计收到 2 条评论

简述AOSP ROM Tree迁移CLO ROM Tree

ReallySnow
2023-08-30 / 0 评论 / 187 阅读 / 正在检测是否收录...

源码实际上本质区别不大,只是多了高通的优化罢了,虽然CLO对高通设备友好,但是其他设备(MTK,Tensor等)只要想,运行qssi是一点没有问题的。
本篇我们用基于AOSP系的LineageOS和基于CLO系的AOSPA来说明两套源码的小区别,并将LineageOS系设备树迁移到CLO系

内核部分

板载配置

LineageOS:

# Kernel (Build)
BOARD_KERNEL_IMAGE_NAME := Image
TARGET_KERNEL_CLANG_COMPILE := true
TARGET_KERNEL_SOURCE := kernel/qcom/kona
TARGET_KERNEL_CONFIG := vendor/kona_defconfig

AOSPA:

# Kernel (Build)
KERNEL_DEFCONFIG := kona_defconfig
TARGET_KERNEL_VERSION := 4.19
TARGET_USES_UNCOMPRESSED_KERNEL := true

将其改为对应的构建标志即可


内核头

由于CLO系列使用qti_kernel_headers(和AOSP系列generated_kernel_headers一样是从内核中生成),所以从AOSP迁移到clo需要将使用generated_kernel_headers的hardware改为qti_kernel_headers

同时需要将内核中Androidbp改回Android.bp以重新使用qti_kernel_headers

在部分机型的内核中,由于我们导入了厂商的更改,可能在生成内核头报错,所以在构建内核需要重新生成kenrel header blueprint
例:
4.19+:

$ python kernel_headers.py --header_arch arm --gen_dir ${KERNEL_SOURCE_DIR} \
--arch_asm_kbuild ${KERNEL_SOURCE_DIR}/arch/arm/include/uapi/asm/Kbuild \
--arch_include_uapi ${KERNEL_SOURCE_DIR}/arch/arm/include/uapi/**/*.h \
--techpack_include_uapi ${KERNEL_SOURCE_DIR}/techpack/*/include/uapi/*/**/*.h \
--asm_generic_kbuild ${KERNEL_SOURCE_DIR}/include/uapi/asm-generic/Kbuild.asm  blueprints
$ python kernel_headers.py --header_arch arm64 --gen_dir ${KERNEL_SOURCE_DIR} \
--arch_asm_kbuild ${KERNEL_SOURCE_DIR}/arch/arm64/include/uapi/asm/Kbuild \
--arch_include_uapi ${KERNEL_SOURCE_DIR}/arch/arm64/include/uapi/**/*.h \
--techpack_include_uapi ${KERNEL_SOURCE_DIR}/techpack/*/include/uapi/*/**/*.h \
--asm_generic_kbuild ${KERNEL_SOURCE_DIR}/include/uapi/asm-generic/Kbuild.asm  blueprints

4.4~4.14:

$ python kernel_headers.py --header_arch arm --gen_dir ${KERNEL_SOURCE_DIR} \
--arch_asm_kbuild ${KERNEL_SOURCE_DIR}/arch/arm/include/uapi/asm/Kbuild \
--arch_include_uapi ${KERNEL_SOURCE_DIR}/arch/arm/include/uapi/**/*.h \
--asm_generic_kbuild ${KERNEL_SOURCE_DIR}/include/uapi/asm-generic/Kbuild.asm  blueprints
$ python kernel_headers.py --header_arch arm64 --gen_dir ${KERNEL_SOURCE_DIR} \
--arch_asm_kbuild ${KERNEL_SOURCE_DIR}/arch/arm64/include/uapi/asm/Kbuild \
--arch_include_uapi ${KERNEL_SOURCE_DIR}/arch/arm64/include/uapi/**/*.h \
--asm_generic_kbuild ${KERNEL_SOURCE_DIR}/include/uapi/asm-generic/Kbuild.asm  blueprints

KERNEL_SOURCE_DIR为内核目录

设备树和blobs部分

实际上设备树的改动不大,主要就是解决部分条目与CLO源码内的条目冲突而已

但是在AOSPA中,存在qcom common,这极大减轻了设备树编写难度,同时因为使用BSP,此套blobs并无厂商更改,当然不想用也可以(

使用qcom common

从device.mk中指定TARGET_BOARD_PLATFORM
然后指定需要使用的components,这里(TARGET_COMMON_QTI_COMPONENTS)如果指定为all,则会设置以下条目

如果指定为all后,请视情况删除设备树相关条目,并且清理设备的vendor blobs

在部分情况下,可能需要编写device_framework_matrix.xml

hardware配置

CLO系列不需要pathmap,但是需要手动clone hardware,且目录与AOSP系列可能不同
CLO clone hardware目录:
audio:vendor/qcom/opensource/audio-hal/primary-hal
display:hardware/qcom/display
media:hardware/qcom/media

从AOSP NFC迁移回NXP NFC(仅适用于pn5xx和sn1xx,可选)

在TARGET_COMMON_QTI_COMPONENTS添加nfc,然后恢复vintf相关条目,确定是pn5xx还是SN1xx,然后拉取正确的halimpl和hidlimpl

0

评论 (0)

取消