- 博客(25)
- 收藏
- 关注
原创 MTK SensorHub1.0 平台HAL层修改sensor 配置信息
摘要:本文揭示了关于Android HAL层的常见理解误区,指出通常所说的HAL层是指MTK SensorHub架构中SCP协处理器的物理抽象层,而非Android标准HAL层。详细阐述了APP如何通过HAL层的SensorList.cpp获取物理传感器信息,以及系统启动过程中sensorservice如何通过HAL_MODULE_INFO_SYM宏访问HAL层接口。文中还分析了传感器操作流程,包括poll__close、poll__activate等关键函数的调用机制,以及init_sensors函数如何
2025-12-02 19:28:08
374
原创 ak09918 和 ak09919磁传感器芯片内部模块和功能
摘要:AK09918和AK09919是两款磁传感器芯片,均包含3轴霍尔传感器、信号处理电路和I2C接口等核心模块。AK09919新增了16组数据的FIFO缓冲功能,并支持I3C通信协议。实际应用中,主控通过I2C总线(主从模式)与芯片交互,配置采样率后,驱动层通过定时回调上报带时间戳的传感器数据至应用层。两款芯片的主要差异在于AK09919增强了数据缓冲能力和通信协议支持。
2025-11-27 16:12:08
377
原创 哈佛架构和冯诺依曼架构区别
哈佛架构与冯诺依曼架构的主要区别在于存储方式:哈佛架构将指令和数据分开存储,而冯诺依曼架构则将二者统一存储。这种差异影响了处理器的数据吞吐效率与系统设计复杂度。哈佛架构更适用于需要高性能处理的场景,而冯诺依曼架构则因结构简单被广泛应用。两种架构各有优势,选择取决于具体应用需求。
2025-11-07 15:48:33
91
原创 高通SEE 架构安卓Sensor HAL和ADSP 驱动的通信
摘要:本文介绍了高通移动平台中的三个关键技术:SEE(传感器执行环境)是类似SensorManager的传感器消息处理核心层;ADSP(应用专用处理器)是为高效处理特定任务而设计的专用处理器;HAL与ADSP通过QMI(高通消息接口)模块进行通信,该接口定义了AP与ADSP间的数据交换协议。文章简要说明了这些技术的基本概念和相互关系。
2025-11-06 15:06:24
260
原创 FreerTOS系统中OSA 操作系统抽象层介绍
OSA 抽象层是位于嵌入式操作系统内核上层。OSA 封装了操作系统内核,比恩向上层应用程序提供独立与特定操作系统内核的API 接口。可以说OSA 是操作系统内核API 的二次封装这些API 向上层提供的模块:断言,事件,IRQ中断,内存管理,收发消息,线程,定时器,信号量(互斥,计数),时间,日志,服务器-客户端通信。
2025-10-28 14:55:13
864
原创 两台手机如何确定是MTK 还是高通平台
测试拿到两台手机,有一台手机指南针横竖屏功能正常,而另一台手机同一个指南针apk 功能异常,两个手机可以确认都是高通平台,但不确定是不是同一个项目。终端手机是一个量产项目,无法联系到相关硬件人员得知CPU 信息,于是只能通过软件方法去寻找两台手机的差异性。方法1、打开手机设置-》关于手机-》Android版本或者是Processor 可以对比知道是否是同一个项目。方法2、通过adb 命令查看手机平台prop信息。1.查看手机是MTK还是QCOM或者SPRD。
2025-10-23 16:39:46
354
原创 ADB 命令如何查看手机当前打开的app,然后导出到本地
本地路径无法找到放电apk ,发现另一台手机安装了此app,通过adb 命令导出到本地在安装。
2025-09-26 17:30:32
216
原创 Windows系统常用的bat命令
本文摘要介绍了Windows批处理命令的三种常见用法:1) set命令用于变量赋值和用户输入,类似C语言的scanf;2) cd命令用于目录切换,功能与Linux的cd命令相似;3) echo命令用于屏幕输出和文件写入,类似C语言的printf。每种命令都提供了基本语法说明和典型用例,包括变量判断、路径切换和文件操作等实用示例。这些命令是Windows批处理脚本编程的基础工具。
2025-09-20 08:33:31
169
原创 Android CTS环境执行./cts-tradefed 报错Could not find ‘aapt‘ in PATH
linux输入sudo apt-get install aapt</p><p>安装成功后重新输入./cts-tradefed
2025-09-18 14:43:25
230
原创 Android Audio知识梳理 (一)
本文介绍了8个常见音频术语:灵敏度(决定耳机音量)、信噪比(影响音质清晰度)、总谐波失真(衡量音质纯净度)、最大声压级(强音信号下的失真程度)、电源抑制比(评估电源稳定性)、输出阻抗(影响耳机驱动难易度)、串扰(左右声道干扰程度)和信道间相位差(影响立体声定位)。这些参数共同决定了音频设备的性能表现,涵盖音量、音质、驱动特性和立体声效果等关键指标。
2025-08-24 15:19:13
331
原创 高通SEE架构sensor 数据上报和处理上层命令流程
根据代码分析:adsp instance上报数据的流程第一步: Turn COM port ON 理解是把i2c 总线拉高true);第二步:ak0991x_instance_state 获取当前stream type,然后创建一个stream,然后通过pb解析出timer 事件第三步:获取当前时间now 和 req_timeout 时间比较,超时上报数据//上层apk 设置if (!;
2025-08-10 13:38:59
962
原创 C程序中的栈的使用
总结:这里我们可以看到局部变量在函数中的地址是以堆积的方式存储的这个存储的区域被称为“栈(自顶向下地址不断减小)”,一个函数调用结束后这部分区域会被释放且被第n个函数使用。
2025-08-07 16:37:06
158
原创 C程序中的虚拟内存的体现
该C程序演示了虚拟内存的工作原理。程序先打印变量hoge的内存地址,接收用户输入后进入循环递增hoge的值。实验表明,在不同终端运行该程序时,虽然变量地址相同,但内容独立变化,说明操作系统为每个进程分配了独立的虚拟地址空间。实际上,物理内存保存数据,操作系统负责将虚拟地址映射到物理内存,并管理内存区域的读写权限。这验证了虚拟内存机制如何实现进程间的内存隔离与保护。
2025-08-06 17:19:22
131
原创 Android系统的常见的debug方式
本文介绍了Android系统各层的调试方法:1. Framework层使用dumpsys工具查看服务状态,主要命令包括输出所有服务/指定服务信息;2. HAL层使用logcat记录系统日志,可通过优先级/标签过滤日志,以及用procrank分析进程内存占用情况;3. Kernel层通过dmesg工具查看内核环形缓冲区日志,支持关键字过滤和动态监控。这些工具可用于诊断系统服务、内存管理、驱动加载等问题,是Android系统调试的重要方法。
2025-07-22 18:04:31
693
原创 Android.mk 深入学习
Android.mk文件是Android项目中的Makefile文件,用于将源文件编译成可执行文件、动态库(.so)、静态库(.a)、JAR包或APK。其基本语法包括定义LOCAL_PATH、清空环境变量(CLEAR_VARS)、指定源文件(LOCAL_SRC_FILES)和设置编译目标类型(BUILD_EXECUTABLE等)。文件支持引用系统/第三方库和头文件,如使用LOCAL_SHARED_LIBRARIES引用动态库。实例演示了单文件和多文件编译的两种方式:直接列举源文件或通过宏定义批量处理。多文件
2025-07-19 16:30:06
970
原创 windows使用samba 服务器映射到Ubuntu 报错:连接错误
windows使用samba 服务器映射到ubuntu 系统共享文件夹报错。
2025-07-16 16:08:05
159
原创 RK3588 Androd12平台 HAL 和 驱动间通信深入理解
摘要:文章分析了RK3588平台Android 12系统中HAL层与驱动层的通信机制。该平台采用经典安卓五层架构,传感器驱动位于Kernel层。HAL与驱动间的数据传输通过input子系统实现,上层控制采用ioctl机制。重点介绍了驱动层的两个关键结构体:struct sensor_operate用于注册I2C设备,struct file_operations提供misc设备驱动接口,使HAL层能直接与驱动层通信,无需经过common层。文中还展示了具体的驱动注册代码实现。
2025-07-15 15:56:06
462
原创 Android 源码编译报错:TEMPORARY_DISABLE_PATH_RESTRICTIONS
TEMPORARY_DISABLE_PATH_RESTRICTIONS 这是一个临时变更的方法,现在设置成了绝对的属性。问题:编译安卓源码报错:如下。
2025-07-04 17:53:33
169
原创 RK3588 Android12平台sensor调试总结
确认方法:通过getevent 查看是否有名为compass 和 gsensor 的input 设备如果没有注册成功,需要排查的思路如下:<1>, 硬件i2c 是否上拉和接线是否正确<2>, dts 配置是否正确,通过执行adb shelldmesg -w > kernel.log //kernel log搜索关键字确定驱动问题<3>, 确认 hal 层代码是否正常运行,执行如下命令adb shelllogcat >hal.log //log 中搜索sensor关键字定位问题。
2025-07-03 15:48:11
1647
2
原创 Ubuntu 系统重启后黑屏报错:/dev/nvme0n1p2:clean,xxx/ files,xxx/xxx blocks一直进入不了图形界面
2, 查看电脑的磁盘空间,可以看到/dev/nvme0n1p2分区 是挂载在到根目录下的,并且磁盘空间接近Full的状态。1, Ctrl+Alt+F2 登录ubuntu 进入到命令行模式下。查看其他博主的原文问题原因是:修改显卡属性,重新安装显卡驱动。3, 进入到根路径下,删除无用占用空间较大的文件。4, 重启电脑,可以正常进入ubuntu桌面了。尝试了之后问题没有解决,于是按照如下操作分析。分别用做EFI启动分区、linux根分区。文件系统类型为vfat、ext4。分别挂载于/boot、/根目录。
2025-06-11 12:11:39
1494
原创 MTK/QCOM平台MEMS 传感器方向确定方法
正常每一个MEMS传感器芯片都有个1点,1点位置可以确定芯片的x,y,z轴的方向正负,而硬件工程师设计手机layout 的时候x,y,z轴可能不完全和芯片的1点x,y,z 三轴方向重合。这个时候就需要通过一个参数把layout 的坐标校正和芯片坐标一致。这个参数就是direction 参数,direciton 参数一般是0-7。mtk 平台一般是在dts中有一个属性direction来设置的,高通是在json 文件中orient 属性配置。x/y/z 轴从北-> 西值从从大到小变化。
2025-05-29 16:32:25
309
原创 Anydesk和向日葵跨系统连接心得
1,windows 系统 anydesk 连接 ubuntu 22.0 报display server not support2, 使用进行远程控制,当远程Ubuntu所连接的显示器关闭的时候,控制端的鼠标无响应,可点击,但是不能编辑。尝试了卸载软件,重新安装,重启软件等等方法均没有解决。最终找到问题的答案。总结:以上1,2 两类问题归结为一类问题就是ubuntu 系统显示服务和协议设置不对导致,默认的ubuntu 22.04系统没有禁用。
2025-04-14 10:35:57
986
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