手机-anrdroid-嵌入式开发

2022-07-25,,

文章目录

      • 🔴豆荚TEE的debug记录
        • 1、TEE log由buffer输出改成uart输出
        • 2、开启keymaster纯软实现
      • 🔴Android中安全相关的vts测试方法
        • 1、keymaster generate rsa key
      • 🔴Android手机底层开发必备的技巧记录
        • 1、android手机命令行截图
      • 🔴Android手机底层开发需要知道的上层知识记录
        • 1、SystemUI
        • 2、lockSetting app中显示/弹出的字符串
        • 3、密码锁相关文件路径
      • 🔴linux kernel的ErrorLog随记录
        • 1、BUG: scheduling while atomic

🔴豆荚TEE的debug记录

1、TEE log由buffer输出改成uart输出

alsp/vendor/mediatek/proprietary/bootable/bootloader/preloader$ git diff platform/mt6580/src/security/trustzone/tz_teei.c
diff --git a/platform/mt6580/src/security/trustzone/tz_teei.c b/platform/mt6580/src/security/trustzone/tz_teei.c
index a78429237..69c12ecaa 100644
--- a/platform/mt6580/src/security/trustzone/tz_teei.c
+++ b/platform/mt6580/src/security/trustzone/tz_teei.c
@@ -267,7 +267,7 @@ void teei_boot_param_prepare(u32 param_addr, u32 tee_entry,

     /* Configure for ISEE flags */
        teearg->flags = ISEE_FLAGS_DEFAULT_VALUE;
-       CONFIG_ISEE_FLAGS(&teearg->flags, ISEE_FLAGS_LOG_PATH_BUFFER,
+       CONFIG_ISEE_FLAGS(&teearg->flags, ISEE_FLAGS_LOG_PATH_UART,
                        ISEE_FLAGS_LOG_PATH_MASK, ISEE_FLAGS_LOG_PATH_OFFSET);
 #if defined(TARGET_BUILD_VARIANT_ENG) || defined(TARGET_BUILD_VARIANT_USERDEBUG)
        CONFIG_ISEE_FLAGS(&teearg->flags, ISEE_FLAGS_LOG_LEVEL_INFO,
hehezhou@buildsrv-223:~/code/r0_dryonly2/vendor/mediatek/proprietary/bootable/bootloader/preloader$

2、开启keymaster纯软实现

在device.mk中,定义了keymaster使用的方法,如果开启了TEE,则走TEE厂商的keymaster Hal,如果未开启TEE,则走纯软的实现。
在一些场景下,我们开启了TEE,又希望走纯软的实现,可以将其它语句删除,只保留else中的语句。

(vim device/mediatek/common/device.mk)
# list of all TEEs
ifeq ($(strip $(TRUSTONIC_TEE_SUPPORT)), yes)
    PRODUCT_PACKAGES += android.hardware.keymaster@4.0-service.trustonic
else ifeq ($(strip $(MICROTRUST_TEE_SUPPORT)), yes)
    PRODUCT_PACKAGES += android.hardware.keymaster@4.0-service.beanpod
else ifeq ($(strip $(MICROTRUST_TEE_LITE_SUPPORT)), yes)
    PRODUCT_PACKAGES += android.hardware.keymaster@4.0-service.beanpod.lite
else ifeq ($(strip $(TRUSTKERNEL_TEE_SUPPORT)), yes)
    PRODUCT_PACKAGES += android.hardware.keymaster@4.0-service.trustkernel
else ifeq ($(strip $(MTK_IN_HOUSE_TEE_SUPPORT)), yes)
    PRODUCT_PACKAGES += android.hardware.keymaster@4.0-service.mtee
else
    PRODUCT_PACKAGES += android.hardware.keymaster@4.0-service
endif #end of list of TEEs

🔴Android中安全相关的vts测试方法

android中keymaster、keystore、gatekeeper、fingerprint等相关的VTS测试方法

1、keymaster generate rsa key

adb shell ./data/VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/NewKeyGenerationTest.Rsa/0_default --gtest_repeat=1000 --gtest_color=yes --gtest_break_on_failure

🔴Android手机底层开发必备的技巧记录

1、android手机命令行截图

adb shell /system/bin/screencap -p /sdcard/screenshot.png

🔴Android手机底层开发需要知道的上层知识记录

**说明:**做为一名底层驱动工程师、安全工程师,虽然有时也写过jni/app啥的,但垃圾的像屎一样,非常有必要整理一下上层知识的点滴,毕竟我们还要看gatekeeper/keystore相关代码。希望这篇文章对一名底层开发的工程师有所帮助.

1、SystemUI

在MTK平台中,在以下两个路径下,都能看到systemUI的代码,废话不多说,一个是android原生的SystemUI,一个是mtk基于原生定制的SystemUI,其实MTK也没有改动过多.

  • frameworks/base/packages/SystemUI/
  • vendor/mediatek/proprietary/packages/apps/SystemUI/
    另外在有些OEM厂商中,有自己的SystemUI,会已apk的形式放到android源码中,这部分不开源.

2、lockSetting app中显示/弹出的字符串

packages/apps/Settings/res/values-en-rAU/strings.xml

3、密码锁相关文件路径

  • frameworks/base/core/java/android/app/KeyguardManager.java
  • frameworks/base/services/core/java/com/android/server/locksettings/LockSettingsService.java

🔴linux kernel的ErrorLog随记录

1、BUG: scheduling while atomic

一、在preempt_disable(关闭抢占)的上下文中,使用了schedule函数(如sleep,yeild), 则会出现“BUG: scheduling while atomic: asr_engine_test/148/0x00000003”, 然后panic了

10 :30 :39 I : [ASR Engine Test]###################### engine1 : aligned ######################
10 :30 :39 I : [ASR Engine Test]==ecb tes[ 6.630061] c0 148 (asr_engine_test) BUG: scheduling while atomic: asr_engine_test/148/0x00000003
10 :30 :39 t
=
10 :30 :39 [ 6.631254] Modules linked in:
10 :30 :39 [ 6.631672] c0 148 (asr_engine_test) CPU: 0 PID: 148 Comm: asr_engine_test Not tainted 4.4.145+ #107
10 :30 :39 [ 6.632798] c0 148 (asr_engine_test) Hardware name: ASR AQUILAC FPGA (DT)
10 :30 :39 [ 6.633635] c0 148 (asr_engine_test) Call trace:
10 :30 :45 [ 6.634217] c0 148 (asr_engine_test) [] dump_backtrace+0x0/0x27c
10 :30 :46 [ 6.635154] c0 148 (asr_engine_test) [] show_stack+0x20/0x28
10 :30 :46 [ 6.636050] c0 148 (asr_engine_test) [] dump_stack+0x94/0xb4
10 :30 :46 [ 6.636947] c0 148 (asr_engine_test) [] __schedule_bug+0x58/0x68
10 :30 :46 [ 6.637885] c0 148 (asr_engine_test) [] __schedule+0x5b4/0x728
10 :30 :46 [ 6.638798] c0 148 (asr_engine_test) [] schedule+0x40/0xa4
10 :30 :46 [ 6.639670] c0 148 (asr_engine_test) [] schedule_timeout+0x208/0x288
10 :30 :46 [ 6.640647] c0 148 (asr_engine_test) [] wait_for_common+0xbc/0x164
10 :30 :46 [ 6.641603] c0 148 (asr_engine_test) [] wait_for_completion+0x28/0x34
10 :30 :46 [ 6.642594] c0 148 (asr_engine_test) [] ce_aes_process_nblocks.isra.0+0x7a0/0xc18
10 :30 :46 [ 6.643711] c0 148 (asr_engine_test) [] ce_aes_process_nblocks_noalign.isra.1+0x1f8/0x200
10 :30 :46 [ 6.644913] c0 148 (asr_engine_test) [] asr_aes_ecb_encrypt+0x84/0xac
10 :30 :46 [ 6.645900] c0 148 (asr_engine_test) [] ecb_encrypt_1+0xa0/0xe8
10 :30 :46 [ 6.646827] c0 148 (asr_engine_test) [] skcipher_encrypt_blkcipher+0x5c/0x7c
10 :30 :46 [ 6.647894] c0 148 (asr_engine_test) [] skcipher_recvmsg_sync.isra.14+0x124/0x1e0
10 :30 :46 [ 6.649011] c0 148 (asr_engine_test) [] skcipher_recvmsg+0x5c/0x68
10 :30 :46 [ 6.649969] c0 148 (asr_engine_test) [] sock_recvmsg+0x5c/0x6c
10 :30 :46 [ 6.650882] c0 148 (asr_engine_test) [] ___sys_recvmsg+0xc8/0x1ec
10 :30 :46 [ 6.651828] c0 148 (asr_engine_test) [] SyS_recvmsg+0xbc/0xec
10 :30 :46 [ 6.652731] c0 148 (asr_engine_test) [] el0_svc_naked+0x24/0x28
10 :30 :46 [ 6.653778] c0 148 (asr_engine_test) ------------[ cut here ]------------
10 :30 :46 [ 6.654617] c0 148 (asr_engine_test) WARNING: at /home/hehezhou/workspace/my_work/code/android9.0/STPU/stpu/kernel/linux/crypto/blkcipher.c:352
10 :30 :46 [ 6.656200] Modules linked in:
10 :30 :46 [ 6.656580] c0 148 (asr_engine_test)
10 :30 :46 [ 6.657035] c0 148 (asr_engine_test) CPU: 0 PID: 148 Comm: asr_engine_test Tainted: G W 4.4.145+ #107
10 :30 :46 [ 6.658309] c0 148 (asr_engine_test) Hardware name: ASR AQUILAC FPGA (DT)
10 :30 :46 [ 6.659147] c0 148 (asr_engine_test) task: ffffffc052202300 task.stack: ffffffc052210000
10 :30 :46 [ 6.660147] c0 148 (asr_engine_test) PC is at blkcipher_walk_first+0x9c/0x174
10 :30 :46 [ 6.661028] c0 148 (asr_engine_test) LR is at blkcipher_walk_virt+0x68/0x74
10 :30 :46 [ 6.661887] c0 148 (asr_engine_test) pc : [] lr : [] pstate: 00400045
10 :30 :46 [ 6.663065] c0 148 (asr_engine_test) sp : ffffffc052213a50

https://blog.csdn.net/longwang155069/article/details/52449138

本文地址:https://blog.csdn.net/weixin_42135087/article/details/109720859

《手机-anrdroid-嵌入式开发.doc》

下载本文的Word格式文档,以方便收藏与打印。