Qualcomm 플랫폼에서 QSEE 기반 지문인식 방안 이식의 2구동 이식
6234 단어 Android지문인식 TEE 방안 개발
1. 드라이버 컴파일링이 통과하여 정상적인 운행을 검증한다.
먼저 회사에서 손잡이의 구동을 순조롭게 컴파일하여 정상을 검증하였다.고객 현장에 가서 다시는 편집할 수 없는 문제가 발생하지 마라.
이식
드라이버는 파이프를 끊고 파이프를 복원하는 등 dts의 설정 내용을 읽을 수 있기 때문에 먼저 dts를 설정해야 한다.
파일kernel/msm - 3.18/arch/arm64/boot/dts/qcom/msm8953-chipsailing을 추가합니다.dtsi
이 파일은 주로 리셋 파이프, 중단 파이프,spi 파이프 를 설정합니다.주로 다음과 같습니다.
&soc {
chipsailing_fp {
compatible = "chipsailing,fingerprint";
spi-max-frequency = <1000000>;
input-device-name = "cs3511";
interrupt-parent = ;
interrupts = <48 0x0>;
chipsailing,gpio_rst = ;
chipsailing,gpio_irq = ;
clock-names = "iface_clk", "core_clk";
clocks = ,
;
pinctrl-names = "chipsailing_spi_active",
"fingerprint_reset_active",
"fingerprint_reset_suspend",
"fingerprint_irq";
pinctrl-0 = ;
pinctrl-1 = ;
pinctrl-2 = ;
pinctrl-3 = ;
};
};
&tlmm {
chipsailing_spi_active: chipsailing_spi_active{
mux {
pins = "gpio135", "gpio136", "gpio137", "gpio138";
function = "blsp_spi7";
};
config {
pins = "gpio135", "gpio136", "gpio137", "gpio138";
drive-strength = <2>;
bias-disable = <0>;
};
};
fps_reset_high: fps_reset_high{
mux {
pins = "gpio140";
function = "gpio";
};
config {
pins = "gpio140";
drive-strength = <2>;
bias-disable = <0>;
output-high;
};
};
fps_reset_low: fps_reset_low{
mux {
pins = "gpio140";
function = "gpio";
};
config {
pins = "gpio140";
drive-strength = <2>;
bias-disable = <0>;
output-low;
};
};
fps_irq: fps_irq {
mux {
pins = "gpio48";
function = "gpio";
};
config {
pins = "gpio48";
drive-strength = <2>;
bias-disable = <0>;
input-enable;
};
};
};
msm8953-chipsailing.dtsi는 판급의 dts msm8953-mtp에 의해dts 파일은 다음과 같이 C-언어 헤더 파일과 비슷한 형식으로 구성되어 있습니다.
#include "msm8953.dtsi"
#include "msm-pmi8950.dtsi"
#include "msm8953-mtp.dtsi"
#include "msm8953-pmi8950.dtsi"
#include "msm8953-camera-sensor-mtp.dtsi"
#include "msm8953-goodix.dtsi"
#include "msm8953-chipsailing.dtsi"
3. 이식 구동
3.1 드라이브 디렉토리 구조
chipsailing/
├── cf_ctl.c
├── cf_ctl.h
├── Kconfig
└── Makefile
3.2 절차
1)chipsailing 디렉터리를kernel/drivers/input에 복사하고kernel/drivers/input/Makefile 추가 수정
obj-y +=chipsailing
이것은 비교적 폭력적인 방법으로 구동을 내부에 강제로 컴파일하는 것이다.원하지 않으면 Kconfig를 컴파일하여 선택합니다.
kernel/msm-3.18/drivers/input/chipsailing/Kconfig 내용은 다음과 같습니다.
config CHIPSAILING_FINGERPRINT
tristate "generic chipsailing fingerprint driver"
default n
help
add support for chipsailing fingerprint driver.
2)kernel/msm-3.18/drivers/input/Makefile 수정, 추가
obj-$(CONFIG_CHIPSAILING_FINGERPRINT) += chipsailing/
3)kernel/msm-3.18/drivers/input/Kconfig 수정, 추가
source "drivers/input/chipsailing/Kconfig"
4)arch/arm64/configs/msmcortex 수정defconfig, 추가
CONFIG_CHIPSAILING_FINGERPRINT=y
5)arch/arm64/configs/msmcortex-perf 수정defconfig, 추가:
CONFIG_CHIPSAILING_FINGERPRINT=y
설명: 4) 5) 단계는 해당하는 보드 수준 config 파일에서 CONFIG 를 정의합니다.CHIPSAILING_FINGERPRINT라는 매크로는 플랫폼에 따라 프로젝트마다 수정할 수 있는 파일이 다르기 때문에 해당하는 프로젝트에 따라 수정해야 한다.
4. 디버깅 디테일
1. 만약에 여러 개의 지문이 이 프로젝트에 적용되고 친구가 디버깅을 다 했다면 발 관리 자원의 점용을 피하기 위해 그들의 드라이브를 컴파일하지 마세요.
2, 컴파일 boot.img 녹음 후 구동이 정상적이지 않다고 어떻게 판단합니까?
1) 장치 결점 보기,/dev/csspi는 드라이브가 만든 결점입니다. 정상적인 상황에서는 존재해야 합니다.
ls /dev/cs_spi
/dev/cs_spi
2) 등록 중단 여부를 확인할 때 cf 키워드가 표시됩니다.irq.
cat /proc/interrupts | grep cf_irq
297: 3 mt-eint 9 cf_irq
3) sys 결점을 살펴보면 내부 핵 공간이 중단 신호를 구동 공간에 보고하는 것과 관련이 있다.
ls /sys/devices/platform/cs_spi/ -l
-rw-r--r-- root root 4096 2015-01-02 00:24 driver_override
-rw-rw---- root root 4096 2015-01-01 00:02 irq
-r--r--r-- root root 4096 2015-01-02 00:24 modalias
drwxr-xr-x root root 2015-01-01 00:01 power
lrwxrwxrwx root root 2015-01-02 00:24 subsystem -> ../../../bus/platform
-rw-r--r-- root root 4096 2015-01-01 00:01 uevent
3. 구동 로그 보기
키워드:chipsailing
1) 실시간 로그 보기
cat /proc/kmsg | grep chipsailing // log
adb shell "cat /d/tzdbg/qsee_log | grep chipsailing" // TA log
2)log시스템에 저장된log파일 보기
Qualcomm의 로그 도구인 QTI Logkit을 열면 로그를 저장합니다. 이것은 mtklog와 차이가 없습니다.
log 경로:/data/user/0/com.qualcomm.qti.logkit/files
디렉토리 구조:
.
├── logdata
│ └── Session_02-10_0446-3444414627
│ ├── out-Bootup-kmsg0.txt.zip
│ ├── out-Bootup-logcat0.txt.zip
│ ├── out-Diag0.isf.zip
│ ├── out-Diag1.isf.zip
│ ├── out-eHLOSCommand_ContLogcatEvents0.txt.zip
│ ├── out-eHLOSCommand_ContLogcatEvents1.txt.zip
│ ├── out-eHLOSCommand_ContLogcatRadio0.txt.zip
│ ├── out-eHLOSCommand_ContLogcatRadio1.txt.zip
│ ├── out-kmesg0.txt.zip
│ ├── out-kmesg1.txt.zip
│ ├── out-kmesg2.txt.zip
│ ├── out-logcat0.txt.zip
│ ├── out-logcat1.txt.zip
│ ├── out-logcat2.txt.zip
│ ├── out-msg_hash_088e96f5-9aa6-8b9a-48fc-a74849229247.qdb.zip
│ └── Package.xml
└── temp // log
├── Bootup-kmsg0.txt // log mtk_log kernel.boot
├── Bootup-logcat0.txt //logcat log mainlog.boot
├── kmesg2.txt
├── kmesg3.txt
├── kmesg8.txt
├── kmesg9.txt
├── logcat2.txt
├── logcat3.txt
├── logcat8.txt
└── logcat9.txt
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.