- 博客(40)
- 收藏
- 关注
原创 MTK平台Sensor器件的数据流梳理
hf_manager接收到SCP的数据就绪IPC中断后,对共享内存中的数据做二次校验(如帧完整性、数据格式合法性),确认无误后,将缓冲区状态标记为“已读取”,并将数据的内存地址+数据长度传递给AP侧的Sensor HAL,不做数据拷贝,仅传递内存指针。SensorHub将预处理后的结构化数据,按MTK的帧协议写入共享内存的指定缓冲区,写入完成后,通过IPC中断向AP侧的 hf_manager 发送数据就绪通知(仅一个中断信号,无数据传输),同时标记缓冲区的数据状态(如“可读”“待处理”)。
2026-02-09 16:54:59
456
原创 MTK平台Sensor器件的控制流梳理
SCP侧由SensorHub作为指令总入口,统一解析AP下发的指令、转换为传感器硬件可识别的配置,再通过SCP侧传感器驱动写入传感器寄存器,实现指令的跨核透传+本地化解析执行,这是MTK传感器低功耗控制的核心设计(避免AP频繁直接操作硬件导致的高唤醒损耗)。② 将MTK跨核通用指令****转换为传感器硬件专属配置指令(如将“采样率100Hz”转换为对应传感器的寄存器地址+配置值,不同传感器的寄存器协议不同,由SensorHub统一适配);指令经SensorHub解析后配置传感器。
2026-02-09 16:51:51
517
原创 Scp和SensorHub的关系梳理
SensorHub(传感器集线器):MTK基于Google CHRE开发的软件框架,作为SCP上的CHRE App存在,提供传感器统一管理、数据预处理(滤波/校准/融合)、算法集成(计步/手势)能力,向上通过IPC/共享内存与AP侧HAL/Kernel通信。1. 物理部署:SensorHub的代码部署在SCP侧( vendor/mediatek/proprietary/tinysys/scp/middleware/sensorhub ),SCP提供硬件资源与执行环境,SensorHub实现软件逻辑。
2026-02-09 16:41:45
540
原创 MTK平台Sensor驱动在SCP侧与Kernel侧的区别
MTK平台Sensor驱动在SCP与Kernel的核心差异:SCP面向低功耗/持续采集/本地处理,Kernel面向通用控制/兼容IIO/AP直连,低功耗场景优先SCP,简单传感器可用Kernel直驱。- SCP驱动:运行在Cortex‑M核SCP,FreeRTOS+CHRE,独立于AP,负责低功耗数据采集、本地处理(滤波/校准/计步),AP休眠时自主工作。- SCP驱动:通过IPC与AP通信,指令经hf_manager透传,数据走共享内存,SCP自主控制传感器,仅上报结果,低功耗。三、驱动架构与代码路径。
2026-02-09 16:32:22
491
原创 MTK Sensorhub3.0架构(大白话通俗梳理)
3、闭环数据处理:传感器采原始值,Hub内直接做校准,滤波,补偿,算法运算(计步/姿态识别),处理完再传AP,不麻烦主芯片。:MTK SensorHub3.0是传感器专属低功耗独立中枢,住自研小芯片,一站式管全量传感器,省电又不拖累手机主芯片。1、自主初始化:开机Hub先启动,自动加载所有的传感器驱动,出厂校准参数,器件上电就绪,不用等主芯片指令。4、智能休眠:无用时自动让传感器下电,销毁实例,Hub本身也低功耗待命,杜绝偷电,续航拉满。上层【AP侧-手机主芯片】:只发指令+收数据,不插手干活。
2026-02-05 17:06:46
565
原创 高通Sensor架构梳理
高通平台sensor架构氛围SSC(Snapdragon Sensor Core)和SEE(Sensor Execution Environment)两种架构。SSC架构主要用于老的平台,如MSM8953、SDM660、QCM2150等,SEE架构主要用于新的平台,如SM8450 SM8550等。三、SSC和SEE区别。四、SEE架构的改进。
2026-02-03 17:37:49
631
原创 高通SEE架构(大白话通俗梳理)
SEE核心框架 -> Sensor管理器 -> 各传感器驱动 -> 校准/滤波模块->数据封装模块。2、运行载体:ADSP/SLPL,SEE的“住处”,独立低功耗芯片,不占用手机主CPU。3、稳通信:专属QMI链路,指令/数据传输不丢包,AP与SEE互不干扰。1、省功耗:独立ADSP运行,不占用主CPU,传感器高频采集不耗电。3、通信桥梁:QMI链路,仅用于SEE<--->AP传指令、数据。:SEE是传感器专属“小管家”,住ADSP,替CPU减负,管传感器全流程。禁用后器件下电,实例销毁,彻底休眠无偷电。
2026-02-03 17:34:43
381
原创 sensor光感常开方案
sensor光感常开方案的工作原理是通过传感器持续采集环境光数据,并通过软件算法对数据进行处理和分析,以实现对环境光的持续感知和监测。经过处理和分析后的环境光数据可以实时地反馈给用户和控制系统。例如,在智能家居中,环境光数据可以用于自动调节灯光的亮度和色温,以实现舒适和节能的目的。2、数据处理和分析。处理器会根据预设的算法和阈值,对数据进行滤波,平均,趋势分析等处理,以提取出有用的信息。通过以上工作流程,sensor光感常开方案可以实现对环境光的持续感知和监测,从而提供更加智能化和节能化的应用体验。
2024-07-14 16:58:07
598
原创 高通平台sensor初始化步骤
在初始化传感器之后,可能需要进行传感器的校准操作。校准操作包括对传感器的零点偏移,灵敏度等参数进行调整,以提高传感器的准确性和稳定性。应用程序可以按照一定的评率和或事件触发来读取传感器数据,并进行相应的处理和分析。在应用程序中,通过发送特定的初始化命令来初始化传感器。初始化命令通常包括设置传感器的工作模式,采样频率,数据格式等参数。在驱动程序加载完成后,Kernal层会创建一个设备节点(通常时字符设备或块设备),供上层应用程序通过文件系统进行访问。在应用程序中,通过打开设备节点来获取传感器的操作句柄。
2024-07-14 16:14:14
858
原创 SPI & I2C总线协议
3、时序:主要是在sck的控制下,两个双向移位寄存器进行数据交换,上升沿发送,下降沿接收,高位先发送。上升沿到来的时候,SDO上的电平将被发送到从设备的寄存器中,下降沿到来的时候,SDI上的电平将被接收到主设备的寄存器中。若SDA发生跳变,则用来表示一个会话的开始或结束。(1)数据传输:SCL为高电平时,SDA线若保持稳定,那么SDA上是在传输数据bit;(2)结束信号:SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据;(1)高速,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线。
2024-07-06 12:01:52
546
原创 android开发工作笔记
config: (i,w,r,s,md),4,1,100,0x1,0x1,0 //100就是odr的值,从qxdm底层日志可以看到。(3) 撤销commit,并撤销 git add,并撤销修改的代码:git reset --hard HEAD^(2)撤销commit,不撤销 git add 操作:git reset --soft HEAD^(1)撤销commit,并撤销 git add,不撤销修改的代码:git reset HEAD^(4) git add 后如何撤销:git reset HEAD。
2024-06-21 00:13:54
611
原创 FIFO介绍
模块缓存:在高性能系统设计中,为了尽可能提高模块的性能,可以使用FIFO来隔离不同模块之间的处理。这样,源模块不需要考虑目标模块的性能,只需要判断FIFO是否满,只要FIFO未满,就可以不断向其写入数据。数据缓存:在模块内部处理数据时,如果前后处理的性能不一致,可以使用FIFO作为中间缓存来平衡前后处理的性能差异。跨时钟域:在不同时钟域之间传递多位数据时,使用异步FIFO是一种简单可靠的解决方案。分类:FIFO的缓存可以使用不同类型的RAM资源,如DRAM、BRAM或URAM。3、FIFO的使用场景。
2024-04-07 11:26:08
786
原创 上下拉电阻的使用场景
使用场景四:加大引脚驱动能力,上拉加强拉电流能力,下拉加强吸电流能力。使用场景二:开漏输出加上拉电阻实现线与逻辑,如I2C总线用法。使用场景一:将不确定信号钳位高电平(上拉)或低电平(下拉)使用场景三:开漏输出加上拉电阻,提高电压准位。
2024-04-07 10:00:14
465
原创 关于sensor高通平台现有校准方案
除此之外,需要供应商确认,是否经过硬磁、软磁校准过。目前项目一般只有硬磁校准,缺少软磁校准。软磁校准需要在最终版主板机器上寄给厂商调试,生成校准文件合入系统。1. 将一个障碍物/物体与接近传感器保持所需的距离(例如5厘米或根据规格),然后执行上述命令。3.该程序将设置5cm为阈值,在阈值内的距离视为近,超过阈值的距离视为远。在保持设备完全静止在平面上的情况下,运行上述命令。保持设备静止,几秒后,转动设备120秒以上,然后停止。在保持设备完全静止在平面上的情况下,运行上述命令。磁力还需要横8字绕环校准。
2024-02-18 14:42:58
1224
原创 Sensor Hub
5、室内定位/室外导航,室外定位目前主要是GPS+AGPS,AGPS是通过手机附近的基站获取GPS辅助信息(包含GPS的星历和方位俯仰角等),从而帮助GPS快速,准确定位。不过无论通过GPS/AGPS定位,还是通过WiFi/蓝牙定位,通过Sensor Hub,可以融合当前运动的加速度,角速度进行惯性导航,而有了地磁的数据,可以准确的判断运动的方向,并更准确的进行室内定位。而在手机上,实现Sensor Hub,共有三种方式。1、手势识别:感测人的手势,如:翻转手机,敲打手机,摇晃手机,拿起手机等手势。
2024-02-07 16:13:00
848
原创 MD5的使用(计算指定目录下文件的md5值)
一、MD5的概念 MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法)。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理。二、MD5的处理步骤: MD5以512位分组来处理输入文本,每一分组又划分为16个32位子分组。算法的输出由四个32位分组组成,将它们级联形成一个128位散列值。 ①如果输入信息的长度(bit)对512求余的结果不等于44...
2020-12-18 17:31:03
6646
2
原创 QT——获取主机的名称和IP地址
一、只获取主机名称和IP地址#include "ServerNetwork.h"#include <QHostInfo>#include <QDebug>#include <QList>#include <QNetworkAddressEntry>#include <QNetworkInterface>#pragma execution_character_set("utf-8")ServerNetwork::ServerN.
2020-10-20 19:09:33
2203
1
原创 QT之信号槽机制基础知识梳理
一、概念(1)信号:特定情况下被发射的事件;(2)槽:对信号响应的函数;二、特点(1)信号(signals): 1.1 自定义信号函数,写在signals下 1.2 返回值是void,只需要声明,不需要实现 1.3 参数可有可无,可以重载(2)槽(slots): 2.1自定义的槽函数,早期的必须写在public slots下,高版本可以写在public下 2.2 返回值是void,需要声明...
2020-10-20 14:27:10
505
1
原创 并发与多线程
一、并发基本概念和实现 (1)概念 两个或者更多的任务(独立的活动)同时发生;一个程序同时执行多个任务。 (2)分类 单核:某一个时刻只能执行一个任务,由操作系统调度,每秒钟进行多次所谓的任务切换,这种切换要有时间开销。 多核:在一块芯片上有多个CPU,可以同时执行多个任务。 (3)作用 同时执行多个任务,提高性能。 ...
2020-10-15 17:07:04
176
1
原创 C++之模板
#include <iostream>using namespace std;template <typename T>T FindMax( T array[],int len ){ T temp = array[0]; for (int i = 1;i < len; i++) { if (array[i] > temp) { temp = array[i]; } } return temp;}int main(){ i.
2020-10-10 15:41:52
103
1
原创 解决Qt显示中文乱码以及Qt加载中文路径的问题
(1)中文显示乱码 在源码开头添加 #pragma execution_character_set("utf-8");(2)加载中文路径 QString path = "我的电脑//测试//file.xml"; TiXmlDocument doc; doc.LoadFile(path.toLocal8Bit());...
2020-09-22 13:53:12
1932
原创 打开对话框,实现选择多个文件夹进行操作
qt_test.h#pragma once#include <QWidget>#include <QList>#include <QString>#include <QFileDialog>class qt_test : public QWidget{ Q_OBJECTpublic: qt_test(QWidget *parent = Q_NULLPTR);private: QList<QString> .
2020-09-17 20:20:22
889
1
原创 TiXml常用接口
一、创建XML文件bool CreatXmlFile(const QString &filePath,const QString &name){ TiXmlDeclaration *dec = new TiXmlDeclaration("1.0","utf-8",""); TiXmlDocument *doc = new TiXmlDocument(); doc->LinkEndChild(dec); TiXmlElement *root
2020-09-09 21:54:04
295
1
原创 Qt之文件夹下的所有文件拷贝,包括子目录
一、文件拷贝(不包含父目录)bool CopyDirectoryFiles(const QString &fromDir,const QString &toDir){ QDir sourceDir(fromDir); QDir targetDir(toDir); if(!targetDir.exists()) { if(!targetDir.mkdir(targetDir.absolutePath())) {
2020-09-09 20:09:28
3573
2
原创 QTableView的使用基础知识
一、设置指定列不可编辑QStandardItemModel *model = newQStandardItemModel ();int row_list = model->rowCount(); //得到行数QStandardItem *item_name = new QStandardItem ("小明");model->setItem(row...
2020-09-09 19:47:51
734
原创 QTableWidget的使用基础
一、简介 QTableWidget是Qt对话框中显示数据表格的控件,QTableWidget继承于类QTableView。二、属性 实例化对象:QTableWidget *tableWidget = new QTableWidget();(1)设置表格不可编辑 tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);(2)设置点击单元格显示整行 .
2020-09-05 13:34:49
727
1
原创 QT之Qss样式设计
一、背景颜色(1)有颜色:background-color:rgb(255,255,255); background-color:rgbs(255,255,255,30); //最后一个参数是透明度 0~255background-color:yellow //常用颜色名(17种标准色与130种其他颜色) background-color:#FF000017 种标准色 aqua, black, blue, fuchsia, gray, green, li
2020-09-04 23:04:54
2263
1
原创 C++获取exe的路径和当前时间
(1)、C++程序获取当前ExE程序的绝对路径:#include <iostream>#include <string>#include <Windows.h> //包含文件名string GetEeEPath(){ //#define MAX_PATH 260 系统中已经定义好,不需要再定义 char exeFullPath[MAX_PATH]= { 0 }; string strPath = ""; GetModuleF
2020-08-18 15:18:58
1057
1
原创 常用字符类型转换
一、QString & String (1)QString转换String QString str1 = “hello!” String str2 = str1.toStdString(); (2)String转换QString String str1 = “world” Q...
2020-07-11 13:34:41
127
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