自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

新程序圆

程序员世界

  • 博客(223)
  • 资源 (2)
  • 收藏
  • 关注

原创 Android架构深度解读-目录

Android架构深度解读-目录。Android架构深度解读-目录。Android架构深度解读-目录。

2024-08-19 19:50:52 207

原创 Vold原理介绍

一、Vold 概述Vold 是 Android 系统中的一个守护进程,专门用于管理与存储相关的热插拔事件。手机通过 USB 连接到 PC,以 MTP 或者照片传输模式进行插拔时,磁盘数据的挂载和卸载;设备开关机时,各存储分区的挂载和卸载过程;SD 卡插拔识别过程中,文件系统的挂载和卸载。在这些操作过程中,Vold 负责处理磁盘数据的安全加密(如 FDE/FBE),管理文件节点和目录的创建,以及文件系统的垃圾清理等任务。二、Vold 的架构。

2024-08-14 19:13:44 753

原创 Systrace 的原理、流程及定制

当用户在上层调用不同函数时,写入不同的调用信息,例如函数的进入和退出,那么 ftrace 就能跟踪记录函数的运行时间。内核态的事件信息则不统一,需要激活相应的事件节点,以便 ftrace 记录不同事件的 tracepoint。访问),解析生成的 trace.html 文件,将其中的原始 ftrace 数据按时间轴分类聚合,并以不同颜色的块显示在 HTML 页面上。接着,atrace 会读取 ftrace 的缓存,并生成只包含 ftrace 信息的。事件中输出新增的 trace 类别信息。

2024-08-14 19:09:20 522

原创 SELinux介绍

一、SELinux 概述1. SELinux 的起源SELinux(Security-Enhanced Linux)是由美国国家安全局(NSA)发起开发的,Secure Computing Corporation(SCC)和MITRE直接参与了其开发工作,此外还有许多研究机构(如犹他大学)共同参与。它是一种强制性安全审查机制,最初于2000年12月作为一款通用访问软件发布(采用GPL许可)。

2024-08-14 19:02:54 537

原创 Android VNDK/VSDK Snapshot编译框架

VNDK和VSDK的Snapshot是指按一定规则从当前system侧生成的一组预构建库,这些库将用于后续的vendor侧编译。上图展示了在首发项目和vendor freeze项目中的system和vendor搭配。由于Android大版本升级时,vendor是固定的,因此与之对应的部分也需要有匹配的版本。

2024-08-14 18:54:18 677

原创 Android R常见GC类型与问题案例

在Android系统中,APP的运行依赖于ART虚拟机(Android Runtime),这其中,ART的核心任务是为APP的Java代码提供执行环境,而编译、执行以及垃圾回收(GC)是ART的关键模块。GC机制让Java开发人员能够专注于业务逻辑,而无需担心内存泄漏问题。本文将简要介绍ART虚拟机中的Heap布局、常见的GC类型,以及一些与之相关的问题案例,希望能为大家在优化应用时提供一些启示。本文基于Android R(11)版本的代码和调试。

2024-08-14 18:47:12 641

原创 Android logd日志简介及典型案例分析

在程序开发中,日志记录是一项极为常见的操作,也是调试和验证代码的关键工具。在Android开发中,开发者通常通过Log或Slog等接口进行日志写入,再通过logcat命令读取日志信息。尽管日志的写入和读取机制在系统代码中得到了实现,但很多开发者可能并未深入了解其背后的具体流程。本文将详细讨论Android日志系统的读写过程,并分析常见的日志丢失场景及典型案例。Android日志系统的接口主要分为Java层、Native层和Kernel层。首先来看Java层的日志调用接口。日志级别从低到高依次为。

2024-08-14 17:59:03 487

原创 Android linux eBPF网络相关原理分析

随着Android版本的不断升级,自Android 9之后,内核版本普遍为4.X及更高的5.X版本,Linux的eBPF(扩展的Berkeley Packet Filter)在Android系统中的应用也越来越广泛。关于BPF和eBPF的概念,已有大量相关的文章进行介绍,建议先通过如“Android平台eBPF初探”等文章对eBPF的基础知识、框架和功能有一个初步了解。下面我们将重点探讨eBPF在网络相关部分的演变过程。

2024-08-14 17:50:19 634

原创 Android Input 子系统初探

在之前的内容中,我们提到了Input Device、Input Handler等名词,但还没有详细说明。本节将介绍Input子系统中的几个重要结构体,以便于后续的理解。

