魅族内核团队

一个有内涵的技术分享平台

人脸解锁带来的安卓系统崩溃之谜!

问题背景用户反馈开启人脸解锁后,偶现密码解锁、指纹解锁、人脸解锁均无法使用,系统卡死随后出现安卓重启。 问题分析SWT之初步释疑查看android SWT(Software Watchdog Timeout)日志,发现android.ui线程卡死。1Subject: Blocked in handler on ui thread (android.ui) 查看android.ui堆栈,可以看......

显示框架之app与SurfaceFlinger通信

显示框架之app与SurfaceFlinger通信SurfaceFlinger是android显示的核心进程,在整个显示框架中起到一个承上启下的作用,“承上”指的是与app进程间的通信,“启下”指的是与Composer进程的通信。Surfaceflinger本身不进行绘制,是app数据上屏的中枢通路,先来看下SurfaceFlinger在整个显示流程中的位置。 从显示流程图看可知,Surf......

Android Verified Boot 2.0

Android Verified Boot 2.0流程Android Verified Boot(AVB)的作用是校验各个镜像,确保各个镜像没有被篡改过的。如果镜像被篡改过,设备将会报启动异常。 概览: 设备上电最早启动pbl(primary bootloader),进行secboot(secure boot)工作,secboot主要工作是校验bootloader的合法性,校验没问题才启动......

Android Binder

1、binder原理纵观现有市面上所有讲binder的文章,都存在一个最大的问题:没有讲清楚binder对象是什么?不清楚binder对象是什么,那就不能理解handle是什么?不能理解什么时候是binder什么时候是handle,那就不能真正理解整个IPC的通讯过程。 我们首先回到binder的目的,就是IPC(Inter-Process Communication)进程间通讯。那么怎么样......

kernel 空间加载用户空间fw实现原理

随着手机外围器件的集成度和复杂度越来越高, 单纯的设置相关寄存器已经无法使得器件可以正常的工作. 在一般情况下,需要将一个特定的fw下载到器件中, 确保器件可以正常稳定的运行, 比如:camera ois,camera actuator, TP等等. 一般情况下, 有以下三种方案: 直接将fw data转化为特定的数组,编码在驱动代码中. 将fw data烧录到一个分区中,需要的时候从分区......

Android FBE

Android FBE1. FBE 简介 名称: FBE, File-Based Encryption,基于文件的加密 凭据加密 (CE) 存储空间:这是默认存储位置,只有在用户解锁设备后才可用。设备加密 (DE) 存储空间:在直接启动模式期间以及用户解锁设备后均可用。 开启 FBE 方式,在相关的 fstab 文件中添加相关的代码: 1/dev/block/bootdevice/by-n......

Linux Time

1、Linux时钟框架DroidPhoneo 上图是linux时钟框架一个经典的描述。本质上linux各种时钟架构和服务是基于硬件提供的两种timer而构建的。 1、定时Timer 这类timer每个cpu都有一个独立的,称为local timer。这类timer的中断一般都是PPI(Private Peripheral Interrupt)类型,即每个cpu都有独立一份中断。 与PPI对......

Device Tree 详解

1、DTS语法对于DeviceTree的来历和用处大部分人都已经非常了解了,DeviceTree发源于PowerPC架构,为了消除代码中冗余的各种device注册代码而产生的,现在已经成为了linux的通用机制。 DeviceTree的结构非常简单,由两种元素组成:Node(节点)、Property(属性)。下图是一个真实的简单的DeviceTree树形结构图。 Node节点。在DTS中......

TEE 软件交互流程概述

前言 本文建立在你已经对 TEE 技术的基础知识有一定了解的基础之上,如需了解,可以阅读本博客的文章《指纹 TEE》1。 本文将基于 OP-TEE2 开源 TEE 软件,介绍 TEE 软件中,REE 客户端访问 TEE 环境资源的具体调用流程。 为此,本文首先会介绍实现 REE 到 TEE 调用的各个基础组件组成以及各自功能,然后分析各个基础组件的交互流程时序,使读者对 TEE 软件的运行逻......

内存管理 —— ION

ION 是当前 Android 流行的内存分配管理机制,在多媒体部分中使用的最多,例如从 Camera 到 Display,从 Mediaserver 到 Surfaceflinger,都会利用 ION 进行内存分配管理。ION 的前任是 PMEM,关于 PMEM 我在 M030/M04X 项目中有接触过,后来由于 PMEM 的一些局限性,Google 推出了 ION 来取代 PMEM,当前......