高通SM6225平台移植集创北方指纹到Android14

TA集成

1. 在集创北方给的移植包中找到已经编译好的TA文件 fngap64_5.1.mbn

将 fngap64_5.1.mbn 放到 trustzone_images/build/ms/bin/FATAANAA下,在这里我把 fngap64_5.1.mbn 改了一个名 fngap64.mbn

在 Divar.LA.3.0/contents.xml 找到smplap64.mbn,跟在后面添加

      <file_ref ignore="true" pil_split="fngap64">
        <file_name>fngap64.mbn</file_name>
        <file_path>trustzone_images/build/ms/bin/FATAANAA/</file_path>
      </file_ref>

2. 在Divar.LA.3.0/common/sectools/config/divar/divar_secimage.xml 同样找到smplap64.mbn,跟在后面添加, 其中 app_id改成和其他不一样的

        <image sign_id="fngap64" name="fngap64.mbn" image_type="elf_has_ht">
            <general_properties_overrides>
                <sw_id>0x0000000C</sw_id>
                <anti_rollback_version>0x00000000</anti_rollback_version>
                <app_id>0x0000A113</app_id>
            </general_properties_overrides>
            <pil_split>true</pil_split>
            <meta_build_location>$(FILE_TYPE:file_ref, ATTR:pil_split, VAR:fngap64)</meta_build_location>
        </image>

3. 重新编译打包NON-HLOS.bin

cd Divar.LA.3.0/common/build
python build.py

4.验证,

重新烧写 Divar.LA.3.0/common/build/ufs/bin/asic/NON-HLOS.bin, emmc的项目在emmc目录下

adb shell "ls /vendor/firmware_mnt/image/fngap64*" 有东西则说明TA已经编译进NON-HLOS.bin

驱动集成

1. 

将驱动放入内核目录,由于gki2.0都是编译为ko,在Kconfig里默认default m即可,编译完成后生成fpsensor_spi_tee.ko

kernel_platform/msm-kernel/drivers/input/fpsensor_tee_driver

2. 配置DTS

khaje-qrd.dtsi
  &soc {

        // add for fingerprint
        fingerprint_gpio {
                 compatible = "qcom,fingerprint-gpio";
                interrupt-parent = <&tlmm>;
                interrupts = <83 0x2008>;
                fp-gpio-reset = <&tlmm 104 0x0>;
                fp-gpio-int = <&tlmm 83 0x2008>;
                 fp-gpio-power = <&tlmm 36 0x0>;
                 status = "okay";
         };
};

HAL集成

1. 

在device/qcom/bengal_515/ 下创建目录 fingerprint

创建fingerprint.mk添加以下内容

$(call inherit-product, $(LOCAL_PATH)/fpsensor/fpsensor.mk)


PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.fingerprint.xml:vendor/etc/permissions/android.hardware.fingerprint.xml
PRODUCT_PACKAGES += android.hardware.biometrics.fingerprint@2.1-service
PRODUCT_PACKAGES += android.hardware.biometrics.fingerprint@2.1-service.rc

2. 

创建fpsensor目录

创建fpsensor.mk添加以下内容

LOCAL_PATH := device/qcom/bengal_515/fingerprint/fpsensor

# HAL lib
PRODUCT_COPY_FILES += $(LOCAL_PATH)/lib64/hw/fpsensor_fingerprint.default.so:vendor/lib64/hw/fpsensor_fingerprint.default.so

#selinux
BOARD_SEPOLICY_DIRS += device/qcom/bengal_515/fingerprint/fpsensor/sepolicy

3. 

将集创高通android_qsee移植包中的sepolicy和lib64目录拷贝过来

在device/qcom/bengal_515/bengal_515.mk 中添加上面新加的mk

$(call inherit-product, $(LOCAL_PATH)/fingerprint/fingerprint.mk)

4. 

在device/qcom/bengal_515/init.target.rc中添加DAC权限

on boot
   chown system system /dev/fpsensor
    chmod 664 /dev/fpsensor

5.

解决fpsensor_fingerprint.default.so编译报错

现在google希望elf格式的文件走android.bp来拷贝,由于fpsensor_fingerprint.default.so是通过PRODUCT_COPY_FILES来拷贝,会编译报错,为了省事直接把下面注释掉。(正规的办法是要把fpsensor_fingerprint.default.so写到android.bp中)

build/make/core/Makefile

59 #check_elf_prebuilt_product_copy_files := true
60 #ifneq (,$(filter true,$(BUILD_BROKEN_ELF_PREBUILT_PRODUCT_COPY_FILES)))
61 #check_elf_prebuilt_product_copy_files :=
62 #endif

或者添加

BUILD_BROKEN_ELF_PREBUILT_PRODUCT_COPY_FILES += true

6.

更改指纹默认的HARDWARE_MODULE_ID

hardware/interfaces/biometrics/fingerprint/2.1/default/BiometricsFingerprint.cpp

FINGERPRINT_HARDWARE_MODULE_ID改为fpsensor_fingerprint,才能匹配fpsensor_fingerprint.default.so

