自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 Binder机制详解与编程实例

本文详细介绍了Android系统中的Binder进程间通信机制,包含服务端和客户端的完整实现代码。Binder作为Android核心IPC机制,具有高性能、安全性和面向对象特性。文章首先阐述了Binder的基本架构和组件,包括Binder驱动、Service Manager等核心元素。随后提供了两个编程实例:第一个展示了Binder服务端的完整实现框架,包含接口定义、服务实现和注册流程;第二个实例演示了Binder客户端的代理类实现,说明如何进行远程方法调用。这些代码示例覆盖了Binder通信的关键环节,如

2025-11-24 09:45:03 507

原创 进程学习(子进程与父进程)

进程创建与父子进程关系摘要 进程是程序执行的实例,作为系统资源分配的基本单位。在Unix/Linux系统中,fork()系统调用用于创建新进程,生成父进程的副本作为子进程。关键特性包括: 父子进程共享代码段但拥有独立的数据空间副本 fork()返回值区分父子进程:父进程获得子进程PID,子进程获得0 父子进程执行顺序由调度器决定 典型应用模式:父进程通过wait()等待子进程结束 示例代码展示了基本的fork()使用、多子进程管理、fork-exec组合模式以及简单的进程间通信实现。Windows系统使用C

2025-11-24 09:29:09 230

原创 Android Binder C/C++ 层详解与实践

本文详细介绍了Android Binder在C/C++层的实现架构与实践。内容覆盖Binder驱动层架构(用户空间到内核空间的完整调用链)和一个完整的Binder服务端实现示例。代码展示了如何定义Binder接口(IBinderDemoService)、实现服务逻辑(BinderDemoService类)、处理事务(onTransact方法)以及启动和注册服务。实现示例包含了add、greet和getVersion三个典型方法,演示了参数传递、结果返回等关键操作,并配有详细的日志记录,方便开发者理解Bind

2025-11-20 09:57:23 605

原创 Android Binder 详解与实践指南

本文介绍了Android Binder进程间通信(IPC)机制的基础概念和实现方法。Binder是一种高性能、安全的IPC机制,基于C/S架构实现。文章详细展示了如何构建Binder服务端,包括定义AIDL接口(ISimpleService.aidl)和数据模型(DataModel.java),以及实现SimpleBinderService服务类。同时提供了客户端(MainActivity.java)的连接实现,通过ServiceConnection与远程服务交互。这些代码示例展示了Binder的基本使用方

2025-11-20 09:45:40 1235

原创 linux 进程与线程(实例详解)

本文介绍了进程与线程的基本概念及C语言实现方法。进程是独立的执行单元,拥有独立地址空间,而线程是进程内的轻量级执行单元,共享进程资源。文中提供了C语言实现示例:(1)进程创建(fork)演示父子进程执行流程;(2)进程间通信(管道)展示数据传输;(3)基本线程创建展示多线程并发执行;(4)线程数据竞争演示共享变量访问问题。这些实例通过代码运行结果直观展示了进程/线程的运行机制和通信方式,帮助理解操作系统中并发编程的核心概念。

2025-11-20 09:37:03 403

原创 谷歌XTS测试介绍

谷歌XTS测试是确保Android设备兼容性、安全性和用户体验的关键认证体系,主要包括CTS、GTS、VTS、STS和CTS Verifier五大核心测试套件。该测试要求设备制造商完成环境准备、测试执行和结果分析等步骤,通过认证后才能在设备预装GMS服务并使用Android商标。XTS测试不仅为开发者提供一致的开发环境,也为用户带来更稳定的使用体验,是Android生态质量保障的重要环节。

2025-11-19 20:15:48 439

原创 keystore问题梳理

摘要:本文分析了系统服务中出现的NullPointerException问题,该问题发生在调用IKeystoreOperation.asBinder()时对象为null。日志显示keystore2服务成功创建操作但返回null值,可能是Binder资源耗尽或传输异常导致。建议检查Binder状态(/proc/binder/stats)、内存使用情况,优化密钥操作频率,增加Binder内存配置,并添加资源监控。临时措施可重启相关服务,长期方案需解决潜在资源泄漏问题。

2025-11-19 09:34:28 829

原创 Linux系统压缩解压指令详解与实例