2024-08-14 17:40:46 1013

原创 Android ART dex2oat 浅析

Dex2oat(Dalvik Executable to Optimized Art File)是用于将DEX文件进行编译优化的工具。在Android设备中,该程序位于。

2024-08-14 17:34:39 757

原创 Android ANR问题总结

一、概述ANR(Application Not Responding),即应用无响应,是指当Android应用的主线程由于长时间阻塞而导致系统弹出“应用无响应”错误。如果应用处于前台,系统会弹出一个对话框,如图1所示。用户可以选择强行退出应用。图1:用户看到的ANR对话框二、ANR分类:输入事件(如按键或触屏)超过5秒未处理。:前台广播未在10秒内完成,后台广播则为60秒。:前台服务超过20秒未完成,后台服务超过200秒。:极少见的情况,发布操作未在10秒内完成。

2024-08-14 17:26:11 417

原创 Android中基于DWARF的stack unwind实现原理

DWARF是一种用于调试信息的标准格式,通常与编译器一起使用。它提供了一种高效的方法来生成、存储和访问程序的符号和调试信息,帮助开发人员在程序崩溃或其他错误情况下进行调试和分析。

2024-08-14 17:15:57 679

原创 Android系统安全技术---FBE密钥框架和技术详解

用户数据加密是确保移动设备安全的一项关键功能,它通过对称加密算法对Android设备上的所有用户数据进行编码,旨在防止未经授权的用户或应用程序访问这些数据。本篇文章是Android系统安全技术系列的第二部分,主要探讨基于文件的加密技术。首先,我们将介绍Android如何通过全盘加密(FDE)、文件加密(FBE)以及元数据加密(ME)来保护用户隐私数据。接下来,我们将深入讨论基于文件加密(FBE)的密钥管理,涵盖HAL、Linux内核、TEE和硬件层面。Android FBE的加密策略与mkdir。

2024-08-14 17:08:00 651

原创 Android图形显示流程简介

本文将简要分析从应用程序绘制一帧画面到该画面最终在屏幕上显示并被人眼看到的全过程。我们将探讨这个过程中涉及的各个流程,并将它们与 systrace 上的对应表现关联起来,以期让读者对 Android 系统下的图形显示流程有一个整体的理解。上图展示了 Android 的图形显示系统框架。首先,应用通过 ViewRoot 的函数发起绘制任务,并通过 HWUI 调用 OpenGL 接口将绘制数据传递给 GPU 进行处理。

2024-08-14 16:40:46 968

原创 Android 设备树的匹配流程

在 Kernel 5.4 及以上版本,由于 GKI(通用内核映像)的要求,dtb.img 不再打包到 boot.img 中,而是放入 vendor_boot.img 中,新增 vendor_boot 分区,且需要将。在 Android 8 之前,平台相关的 DTS 文件和 ODM/OEM 相关的 DTS 文件都放在同一个 DTS 文件中。如果需要支持多种硬件,会编译多个 *.dtb 文件,并在 bootloader 中根据硬件识别来加载对应的 dtb。:常见的 *.dts 和 *.dtsi 文件。

2024-08-14 16:31:39 523

原创 Android 热缓解框架解析

通过 Android 10 引入的热管理服务框架以及 Thermal HAL 2.0 版本,上层应用可以主动获取系统硬件设备的温度数据,或者通过 PowerManager 类中的注册回调函数接收高温通知。当设备过热时,上层应用可以调整执行策略,例如在系统温度较高时,jobscheduler 作业会受到限制,从而降低系统负载,有效地缓解设备发热问题。

2024-08-14 15:59:59 137

原创 Android平台Fastboot介绍

fastboot协议是一种通过USB连接与bootloader进行通讯的机制。其设计简单易实现,适用于多个平台,如Linux、Windows和macOS等。与recovery模式相比,fastboot是一种更底层的方式,专为通过USB更新Android系统文件系统而设计。Android开发工具包中提供了fastboot.exe工具,用于与Android设备交互,完成分区镜像烧录、分区擦除、设备重启和获取设备状态信息等操作。

2024-08-14 15:34:52 101

原创 android平台eBPF初探