fingerprint_device_t* BiometricsFingerprint::openHal() {
    //if (0 != (err = hw_get_module(FINGERPRINT_HARDWARE_MODULE_ID, &hw_mdl))) {
    if (0 != (err = hw_get_module("fpsensor_fingerprint", &hw_mdl))) {

    }

移除高通指纹

SM6225在Android14上默认编译了高通的fingerprint,需要去除

1.

vendor/qcom/proprietary/prebuilt_HY11/target/product/bengal_515/Android.mk

+#ifeq ($(wildcard vendor/qcom/proprietary/biometrics/fingerprint),)
+
+#include $(CLEAR_VARS)
+#LOCAL_MODULE := QFingerprintService
+#LOCAL_MODULE_OWNER := qcom
+#LOCAL_MODULE_TAGS := optional
+#LOCAL_MODULE_CLASS := APPS
+#LOCAL_CERTIFICATE := platform
+#LOCAL_MODULE_SUFFIX := .apk
+#LOCAL_SRC_FILES := ../../.././target/product/bengal_515/vendor/app/QFingerprintService/QFingerprintService.apk
+#LOCAL_MODULE_PATH := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR)/app
+#include $(BUILD_PREBUILT)
+#endif
+
+#ifeq ($(wildcard vendor/qcom/proprietary/biometrics/fingerprint),)
+
+#include $(CLEAR_VARS)
+#LOCAL_MODULE := QFPCalibration
+#LOCAL_MODULE_OWNER := qcom
+#LOCAL_MODULE_TAGS := optional
+#LOCAL_MODULE_CLASS := APPS
+#LOCAL_CERTIFICATE := platform
+#LOCAL_MODULE_SUFFIX := .apk
+#LOCAL_SRC_FILES := ../../.././target/product/bengal_515/vendor/app/QFPCalibration/QFPCalibration.apk
+#LOCAL_MODULE_PATH := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR)/app
+#include $(BUILD_PREBUILT)
+#endif
+#include $(CLEAR_VARS)
+#LOCAL_MODULE := qfp-daemon
+#LOCAL_MODULE_OWNER := qcom
+#LOCAL_MODULE_TAGS := optional
+#LOCAL_MODULE_CLASS := EXECUTABLES
+#LOCAL_SHARED_LIBRARIES := libbase libbinder_ndk android.hardware.biometrics.fingerprint-V2-ndk android.hardware.biometrics.common-V2-ndk libc libcutils liblog libutils vendor.qti.hardware.fingerprint@1.0 libqfp-service libhidlbase libhidltransport libc++ libm libdl
+#LOCAL_SRC_FILES := ../../.././target/product/bengal_515/vendor/bin/hw/qfp-daemon
+#LOCAL_MODULE_PATH := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR)/bin/hw
+#LOCAL_PROPRIETARY_MODULE := true
+#include $(BUILD_PREBUILT)
+#endif
+#include $(CLEAR_VARS)
+#LOCAL_MODULE := libqfp-service
+#LOCAL_MODULE_CLASS := SHARED_LIBRARIES
+#LOCAL_SHARED_LIBRARIES := libc libcutils liblog libutils libhidlbase libhidltransport vendor.qti.hardware.fingerprint@1.0 libbase libbinder_ndk android.hardware.biometrics.fingerprint-V2-ndk android.hardware.biometrics.common-V2-ndk libc++ libm libdl
+#LOCAL_MODULE_SUFFIX := .so
+#LOCAL_STRIP_MODULE := false
+#LOCAL_MULTILIB := 64
+#LOCAL_MODULE_OWNER := qcom
+#LOCAL_MODULE_TAGS := optional
+#LOCAL_SRC_FILES := ../../.././target/product/bengal_515/vendor/lib64/libqfp-service.so
+#LOCAL_MODULE_PATH := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR)/lib64
+#LOCAL_PROPRIETARY_MODULE := true
+#include $(BUILD_PREBUILT)
+#endif

2.

vendor/qcom/proprietary/prebuilt_HY11/target/product/bengal_515/prebuilt.mk

+#PRODUCT_PACKAGES_DEBUG += QFPCalibration
+#PRODUCT_PACKAGES += qfp-daemon
+#PRODUCT_COPY_FILES += vendor/qcom/proprietary/prebuilt_HY11/target/product/bengal_515/vendor/etc/init/qfp-daemon.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/qfp-daemon.rc
+#PRODUCT_PACKAGES += qfp-daemon.xml
+#PRODUCT_PACKAGES += libqfp-service

Framework & APP 修改

HIDL接口是google要废弃掉的东西,Android14指纹默认也是AIDL HAL,需要使用HIDL HAL要修改qssi代码

1.

qssi/frameworks/base/core/res/res/values/config.xml

     <string-array name="config_biometric_sensors" translatable="false" >
-        <!-- <item>0:2:15</item>  ID0:Fingerprint:Strong -->
+        <item>0:2:15</item>  <!-- ID0:Fingerprint:Strong -->

2.

qssi/packages/apps/Settings/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java


     public void onEnrollmentProgressChange(int steps, int remaining) {
-        mNextClicked = true;
-        proceedToEnrolling(true /* cancelEnrollment */);
+        mNextClicked = false;
+        proc

至此指纹功能已经移植完成,设置菜单中出现指纹选项,集创北方移植包中剩下的为指纹测试的东西,如果工厂MMI没有需求可以不要。

Debug

1.

TZ log抓取 cat /proc/tzdbg/qsee_log 以前的路径为/d/tzdbg/qsee_log

2. 

如果调试不知道主控指纹 spi 口应该选哪一路, 可以用如下命令测试:
adb shell qseecom_sample_client v smplap32 19 1 5
19: 表示测试 SPI
1: 表示测试次数
5: 表示 SPI5

3.

如果TA没有运行,可以手动加载TA

adb shell qseecom_sample_client –v fngap64 0 1

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值