本文介绍了Linux系统中常用的压缩工具及其基本用法。主要内容包括单文件压缩工具(gzip、bzip2、xz)、归档工具(tar)以及与压缩工具的组合使用,还包括跨平台工具(zip)和高压缩率工具(7z、rar)。 单文件压缩工具部分演示了如何压缩/解压文件、保留原文件、设置最大压缩率以及查看压缩文件内容。归档工具tar展示了如何创建/解压归档文件,并与gzip、bzip2、xz等压缩工具配合使用。zip和7z部分介绍了跨平台压缩、分卷压缩、加密压缩等高级功能。 每种工具都提供了基本命令示例,包括压缩、解压

2025-11-05 21:30:03 402

原创 理解widevine密钥写入

Widevine密钥写入流程涉及Google DRM方案的核心概念与MTK平台实现。Widevine通过L1-L3三级安全方案保护媒体内容,其中L1密钥存储在TEE安全区域。MTK平台写入流程包括:Google提供Keybox→OEM转换格式→通过Bootloader或系统工具写入TEE。关键环节包含密钥完整性校验、TEE安全存储及硬件隔离保护。调试时可分析MediaDrm、WVDrmEngine等日志标签,成功时显示"Keybox stored successfully",失败可能因格

2025-11-05 21:04:54 899

原创 MTK平台详解`ro.boot.serialno` 的实现流程 adb devices输出序列号

本文详细解析了Android系统中ro.boot.serialno属性的全链路传递流程。从Bootloader阶段获取序列号开始,通过内核命令行参数传递给Android系统,并由Init进程进行关键属性转换,最终映射为ro.serialno系统属性。文章提供了各阶段的代码路径、关键函数调用和日志追踪方法,特别是针对MTK平台的专用调试技巧,包括工程模式使用方法、日志抓取路径以及常见问题的解决方案。该解析为开发者理解设备序列号传递机制和排查相关问题提供了全面的技术参考。

2025-11-04 09:31:28 1405

原创 adb devices`ro.boot.serialno` 的实现

摘要: ro.boot.serialno传递链分析 Android设备的序列号传递过程分为四个关键阶段: Bootloader阶段:U-Boot等从存储位置(如IDBLOCK_SN)或环境变量获取序列号,通过androidboot.serialno参数传递给内核。 Kernel阶段:序列号通过内核命令行(/proc/cmdline)传递,可通过cat /proc/cmdline验证。 Android Init进程:init解析内核参数,将androidboot.serialno映射为ro.boot.seri

2025-11-04 09:27:49 644

原创 MTK平台详解`adb devices`输出的序列号组成

ADB序列号是设备调试时用于识别的标识符,其组成取决于Android系统属性和连接方式。通过USB连接时,序列号通常来自系统属性如ro.serialno;网络连接则以IP:端口格式显示。在MTK平台上,可能受芯片信息影响,但其本质仍是系统级标识,而非硬件绑定。序列号在刷机或重置后可能改变,与芯片ID不同,主要用于开发调试。可通过adb shell getprop等命令查看相关属性。

2025-11-04 09:20:38 483

原创 ADB指令大全:从入门到精通,玩转Android调试桥(永久免费查看,交个朋友)