eBPF 是 extended BPF 的缩写,而 BPF 则是 Berkeley Packet Filter 的简称。熟悉 Linux 网络的朋友可能对 BPF 有所了解,它通过特定语法规则,使用基于寄存器的虚拟机来定义数据包过滤行为。最常见的应用就是通过过滤实现流量统计,像 tcpdump 工具就是基于 BPF 实现的。eBPF 在此基础上进行了扩展,以实现更广泛的功能。允许使用 C 语言编写代码,并通过 LLVM 编译成 eBPF 字节码。

2024-08-14 15:29:16 156

原创 Android内存异常机制(用户空间)_NE

tombstone 文件内容依次包括:fingerprint、版本信息、ABI 信息、时间戳、主线程的详细信息(包括信号、tid、进程名、寄存器信息、backtrace、stack 以及 memory、maps 信息)。方法注册的信号包括:SIGABRT、SIGBUS、SIGFPE、SIGILL、SIGSEGV、SIGSTKFLT、SIGSYS、SIGTRAP、DEBUGGER_SIGNAL,共计 9 个信号。变量最终保存了所有需要的信息。信息,得到每一层函数栈的 map 信息、函数名称,并将其封装为。

2024-08-14 15:14:03 88

原创 Android蓝牙协议栈漏洞剖析

蓝牙协议相比其他通信协议如Wi-Fi(802.11)和传统TCP/IP协议要复杂得多。目前的蓝牙核心规范(5.3版本)已高达3085页。这种复杂性使得对蓝牙协议的实现进行安全测试和审计变得更加困难,容易导致协议在实现和使用过程中出现安全漏洞。然而,另一方面,蓝牙协议的复杂性也提高了研究人员和攻击者进行漏洞挖掘的技术门槛,增加了攻克难点的挑战性。图1 蓝牙核心规范封面图2 蓝牙协议栈架构图如图2所示,蓝牙协议栈主要由两部分组成:Host和Controller。

2024-08-14 15:05:16 157

原创 Android分区挂载原理介绍(上)

一、Device Mapper基础原理1.1 DM的工作机制1.2 动态卷(逻辑分区)功能详解(dm-linear)1.3 完整性校验功能概述(dm-verity)1.4 元数据加密功能(default-key)1.5 快照功能概述(snapshot, snapshot-origin, dm-snapshot-merge, bow)二、Vold概述2.1 Vold架构概览2.2 加解密Fstab功能介绍(encryptFstab)2.3 分区挂载功能介绍(mountFstab)

2024-08-14 14:49:50 321

原创 # Android动态传感器的介绍及其应用

一、Android 传感器概述在Android设备中,内置了各种传感器,用于检测运动、屏幕方向以及周围环境的条件。这些传感器能够提供非常精确的原始数据,以监测设备的三维移动或位置,或观察设备周围的环境变化。例如,游戏可以利用重力传感器来推测复杂的用户手势和动作,如倾斜、摇晃、旋转或挥手动作;天气应用可以通过温度传感器和湿度传感器来计算和报告露点;旅行应用则可以使用地磁场传感器和加速度计来报告指南针方向。运动传感器这些传感器用于测量设备在三个轴向上的加速度和旋转力。

2024-08-14 14:41:37 75

原创 Android电源键亮灭屏流程

当InputReader线程将事件入队后,InputDispatch线程在looper中处理事件,会将事件取出并调用。在InputReader线程的循环中,通过EventHub的。,让策略类在事件入队前进行处理。函数获取按键事件,然后传递给。函数会调用listener的。对象,因此按键事件被传递给。对事件进行处理时,首先调用。,这个listener是。进行事件的派发处理。

2024-08-14 14:35:15 894 1

原创 Android电源管理介绍

一、电源管理基础知识!1.1 电源管理的几种状态在Android内核源码中,电源状态被分为三种,定义在文件中:相关的宏定义在1.2 电源管理状态介绍:设备处于正常工作状态。:设备进入省电状态,但仍可接收某些事件。:设备进入睡眠状态,将系统上下文保存至内存后挂起系统,仅特定外部中断可以唤醒设备。:设备进入空闲状态,冻结用户空间并将外围设备调至低耗电模式,强制CPU进入idle。1.3 Idle状态Android中的Idle状态分为两类:CPU Idle和Device Idle。CPU Idle。

2024-08-13 21:45:38 158

原创 安卓指纹启动流程

