系统硬件平台是sdm450/msm8953
在主板原理图上可以找到指纹相关的原理图部分如下:
该IC使用两路电, LDO6 1.8v, LDO10 2.8v。
a)配置编译选项
modified: msm-3.18/arch/arm64/configs/msmcortex-perf_defconfig
modified: msm-3.18/arch/arm64/configs/msmcortex_defconfig
modified: msm-3.18/drivers/input/Kconfig
modified: msm-3.18/drivers/input/Makefile
--- a/kernel/msm-3.18/arch/arm64/configs/msmcortex_defconfig
+++ b/kernel/msm-3.18/arch/arm64/configs/msmcortex_defconfig
+CONFIG_MICROARRAY_FINGERPRINT=y
--- a/kernel/msm-3.18/arch/arm64/configs/msmcortex-perf_defconfig
+++ b/kernel/msm-3.18/arch/arm64/configs/msmcortex-perf_defconfig
+CONFIG_MICROARRAY_FINGERPRINT=y
--- a/kernel/msm-3.18/drivers/input/Kconfig
+++ b/kernel/msm-3.18/drivers/input/Kconfig
+config MICROARRAY_FINGERPRINT
+ tristate "MICROARRAY fingerprint IC"
+ depends on SPI_MASTER
+ help
+ MICROARRAY fingerprint ic
+#yujixuan modify
+source "drivers/input/fingerprint/Kconfig"
--- a/kernel/msm-3.18/drivers/input/Makefile
+++ b/kernel/msm-3.18/drivers/input/Makefile
+obj-$(CONFIG_MICROARRAY_FINGERPRINT) += fingerprint/
b)添加驱动源码文件
fingerprint
├── Kconfig
├── Makefile
└── microarray
├── ioctl_cmd.h
├── Kconfig
├── madev.c
├── madev.h
├── Makefile
├── qualcomm-settings.c
└── qualcomm-settings.h
在获取硬件的硬件信息中,可知该指纹使用的 spi是 spi7, msm8953平台默认情况下,spi7是被配置在TZ端安全环境中, 被限制不能在AP侧使用的,
如果我们在AP侧使用spi7,需要解除限制,并且修改设备树种的 spi7 相关配置。
a)添加spi7 的设备树配置
--- a/kernel/msm-3.18/arch/arm64/boot/dts/qcom/msm8953-pinctrl.dtsi
+++ b/kernel/msm-3.18/arch/arm64/boot/dts/qcom/msm8953-pinctrl.dtsi
@@ -1543,6 +1543,67 @@
+ /* start for fingerprint spi end */
+ spi7 {
+ spi7_default: spi7_default {
+ /* active state */
+ mux {
+ /* MOSI, MISO, CLK */
+ pins = "gpio137", "gpio138", "gpio135";
+ function = "blsp_spi7";
+ };
+ config {
+ pins = "gpio137", "gpio138", "gpio135";
+ drive-strength = <12>; /* 12 MA */
+ bias-disable = <0>; /* No PULL */
+ };
+ };
+ spi7_sleep: spi7_sleep {
+ /* suspended state */
+ mux {
+ /* MOSI, MISO, CLK */
+ pins = "gpio137", "gpio138", "gpio135";
+ function = "gpio";
+ };
+ config {
+ pins = "gpio137", "gpio138", "gpio135";
+ drive-strength = <2>; /* 2 MA */
+ bias-pull-down; /* PULL Down */
+ };
+ };
+ spi7_cs0_active: cs0_active {
+ /* CS */
+ mux {
+ pins = "gpio136";
+ function = "blsp_spi7";
+ };
+ config {
+ pins = "gpio136";
+ drive-strength = <2>;
+ bias-disable = <0>;
+ };
+ };
+ spi7_cs0_sleep: cs0_sleep {
+ /* CS */
+ mux {
+ pins = "gpio136";
+ function = "gpio";
+ };
+ config {
+ pins = "gpio136";
+ drive-strength = <2>;
+ bias-disable = <0>;
+ };
+ };
+ };
--- a/kernel/msm-3.18/arch/arm64/boot/dts/qcom/msm8953.dtsi
+++ b/kernel/msm-3.18/arch/arm64/boot/dts/qcom/msm8953.dtsi
aliases {
+ spi7 = &spi_7;
};
+ spi_7: spi@7af7000 { /* BLSP1 QUP7 */
+ compatible = "qcom,spi-qup-v2";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg-names = "spi_physical", "spi_bam_physical";
+ reg = <0x7af7000 0x600>,
+ <0x7AC4000 0x1f000>;
+ interrupt-names = "spi_irq", "spi_bam_irq";
+ interrupts = <0 301 0>, <0 239 0>;
+ spi-max-frequency = <19200000>;
+ pinctrl-names = "spi_default", "spi_sleep";
+ pinctrl-0 = <&spi7_default &spi7_cs0_active>;
+ pinctrl-1 = <&spi7_sleep &spi7_cs0_sleep>;
+ clocks = <&clock_gcc clk_gcc_blsp2_ahb_clk>,
+ <&clock_gcc clk_gcc_blsp2_qup3_spi_apps_clk>;
+ clock-names = "iface_clk", "core_clk";
+ qcom,infinite-mode = <0>;
+ qcom,use-bam;
+ qcom,use-pinctrl;
+ qcom,ver-reg-exists;
+ qcom,bam-consumer-pipe-index = <8>;
+ qcom,bam-producer-pipe-index = <9>;
+ qcom,master-id = <84>;
+ status = "disabled";
+ };
b)添加改指纹驱动设备树节点
如果是REE环境 spi在AP端控制,配置如下:
--- a/kernel/msm-3.18/arch/arm64/boot/dts/qcom/msm8953.dtsi
+++ b/kernel/msm-3.18/arch/arm64/boot/dts/qcom/msm8953.dtsi
+ +&spi_7 {
+ status = "ok";
+ microarray_fp@0 {
+ status = "ok";
+ compatible = "microarray,fingerprint";
+ reg = <0x0>;
+ spi-max-frequency = <4800000>;
+ vcc_io = <&pm8953_l6>;
+ microarray,gpio_reset = <&tlmm 20 0>;
+ microarray,gpio_irq = <&tlmm 44 0>;
+ microarray,gpio_pwr = <&tlmm 97 0>;
+ };
+};
另外,需要在 TZ中解除对spi7的使用限制。
--- a/TZ.BF.4.0.5/trustzone_images/core/buses/qup_accesscontrol/bear/config/QUPAC_8953_Access.xml
+++ b/TZ.BF.4.0.5/trustzone_images/core/buses/qup_accesscontrol/bear/config/QUPAC_8953_Access.xml
@@ -149,7 +149,7 @@
1
135, 136, 137, 138, end
15, end
- AC_TZ
+ AC_HLOS
如果是TEE环境 spi在TZ端控制,AP侧便可以不添加SPI7相关的配置,直接在soc下配置。
+&soc {
+ microarray_fp{
+ status = "ok";
+ compatible = "microarray,fingerprint";
+ spi-max-frequency = <4800000>;
+ //microarray,gpio_reset = <&tlmm 2 0>;
+ microarray,gpio_irq = <&tlmm 44 0>;
+ microarray,gpio_pwr = <&tlmm 97 0>;
+ avdd-supply = <&pm8953_l10>;
+ vdd-supply = <&pm8953_l6>;
+ };
+}
c)修改驱动,打开log开关,观察开机log,查找设备节点
通过阅读供应商提供的驱动源码,该驱动的主要目的是配置gpio,创建设备,通过上层iotcl读写,检测中断,收发信息,详细内容这里不做讨论,主要关注的是发现无上电内容, 驱动直接在 init过程中加载,通过
of_find_compatible_node接口直接 获取设备树的填充信息。所以需要我们 在设备树里添加
avdd-supply = <&pm8953_l10>;
vdd-supply = <&pm8953_l6>;
创建device结构体,将 device_node 传入device,然后使用regulator_get,regulator_enable来上电。
成功加载后的log 如下::
msm8953_64:/ # dmesg | grep MAFP
[ 7.924438] MAFP_mas_init: debug log! start!
[ 8.063001] MAFP_mas_do_some_for_probe: Get the regulator for vdd_l6 sucessfully.
[ 8.081571] MAFP_mas_do_some_for_probe: Get the regulator for avdd_l10 sucessfully.
[ 8.100764] MAFP_mas_probe: debug log! end!
msm8953_64:/dev # ls -l madev0
crw-rw-rw- 1 system system 231, 0 1970-01-01 00:28 madev0
指纹的初始化是在tz端spi通信,读取id。基本ok后 通过ioctl控制会在驱动中注册相关中断。
如果驱动中已经成功注册了中断,指纹基本上是ok的,查询到的中断应如下。
msm8953_64:/ # cat proc/interrupts
CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7
51: 156 0 0 0 0 0 0 0 msmgpio 44 qcom,finger_print-eint
在TEE环环境中的指纹,AP侧不做spi通信
这里直接将编译好的ta 固件放到源码下,将其编译到system.img中,具体的路径要根据上层服务调用的库中open调用的具体路径来决定。 具体ta库文件的编译,后面再介绍。
diff --git a/device/qcom/msm8953_64/msm8953_64.mk b/device/qcom/msm8953_64/msm8953_64.mk
index ae2d3bb..ee36498 100755
--- a/device/qcom/msm8953_64/msm8953_64.mk
+++ b/device/qcom/msm8953_64/msm8953_64.mk
@@ -102,6 +102,28 @@ PRODUCT_PACKAGES += \
+#fingerprint
+PRODUCT_PACKAGES += \
+ fingerprintd \
+
+PRODUCT_COPY_FILES += device/qcom/msm8953_64/mafp/fingerprint.default.so:/system/lib64/hw/fingerprint.default.so
+PRODUCT_COPY_FILES += device/qcom/msm8953_64/mafp/libfprint-x64.so:/system/lib64/libfprint-x64.so
+PRODUCT_COPY_FILES += \
+ device/qcom/msm8953_64/mafp/firmware/mafp.b00:/system/etc/firmware/mafp.b00 \
+ device/qcom/msm8953_64/mafp/firmware/mafp.b01:/system/etc/firmware/mafp.b01 \
+ device/qcom/msm8953_64/mafp/firmware/mafp.b02:/system/etc/firmware/mafp.b02 \
+ device/qcom/msm8953_64/mafp/firmware/mafp.b03:/system/etc/firmware/mafp.b03 \
+ device/qcom/msm8953_64/mafp/firmware/mafp.b04:/system/etc/firmware/mafp.b04 \
+ device/qcom/msm8953_64/mafp/firmware/mafp.b05:/system/etc/firmware/mafp.b05 \
+ device/qcom/msm8953_64/mafp/firmware/mafp.b06:/system/etc/firmware/mafp.b06 \
+ device/qcom/msm8953_64/mafp/firmware/mafp.mbn:/system/etc/firmware/mafp.mbn \
+ device/qcom/msm8953_64/mafp/firmware/mafp.mdt:/system/etc/firmware/mafp.mdt \ frameworks/native/data/etc/android.hardware.fingerprint.xml:system/etc/permissions/android.hardware.fingerprint.xml
在调试指纹的时候,会遇到很多的selinux报错,举一个例子如下:
01-01 22:47:08.185 697 697 E QSEECOMAPI: Error::Failed to open /dev/qseecom device
01-01 22:47:08.185 697 697 D MICROARRAY: [qsc_start_app_V2:90] end. ret=-1
01-01 22:47:08.185 697 697 E MICROARRAY: [ma_tac_create:124] start app ret = -1
01-01 22:47:08.185 697 697 D MICROARRAY: [get_app_name:104] s_app_name = mafp
01-01 22:47:08.185 697 697 D QSEECOMAPI: QSEECom_get_handle sb_length = 0x58000
01-01 22:47:08.179 697 697 W fingerprintd: type=1400 audit(0.0:14): avc: denied { read write } for name="qseecom" dev="tmpfs" info=5621 scontext=u:r:fingerprintd:s0 tcontext=u:object_r:tee_device:s0 tclass=chr_file permissive=0
本着缺什么补什么的原则,以及项目修改的经验,添加一个指纹需要修改的权限大致如下:
--- a/device/qcom/sepolicy/common/device.te
+++ b/device/qcom/sepolicy/common/device.te
++#add by microarray
+type microarray_finger_device_type, dev_type;
--- a/device/qcom/sepolicy/common/file.te
+++ b/device/qcom/sepolicy/common/file.te
+#add by microarray gur
+type ma_data_file, file_type, data_file_type;
--- a/device/qcom/sepolicy/common/file_contexts
+++ b/device/qcom/sepolicy/common/file_contexts
@@ -388,3 +388,24 @@
+# Devices
+/dev/madev0 u:object_r:microarray_finger_device_type:s0
+/data/system/ma_fingerprint(/.*)? u:object_r:ma_data_file:s0
--- a/device/qcom/sepolicy/common/fingerprintd.te
+++ b/device/qcom/sepolicy/common/fingerprintd.te
+allow fingerprintd microarray_finger_device_type:chr_file {create_file_perms};
+allow fingerprintd ma_data_file:file create_file_perms;
+allow fingerprintd ma_data_file:dir create_dir_perms;
--- a/device/qcom/sepolicy/common/init.te
+++ b/device/qcom/sepolicy/common/init.te
+allow init ma_data_file:dir {create_file_perms};
+allow init ma_data_file:file {create_file_perms};
--- a/device/qcom/sepolicy/common/platform_app.te
+++ b/device/qcom/sepolicy/common/platform_app.te
+allow platform_app microarray_finger_device_type:chr_file {create_file_perms};
--- a/device/qcom/sepolicy/common/system_app.te
+++ b/device/qcom/sepolicy/common/system_app.te
+allow system_app microarray_finger_device_type:chr_file {create_file_perms};
修改 开机启动相关服务
--- a/device/qcom/common/rootdir/etc/init.qcom.rc
+++ b/device/qcom/common/rootdir/etc/init.qcom.rc
+ #add by microarray gur
+ mkdir /data/system/ma_fingerprint 0777 system system
@@ -990,6 +993,14 @@ service usb_uicc_enable /system/bin/sh /system/etc/init.qcom.uicc.sh
disabled
oneshot
+#fingerprint
+service fingerprintd /system/bin/fingerprintd
+ class late_start
+ user system
修改设备节点文件权限
--- a/device/qcom/common/rootdir/etc/ueventd.qcom.rc
+++ b/device/qcom/common/rootdir/etc/ueventd.qcom.rc
@@ -125,6 +125,10 @@
+/dev/madev0 0666 system system
PATH:\TZ.BF.4.0.5\trustzone_images\build\ manifest.xml
TZ.BF.4.0.5
TZ.BF.4.0.5-00065-M8937AAAAANAZT-1
00065
1
M8937AAAAANAZT
检查编译环境是否OK配置好编译环境后,可以先编译 sampleapp ta来测试编译环境是否ok。
else if /i "%1" == "tz" (
cd TZ.BF.4.0.5/trustzone_images/build/ms
if /i "%2" == "" (
build.cmd CHIPSET=msm8953 devcfg sampleapp
)
cd \smartmodule\code\TZ.BF.4.0.5\trustzone_images\build\ms
build.cmd CHIPSET=msm8953 devcfg sampleapp -c
build.cmd CHIPSET=msm8953 devcfg sampleapp
=== Generating sampleapp/A53_64/SANAANAA/smplap64.mdt...
BIN D:\SC60_BP\TZ.BF.4.0.5\trustzone_images\build\ms\bin\PIL_IMAGES\SPLITBINS_SANAANAA\unsigned\smplap64.mdt
BIN D:\SC60_BP\TZ.BF.4.0.5\trustzone_images\build\ms\bin\PIL_IMAGES\SPLITBINS_SANAANAA\unsigned\smplap64.b00
BIN D:\SC60_BP\TZ.BF.4.0.5\trustzone_images\build\ms\bin\PIL_IMAGES\SPLITBINS_SANAANAA\unsigned\smplap64.b01
BIN D:\SC60_BP\TZ.BF.4.0.5\trustzone_images\build\ms\bin\PIL_IMAGES\SPLITBINS_SANAANAA\unsigned\smplap64.b02
BIN D:\SC60_BP\TZ.BF.4.0.5\trustzone_images\build\ms\bin\PIL_IMAGES\SPLITBINS_SANAANAA\unsigned\smplap64.b03
BIN D:\SC60_BP\TZ.BF.4.0.5\trustzone_images\build\ms\bin\PIL_IMAGES\SPLITBINS_SANAANAA\unsigned\smplap64.b04
BIN D:\SC60_BP\TZ.BF.4.0.5\trustzone_images\build\ms\bin\PIL_IMAGES\SPLITBINS_SANAANAA\unsigned\smplap64.b05
BIN D:\SC60_BP\TZ.BF.4.0.5\trustzone_images\build\ms\bin\PIL_IMAGES\SPLITBINS_SANAANAA\unsigned\smplap64.b06
编译环境加载:
如果SDK编译无法通过,按照以下过程检查环境
解压并拷贝gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux到/opt/arm
解压并拷贝gcc-linaro-aarch64-none-elf-4.9-2014.07_linux到/opt/arm
解压并拷贝Snapdragon_LLVM到/opt
解压并拷贝gcc-arm-none-eabi-4_8-2014q3到/home/xxx/bin
解压并拷贝gcc-linaro-6.1.1-2016.08-i686_arm-linux-gnueabihf到/home/xxx/bin
解压并拷贝arm-eabi-4.8到/home/xxx/bin
解压并拷贝TZ.BF.4.0.5到/home/xxx/workspace
将python.exe 添加到 高级环境变量中。
添加ID:
--- a/apps/bsp/trustzone/qsapps/build/secimage.xml
+++ b/apps/bsp/trustzone/qsapps/build/secimage.xml
@@ -118,6 +118,12 @@
+
+
+ 0x000000000000000C
+ 0x0000000000008888
+
+
--- a/core/bsp/trustzone/qsapps/build/secimage.xml
+++ b/core/bsp/trustzone/qsapps/build/secimage.xml
+
+
+ 0x000000000000000C
+ 0x0000000000008888
+
+
拷贝工程文件:
cd trustzone_images/core/bsp/trustzone/qsapps/sampleapp/build/
mkdir mafp
cp -r ./sampleapp/* mafp
修改 trustzone_images/core/bsp/trustzone/qsapps/myapp/mafp/SConscript
替换所有的sampleapp 和 SAMPLEAPP 为mafp MAFP.
掉 除了 'mafp','all' 所有的 aliases
cd trustzone_images/core/kernel/libstd/build
mkdir mafp
cp -r ./sampleapp/* mafp
拷贝secure libstd 工程文件
cd trustzone_images/core/securemsm/trustzone/qsee/mink/libstd/build
mkdir mafp
cd trustzone_images/core/securemsm/trustzone/qsapps/libs/biometric/build
mkdir mafp
cp -r ./sampleapp/* mafp
cd trustzone_images/core/securemsm/trustzone/qsapps/libs/applib/qsee/build
mkdir mafp
cp -r ./sampleapp/* mafp
cd trustzone_images/core/securemsm/trustzone/qsapps/libs/applib/proxy/build
mkdir mafp
cp -r ./sampleapp/* mafp
cd trustzone_images/core/securemsm/trustzone/qsapps/libs/applib/common_applib/build
mkdir mafp
cp -r ./sampleapp/* mafp
加入工程文件到编译环境
--- a/core/kernel/libstd/build/SConscript
+++ b/core/kernel/libstd/build/SConscript
@@ -72,13 +72,13 @@ if 'LIBSTD_TEST' in env:
env.AddBinaryLibrary(['TZOS_IMAGE','MONITOR_IMAGE','HYPERVISOR_IMAGE', 'CTZL_IMAGE', 'CTZL64_IMAGE', 'TZTESTEXEC_IMAGE', 'WIDEVINE_IMAGE', 'PLAYREADY_IMAGE', 'MACCHIATO_SAMPLE_IMAGE', 'FIDOSUI_IMAGE',
'GPSAMPLE', 'GPTEST_IMAGE', 'GPTEST2', 'TTAARI1', 'TTACAPI1', 'TTACAPI2', 'TTACAPI3', 'TTACAPI4', 'TTACAPI5', 'TTACRP1', 'TTADS1', 'TTATIME1', 'TTATCF1', 'TTATCF2', 'TTATCF3', 'TTATCF4', 'TTATCF5',
- 'SAMPLEAPP_IMAGE', 'QMPSECAPP_IMAGE', 'SAMPLEAPP64_IMAGE', 'ISDBTMM_IMAGE', 'APTTESTAPP_IMAGE', 'APTCRYPTOTESTAPP_IMAGE', 'ASSURANCETEST_IMAGE', 'ASSURANCETEST64_IMAGE', 'SECURITYTEST_IMAGE','DXHDCP2_IMAGE', 'DXHDCP2DBG_IMAGE',
+ 'SAMPLEAPP_IMAGE', 'MAFP_IMAGE', 'QMPSECAPP_IMAGE', 'SAMPLEAPP64_IMAGE', 'ISDBTMM_IMAGE', 'APTTESTAPP_IMAGE', 'APTCRYPTOTESTAPP_IMAGE', 'ASSURANCETEST_IMAGE', 'ASSURANCETEST64_IMAGE', 'SECURITYTEST_IMAGE','DXHDCP2_IMAGE', 'DXHDCP2DBG_IMAGE',
if 'LIBSTD_TEST' in env:
- env.AddBinaryLibrary(['TZOS_IMAGE', 'HYPERVISOR_IMAGE', 'CTZL_IMAGE', 'CTZL64_IMAGE', 'TZTESTEXEC_IMAGE', 'SAMPLEAPP_IMAGE', 'SAMPLEAPP64_IMAGE', 'FINGERPRINT_IMAGE', 'FINGERPRINT64_IMAGE', 'IRIS_IMAGE', 'RETSTAPP_IMAGE',
+ env.AddBinaryLibrary(['TZOS_IMAGE', 'HYPERVISOR_IMAGE', 'CTZL_IMAGE', 'CTZL64_IMAGE', 'TZTESTEXEC_IMAGE', 'SAMPLEAPP_IMAGE', 'MAFP_IMAGE', 'SAMPLEAPP64_IMAGE', 'FINGERPRINT_IMAGE', 'FINGERPRINT64_IMAGE', 'IRIS_IMAGE', 'RETSTAPP_IMAGE',
--- a/core/securemsm/trustzone/qsee/mink/libstd/build/SConscript
+++ b/core/securemsm/trustzone/qsee/mink/libstd/build/SConscript
@@ -108,7 +108,7 @@ images = ['TZOS_IMAGE', 'MONITOR_IMAGE', 'HYPERVISOR_IMAGE',
'GPSAMPLE', 'GPTEST_IMAGE', 'TTAARI1', 'TTACAPI1', 'TTACAPI2', 'TTACAPI3',
'TTACAPI4', 'TTACAPI5', 'TTACRP1', 'TTADS1', 'TTATIME1',
'TTATCF1', 'TTATCF2', 'TTATCF3', 'TTATCF4', 'TTATCF5',
- 'SAMPLEAPP_IMAGE', 'SMPLSERV_IMAGE', 'SMPLCERT_IMAGE',
+ 'SAMPLEAPP_IMAGE', 'MAFP_IMAGE', 'SMPLSERV_IMAGE', 'SMPLCERT_IMAGE',
--- a/core/securemsm/trustzone/qsapps/libs/biometric/build/SConscript
+++ b/core/securemsm/trustzone/qsapps/libs/biometric/build/SConscript
@@ -80,6 +80,7 @@ biometric_lib = '${BUILDPATH}/biometric_lib'
env.AddBinaryLibrary (['SAMPLEAPP_IMAGE'],biometric_lib, [BIOMETRIC_LIB_SOURCES])
+env.AddBinaryLibrary (['MAFP_IMAGE'],biometric_lib, [BIOMETRIC_LIB_SOURCES])
--- a/core/securemsm/trustzone/qsapps/libs/applib/qsee/build/SConscript
+++ b/core/securemsm/trustzone/qsapps/libs/applib/qsee/build/SConscript
@@ -156,6 +156,8 @@ elif env.has_key('KEYMASTERLAT_IMAGE'):
LIB_ENTRY_SOURCES += [ '${BUILDPATH}/src/tzapp_lib_main.c',]
elif env.has_key('SAMPLEAPP_IMAGE'):
LIB_ENTRY_SOURCES += [ '${BUILDPATH}/src/tzapp_lib_main.c',]
+elif env.has_key('MAFP_IMAGE'):
+ LIB_ENTRY_SOURCES += [ '${BUILDPATH}/src/tzapp_lib_main.c',]
@@ -211,6 +213,9 @@ else:
env.AddBinaryObject('SAMPLEAPP_IMAGE', IMG_ENTRY_SOURCES)
env.AddBinaryLibrary('SAMPLEAPP_IMAGE', '${BUILDPATH}/tzapp_entrylib', LIB_ENTRY_SOURCES)
+env.AddBinaryObject('MAFP_IMAGE', IMG_ENTRY_SOURCES)
+env.AddBinaryLibrary('MAFP_IMAGE', '${BUILDPATH}/tzapp_entrylib', LIB_ENTRY_SOURCES)
--- a/core/securemsm/trustzone/qsapps/libs/applib/proxy/build/SConscript
+++ b/core/securemsm/trustzone/qsapps/libs/applib/proxy/build/SConscript
@@ -118,7 +118,7 @@ env.LoadSoftwareUnits()
env.AddBinaryLibrary(['KEYMASTER_IMAGE', 'KEYMASTER64_IMAGE', 'KEYMASTERLAT_IMAGE',
'GPSAMPLE', 'GPTEST_IMAGE', 'GPTEST2', 'TTAARI1', 'TTACAPI1', 'TTACAPI2', 'TTACAPI3', 'TTACAPI4', 'TTACAPI5', 'TTACRP1', 'TTADS1', 'TTATIME1', 'TTATCF1', 'TTATCF2', 'TTATCF3',
- 'TTATCF4', 'TTATCF5', 'SAMPLEAPP_IMAGE', 'SAMPLEAPP64_IMAGE', 'ASSURANCETEST_IMAGE', 'ASSURANCETEST64_IMAGE', 'SECUREUISAMPLE_IMAGE', 'SECUREUISAMPLE64_IMAGE', 'APTTESTAPP_IMAGE', 'APTCRYPTOTESTAPP_IMAGE', 'FIDOCONFIG_IMAGE',
+ 'TTATCF4', 'TTATCF5', 'SAMPLEAPP_IMAGE', 'MAFP_IMAGE', 'SAMPLEAPP64_IMAGE', 'ASSURANCETEST_IMAGE', 'ASSURANCETEST64_IMAGE', 'SECUREUISAMPLE_IMAGE', 'SECUREUISAMPLE64_IMAGE', 'APTTESTAPP_IMAGE', 'APTCRYPTOTESTAPP_IMAGE', 'FIDOCONFIG_IMAGE',
--- a/core/securemsm/secrsa/build/SConscript
+++ b/core/securemsm/secrsa/build/SConscript
@@ -70,6 +70,11 @@ if env.has_key('WINSECAPP_IMAGE'):
+if env.has_key('MAFP_IMAGE'):
+ env.Append(CPPPATH = "${COREBSP_ROOT}/securemsm/secrsa/env/sampleapp/inc")
+ env.Append(CPPPATH = "${COREBSP_ROOT}/securemsm/secmath/env/sampleapp/inc")
+ env.Append(CPPPATH = "${COREBSP_ROOT}/api/securemsm/trustzone/qsee")
+ env.Append(CPPPATH = "${COREBSP_ROOT}/api/securemsm/crypto")
@@ -84,6 +89,8 @@ elif env.has_key('GPTEST_IMAGE'):
env.Append(CCFLAGS = " -O3 ")
elif env.has_key('SAMPLEAPP_IMAGE'):
env.Append(CCFLAGS = " -O3 ")
+elif env.has_key('MAFP_IMAGE'):
+ env.Append(CCFLAGS = " -O3 ")
QSEE中的修改:
--- a/core/securemsm/trustzone/qsee/mink/oem/config/msm8953/oem_config.xml
+++ b/core/securemsm/trustzone/qsee/mink/oem/config/msm8953/oem_config.xml
@@ -40,10 +40,10 @@
- 0x85B00000
+ 0x84a00000
- 0x800000
+ 0x1900000
LK中的修改:
--- a/bootable/bootloader/lk/platform/msm8953/include/platform/iomap.h
+++ b/bootable/bootloader/lk/platform/msm8953/include/platform/iomap.h
@@ -221,8 +221,12 @@
#define RPMB_SND_RCV_BUF_SZ 0x1
/* QSEECOM: Secure app region notification */
-#define APP_REGION_ADDR 0x85B00000
-#define APP_REGION_SIZE 0x800000
+#define APP_REGION_ADDR 0x84a00000
+#define APP_REGION_SIZE 0x1900000
Kernel中的修改:
--- a/kernel/msm-3.18/arch/arm/boot/dts/qcom/msm8953.dtsi
+++ b/kernel/msm-3.18/arch/arm/boot/dts/qcom/msm8953.dtsi
@@ -34,7 +34,8 @@
other_ext_mem: other_ext_region@0 {
compatible = "removed-dma-pool";
no-map;
- reg = <0x0 0x85b00000 0x0 0xd00000>;
+ // reg = <0x0 0x85b00000 0x0 0xd00000>;
+ reg = <0x0 0x84a00000 0x0 0x1E00000>;
};
modem_mem: modem_region@0 {
@@ -2084,9 +2085,10 @@
qcom,ce-opp-freq = <100000000>;
};
- qcom_seecom: qseecom@85b00000 {
+ qcom_seecom: qseecom@84a00000 {
compatible = "qcom,qseecom";
- reg = <0x85b00000 0x800000>;
+ // reg = <0x85b00000 0x800000>;
+ reg = <0x84a00000 0x1900000>;
adb logcat -v time -s MICROARRAY
在log中观察是否存在 .so无法使用,固件库加载不到,selinux权限问题等。
服务加载上通讯不ok,指纹界面应该有了但是无法录入如下图,需要和FAE沟通是否是 库文件的问题。
设备到设备 可以录入界面成功添加指纹的状态是如下状态:
成功移植状态