ADB指令大全:Android调试桥实用指南 ADB(Android Debug Bridge)是连接电脑与Android设备的命令行工具,支持应用管理、文件操作、日志查看等功能。本文分三部分: 入门篇:环境搭建(安装Platform-Tools或包管理器)、开启USB调试、基础连接命令(adb devices)。 进阶篇:应用安装/卸载(adb install/uninstall)、文件传输(push/pull)、日志分析(logcat)、系统信息查询(dumpsys)。 精通篇:高级操作如截图录屏(sc

2025-10-27 20:12:14 583

原创 1024 之名,写我与代码的「双向奔赴」

摘要:本文讲述了一名BSP工程师四年成长历程,从初入职场的迷茫到与硬件代码建立"双向奔赴"的深度默契。文章通过具体代码案例,展现了从简单功能实现到系统级优化的蜕变过程,揭示了嵌入式开发的四个维度:理解、协作、成长和创造。作者以1024程序员节为契,分享了从外包到上市公司的技术视野提升,以及对底层开发工作的真挚热爱,体现出工程师与硬件代码之间独特的"共舞"关系。

2025-10-23 10:37:47 274

原创 Linux基础指令大全:用法实例与输出详解,万字笔记带你精通linux

Linux基础指令摘要 本文整理了Linux常用命令及其用法,分为六大类:文件目录操作、文件查看编辑、权限管理、系统管理、网络相关和管道重定向。详细介绍了ls、cd、mkdir、rm等基础命令,包括多种参数组合和实际应用场景,每个命令都附有用法示例和输出说明。特别对文件权限、目录操作、进程管理等核心功能进行了重点讲解,适合Linux初学者作为日常参考手册使用。

2025-10-23 10:32:46 622

原创 Linux基础指令大全(快速上手)

本文是一份Linux基础指令大全,涵盖文件操作、查看编辑、权限管理、系统监控、网络工具等常用命令。文件操作类包括ls、cd、mkdir等;查看编辑类有cat、vim等;权限管理涉及chmod、sudo等;系统管理包含ps、top等工具;网络相关指令如ping、ssh等。还介绍了管道|和重定向>等高效用法,帮助用户快速掌握Linux命令行基础操作。

2025-10-23 10:27:25 567

原创 安卓手机延长解锁

安卓系统延长解锁机制(如贴身解锁)通过检测可信环境动态管理锁屏策略。开启时需要验证密码,系统会注册传感器监测设备运动模式;关闭时立即停止监测并清除数据。关键日志包括信任代理启用/禁用、传感器监听状态变化等。该功能虽提升便利性,但可能降低安全性,建议高安全需求场景下关闭。不同厂商实现可能略有差异,MTK平台可能包含特有传感器相关日志。

2025-10-22 10:26:40 469

原创 MTK平台:锁屏解锁流程和贴身解锁机制

锁屏解锁流程涉及系统多层级组件协作,包括电源管理、锁屏服务、生物识别等模块。典型流程为:电源键触发PowerManagerService亮屏→KeyguardService显示锁屏界面→用户通过生物特征/密码认证→TrustManager更新信任状态→KeyguardViewMediator完成解锁。MTK平台特有传感器集成和电源优化日志可辅助问题定位。贴身解锁功能则通过加速度计等传感器监测设备状态,由OnBodyDetector学习移动模式并在匹配时授予临时信任状态,超时或模式不匹配时自动锁定。调试时可启

2025-10-22 10:03:48 830

原创 C语言结构体详解:从入门到精通

结构体定义:使用struct关键字,可配合typedef成员访问:使用点运算符(.)或箭头运算符(->)内存布局:注意内存对齐对大小的影响嵌套结构:结构体中可以包含其他结构体位域:节省内存的特殊用法函数参数:可传递结构体值或指针。

2025-10-21 10:06:09 309

原创 C语言字符串详解:从入门到精通

C语言字符串处理指南摘要: 本文全面介绍了C语言中的字符串处理,包含以下核心内容: 字符串本质是'\0'结尾的字符数组,详述了三种初始化方式及内存分配差异 输入输出方法对比:scanf/fgets的区别及缓冲区处理技巧 字符串操作函数集:strlen/strcpy/strcat/strcmp及其安全版本strncpy等 字符串搜索(strchr/strstr)和分割(strtok)的实用技巧 字符串与数值转换:atoi/strtol和sprintf/snprintf的安全用法 文中通过20+代码示例演示了各

2025-10-21 10:01:12 451

原创 C语言强制类型转换详解:从入门到精通

基本转换:整型-浮点型转换注意精度丢失指针转换:可以改变数据的解释方式,但需要小心对齐和类型安全结构体转换:可用于内存映射,但依赖内存布局函数指针转换:需要匹配调用约定。

2025-10-21 09:55:06 768

原创 C语言枚举(enum)详解:(万字实例详解,从入门到精通)

C语言枚举(enum)详解摘要 枚举(enum)是C语言中一种用户自定义数据类型,用于定义一组命名的整数常量,提升代码可读性和可维护性。本文从基本概念到高级应用全面介绍了枚举的使用方法。 主要内容包括: 枚举的三种声明方式:类型声明、同时定义变量和匿名枚举 使用typedef简化枚举类型名 枚举作为函数参数和返回值的实际应用 枚举在结构体中的典型用法 枚举与整型的转换规则 在switch语句中使用枚举的优势 枚举与宏定义的比较 通过汽车状态监控等实用示例,展示了枚举如何使代码更清晰、更安全。枚举特别适合表示

2025-10-21 09:50:38 418

原创 C语言作用域规则详解:(万字笔记,从入门到精通)

这篇万字笔记全面解析了C语言的作用域规则,涵盖五种主要作用域类型: 局部作用域(函数内部变量) 全局作用域(文件内可见变量) 块作用域({}内定义的变量) 函数作用域(goto标签) 文件作用域(static修饰的全局变量) 文章通过大量代码示例详细演示了各作用域的特点,包括变量的可见性、生命周期、作用域嵌套规则以及常见应用场景,帮助开发者深入理解C语言的变量作用域机制,避免常见的变量遮蔽和命名冲突问题。

2025-10-21 09:41:43 537

原创 C语言-输入输出:(万字详解,从入门到精通)

本文摘要介绍了C语言输入输出的核心概念与函数使用。主要内容包括标准I/O流(stdin/stdout/stderr)、printf格式化输出、puts/putchar字符输出、scanf输入函数等基础内容,以及字符串、文件等高级I/O操作技巧。通过代码示例详细演示了格式控制、转义字符、混合类型输入输出等实用技术,为C语言I/O编程提供全面指导。

2025-10-19 14:22:23 345

原创 C语言-函数指针与回调函数:(万字详解,代码示例输出,从入门到精通)

本文详解了C语言函数指针与回调函数的核心概念与应用。首先介绍了函数指针基础,包括函数指针的声明、赋值与调用方式。随后展示了如何使用typedef简化函数指针类型定义,以及如何创建和操作函数指针数组。重点讲解了回调函数机制,包括其工作原理和实际应用场景,如排序算法、事件处理等。最后探讨了高级回调模式和在项目中应用函数指针实现多态的设计方法。通过多个代码示例演示了从基础到高级的函数指针技术,为C语言开发者提供了完整的函数指针与回调函数学习路径。

2025-10-19 14:12:38 418

原创 C语言-内存管理详解:(万字笔记,从入门到精通)

C语言内存管理摘要 本文全面介绍了C语言内存管理的核心概念和技术要点: 内存布局:详细解析了C程序的内存结构,包括栈、堆、数据段和代码段,并通过示例展示了不同变量的内存地址分布。 静态分配:讲解了栈内存中的自动变量和静态/全局变量的特点,演示了静态变量的持久性特性。 动态分配:重点介绍了malloc、calloc、realloc和free等动态内存管理函数的使用方法和注意事项。 常见问题:分析了内存泄漏、野指针、越界访问等典型内存错误,并提供了调试技巧。 高级技巧:探讨了内存池、自定义分配器等优化策略,提升

2025-10-19 13:51:39 333

原创 C语言-指针详解(万字笔记,代码实例加输出,从入门到精通)

本文全面介绍了C语言指针的核心概念与应用,主要内容包括: 指针基础:指针是存储变量内存地址的特殊变量,通过&取地址和*解引用运算符操作 指针声明与初始化:演示了不同类型指针的声明方式,强调避免野指针的重要性 指针运算:包括指针算术运算和指针相减计算元素个数的实用技巧 指针与数组:数组名本质是指向首元素的指针,展示了通过指针访问数组元素的多种方式 文中通过大量代码示例生动演示了指针操作,包括修改指针指向的值、指针遍历数组等实用场景,帮助读者深入理解指针这一C语言核心概念。

2025-10-19 13:29:52 1221 2

原创 C语言-数组详解(从入门到精通的优质文档带代码示例)

本文全面介绍了C语言数组的核心概念和应用,包含1500多字的技术内容。以下是精简摘要(≤150字): C语言数组详解:从一维到多维数组的应用指南。文章系统讲解了数组声明、初始化、遍历方法,重点剖析了数组边界检查、内存计算等关键点。详细展示了二维和三维数组的实际应用,并深入解析字符数组与字符串操作的区别与联系。此外,还涵盖了数组作为函数参数的传递方式、数组与指针的紧密关系,以及动态内存分配创建数组的高级技巧。最后通过实际案例演示了数组查找、排序等常见算法实现,为C语言开发者提供全面的数组知识体系。

2025-10-16 10:37:51 542

原创 widevine L1 与 widevine L3

摘要:Widevine是谷歌推出的主流数字版权管理(DRM)方案,被Netflix等流媒体平台广泛采用。其L1级通过将DRM密钥预置到TEE安全环境,先传输加密设备密钥和内容密钥再传输加密视频,安全性较高;而L3级密钥通过网络动态传输,存在被截获破解的风险。两种方案在密钥存储方式和传输流程上存在差异,导致安全等级不同,L1可有效防止视频内容被非法破解。

2025-08-11 11:00:26 530

原创 DRM - 加密视频那些事

摘要:数字版权管理(DRM)通过加密技术保护数字内容(如视频、音乐)的版权。主流DRM系统包括Google的Widevine(支持安卓/Web)、微软的PlayReady(主导Windows/Xbox)和苹果的FairPlay(仅限苹果设备)。它们基于通用加密(CENC)标准,实现多平台兼容。大型流媒体(如Netflix)通常同时部署这三种DRM以确保广泛覆盖。其他系统如Marlin市场份额较小,主要用于特定场景。当前消费级流媒体的DRM市场主要由Widevine、PlayReady和FairPlay主导。

2025-08-11 10:57:18 1044

原创 计算机存储单位详解:从比特到尧字节

计算机存储单位体系解析:从比特到YB的多级换算 本文系统梳理了计算机存储单位体系,涵盖基础单位和多级换算标准。核心内容包括:1)基础单位比特(bit)和字节(Byte)的定义与换算关系;2)二进制(1024进制)和十进制(1000进制)两种换算体系的差异;3)从KB到YB的9级存储单位换算表;4)实际应用场景中的容量示例;5)单位转换的数学公式和C语言实现代码。特别解释了硬盘标称容量与实际显示差异的原因,并展望了DNA存储等新型存储技术的发展趋势。全文以技术文档形式呈现,包含代码示例和可视化换算方法,为理解