Service.cpp是HAL层启动的入口文件。通过BiometricsFingerprint::getInstance()实例化bio服务,不同厂商可能实现不同的BiometricsFingerprint类。重点介绍getInstance()实例化函数,它是BiometricsFingerprint类的方法,不同厂商可能不同。指纹识别启动分为Framework层的启动和HAL层的启动,这两个过程独立进行,启动顺序没有严格要求。Framework层启动后会不断尝试与HAL层连接,直到成功。

2024-08-13 21:39:27 79

原创 安卓系统应用启动流程分析

本文简要介绍了安卓平台上应用启动的流程,帮助读者理清应用启动的基本脉络,对整个启动过程有一个初步的理解。

2024-08-13 21:23:36 167

原创 万字详解:汽车发动机电子控制单元(ECU)

发动机运转时,ECU根据发动机的转速和负荷信号,计算相应工况下的点火提前角,并根据发动机的水温、进气温度、爆震信号等修正点火提前角,再根据曲轴位置传感器信号判别曲轴转速、位置及几缸处于压缩行程上止点,然后控制点火线圈电火。⑷、反馈控制:发动机在怠速工况下,水温达到正常温度且发动机负荷不变时, ECU根据发动机的实际转速与预先存储的目标转速相比较,如果发动机的实际转速低于目标转速,ECU会控制怠速控制阀将阀门开大,反之,如果发动机的实际转速高于目标转速,ECU会控制怠速控制阀将阀门关小。

2024-08-03 00:59:22 11533

原创 程序员的囧事:那些困扰我们的“蠢”Bug

在编程的世界里,每个程序员都曾经遇到过各种各样的挑战,其中之一就是那些看似复杂却后来却让人感到“蠢”的Bug。你是否有过这种经历?在写代码的时候,遇到了一些bug,无论怎么检查都无法找到问题所在,然后几天后,突然发现困扰自己的问题原来如此简单。本文将分享一些程序员的经典困扰,这些经历既令人苦笑,又教会了我们在编程的路上不断成长。

2023-10-20 10:19:46 281

原创 Armv8/Armv9 Cache知识大纲分享--思维导图

trustzone视频、tee视频、ATF视频、secureboot视频、安全启动视频、selinux视频,cache视频、mmu视频,armv8视频、armv9视频、FF-A视频、密码学视频、RME/CCA视频、学习资料下载、免费学习资料、免费。周贺贺,baron,代码改变世界ctw,Arm精选, 资深安全架构专家,十年手机安全/SOC底层安全开发经验。学习cache就要学习最全的、最新的。关键词:cache学习、mmu学习、cache资料、mmu资料、arm资料、armv8资料、armv9资料、

2023-10-05 08:11:31 204

原创 Arm Cache学习资料大汇总

关键词:cache学习、mmu学习、cache资料、mmu资料、arm资料、armv8资料、armv9资料、trustzone视频、tee视频、ATF视频、secureboot视频、安全启动视频、selinux视频,cache视频、mmu视频,armv8视频、armv9视频、FF-A视频、密码学视频、RME/CCA视频、学习资料下载、免费学习资料、免费周贺贺,baron,代码改变世界ctw,Arm精选, 资深安全架构专家,十年手机安全/SOC底层安全开发经验。

2023-10-05 08:09:58 151

原创 Secureboot从入门到精通

Secureboot也是一个高门槛的知识点,涉及到密码学基础知识、ARM硬件基础知识、SOC硬件基础知识(如SOC内集成的efuse、crypto engine、RPMB等)、BootRom的实现、emmc/ufs/nand/nor等知识、各种规范和标准、ATF(TF-A)等软件、安全业务的设计模式…关键词:trustzone视频、tee视频、ATF视频、secureboot视频、安全启动视频、selinux视频,cache视频、mmu视频,armv8视频、armv9视频。3、汽车电子、手机、服务器等。

2023-10-05 08:08:03 168

原创 Cache系列直播,这次真的来了!

> - L1、L2、L3 cache的替换策略是怎样的?> - 什么类型的内存永远不会进L3 cache?> - L3 cache一般都是多大?> - L3 cache的组织形式一般是怎样的?> - 什么是cache partitioning?> - DSU、DSU-110、DSU-120有什么区别?> - 什么MPAM? 有什么作用?> - 什么是Cache stashing?> - 什么是Cache slices? 有什么好处?> - L1 System memory和L1 Cache

2023-10-05 08:06:39 186

原创 08-《Linux内核设计与实现》读书笔记(八)- 中断下半部的处理

下面对实现中断下半部工作的3种机制进行总结,便于在实际使用中决定使用哪种机制下半部机制上下文复杂度执行性能顺序执行保障软中断 中断 高(需要自己确保软中断的执行顺序及锁机制) 好(全部自己实现,便于调优) 没有tasklet 中断 中(提供了简单的接口来使用软中断) 中 同类型不能同时执行工作队列 进程 低(在进程上下文中运行,与写用户程序差不多) 差 没有(和进程上下文一样被调度)

2023-09-18 22:19:54 88

原创 07-《Linux内核设计与实现》读书笔记(七)- 中断处理

为了提高CPU和外围硬件(硬盘,键盘,鼠标等等)之间协同工作的性能,引入了中断的机制。没有中断的话,CPU和外围设备之间协同工作可能只有轮询这个方法:CPU定期检查硬件状态,需要处理时就处理,否则就跳过。当硬件忙碌的时候,CPU很可能会做许多无用功(每次轮询都是跳过不处理)。中断机制是硬件在需要的时候向CPU发出信号,CPU暂时停止正在进行的工作,来处理硬件请求的一种机制。中断处理对处理时间的要求很高,如果一个中断要花费较长时间,那么中断处理一般分为2部分。

2023-09-18 22:12:36 65

原创 06-《Linux内核设计与实现》读书笔记(六)- 内核数据结构

内核中关于队列定义的头文件位于: include/linux/kfifo.h头文件中定义的函数的实现位于:kernel/kfifo.c内核中关于映射定义的头文件位于: include/linux/idr.h头文件中定义的函数的实现位于:lib/idr.c内核中关于红黑树定义的头文件位于: include/linux/rbtree.h头文件中定义的函数的实现位于:lib/rbtree.c。

2023-09-18 22:07:58 82

原创 05-《Linux内核设计与实现》读书笔记(五)- 系统调用

简单来说,系统调用就是用户程序和硬件设备之间的桥梁。用户程序在需要的时候,通过系统调用来使用硬件设备。系统调用的存在,有以下重要的意义:1)用户程序通过系统调用来使用硬件,而不用关心具体的硬件设备,这样大大简化了用户程序的开发。比如:用户程序通过write()系统调用就可以将数据写入文件,而不必关心文件是在磁盘上还是软盘上,或者其他存储上。2)系统调用使得用户程序有更好的可移植性。只要操作系统提供的系统调用接口相同,用户程序就可在不用修改的情况下,从一个系统迁移到另一个操作系统。

2023-09-18 22:01:03 62

原创 ARM9、Armv9、A9有什么区别?

3、Armv9,是arm最新的架构,是2021推出出的。从2021年之后,arm推出的所有移动领域的core,都是基于armv9架构,看样子是不再会有arm8/armv7架构了。2、A9, 其实就是cortex-A9,它是Armv7架构下的一个微架构,或者说是一个具体的core IP…的产品,属于armv4架构了。著名的S3C2440开发板,就是使用的二十三年以前的ARM920T Core。现在网络上依然保持着大量的讲述arm9的文章或视频,也请各位千万不要被带偏了。1、Arm9是ARM。

2023-09-16 18:40:03 1909

原创 04-《Linux内核设计与实现》读书笔记(四)- 进程的调度

现在的操作系统都是多任务的,为了能让更多的任务能同时在系统上更好的运行,需要一个管理程序来管理计算机上同时运行的各个任务(也就是进程)。决定哪些进程运行,哪些进程等待决定每个进程运行多长时间此外,为了获得更好的用户体验,运行中的进程还可以立即被其他更紧急的进程打断。总之,调度是一个平衡的过程。一方面,它要保证各个运行的进程能够最大限度的使用CPU(即尽量少的切换进程,进程切换过多,CPU的时间会浪费在切换上);另一方面,保证各个进程能公平的使用CPU(即防止一个进程长时间独占CPU的情况)。

2023-09-14 21:50:22 73

原创 03-《Linux内核设计与实现》读书笔记(三)- Linux的进程

进程是所有操作系统的核心概念,同样在linux上也不例外。

2023-09-14 21:43:52 69

原创 02-《Linux内核设计与实现》读书笔记(二)- 内核开发的准备

在尝试内核开发之前,需要对内核有个整体的了解。

2023-09-14 21:39:28 52

VMware tools安装说明书

VMware tools安装说明书

2013-12-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除