2025-06-15 23:55:57 2898

原创 C语言-入门:(两万字示例加输出,从入门到精通)

《从HelloWorld开始:C语言入门指南》摘要 本文系统性地介绍了C语言的核心知识点,从基础语法到进阶应用。首先通过"HelloWorld"程序展示基本结构,然后详细讲解变量、常量、数据类型等基础概念。重点剖析了控制流程(条件/循环语句)、函数(定义/调用/递归)、数组、指针和结构体等核心内容。文章采用大量代码示例演示实际应用,包括计算器实现、递归算法等案例。同时提供了数据类型大小表、常见错误分析等实用参考,并强调模块化编程、调试技巧等最佳实践。最后规划了动态内存管理、数据结构等进阶

2025-06-15 23:33:47 1653

原创 窗外的雨,笔下的路:技术生涯的沉淀之始

【职场新人的成长之路】一位程序员回顾初入职场的经历:从外包身份起步,先后接手充电模块和指纹安全开发,在无人指导的情况下独自摸索。幸运遇到第一位导师后,参与了多个MTK平台项目,逐渐从协助走向独立负责。面对职场变动,秉持"干一天提升一天"的态度,决定通过写博客系统梳理技术积累(C/C++、Shell、Git等),记录职业感悟与成长轨迹。文章以泰戈尔诗句开篇,道出人生如过客的感悟,最终落脚于脚踏实地开启技术沉淀之旅的决心。

2025-06-14 17:59:27 443

原创 BC1.2,QC2.0,QC3.0,PD协议笔记

BC1.2定义BC1.2 (Battery Charging v1.2)是USB-IF下属的BC(Battery Charging)小组制定的协议,主要用于规范电池充电的需求,该协议最早基于USB2.0协议来实现。BC1.2充电端口USB2.0协议规定外设从USB充电器抽取电流的最大值为500mA,500mA的电流限制无法满足日益增长的快充需求。因此,BC1.2引入了充电端口识别机制,主要包括以下几个USB端口类型:1.标准下行端口(SDP)SDP端口支持USB协议,最大...

2022-03-07 14:27:42 55

空空如也

空空如也

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

TA关注的人

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