【android12-linux-5.1】【ST芯片】【RK3588】【LSM6DSR】HAL源码分析
一、环境介绍
RK3588主板搭载Android12操作系统,内核是Linux5.10,使用ST的六轴传感器LSM6DSR芯片。
二、芯片介绍
LSM6DSR是一款加速度和角速度(陀螺仪)六轴传感器,还内置了一个温度传感器。该芯片可以选择I2C,SPI通讯,还有可编程终端,可以后置摄像头等设备,功能是很强大的(感兴趣的可以去看数据手册)。该芯片原厂公开了input和iio两种驱动和HAL,我这边选用的是iio驱动,所以HAL也配套选择了iio的。
三、驱动移植
【android12-linux-5.1】【ST芯片】【RK3588】【LSM6DSR】驱动移植__花花的博客-CSDN博客
四、HAL移植
【android12-linux-5.1】【ST芯片】【RK3588】【LSM6DSR】HAL移植__花花的博客-CSDN博客
五、源码结构
1,包总结构
2,源码结构
2022/04/29 17:12 6,971 Accelerometer.cpp
2022/04/29 17:12 1,532 Accelerometer.h
2022/04/29 17:12 8,555 Android.mk
2022/04/29 17:12 3,184 android_KK_defconfig
2022/04/29 17:12 3,227 android_L_defconfig
2022/04/29 17:12 3,227 android_M_defconfig
2022/04/29 17:12 3,227 android_N_defconfig
2022/04/29 17:12 3,296 android_O_defconfig
2022/04/29 17:12 3,356 android_P_defconfig
2022/04/29 17:12 3,398 android_Q_defconfig
2022/04/29 17:12 3,386 android_R_defconfig
2022/04/29 17:12 1,782 ChangeODRTimestampStack.cpp
2022/04/29 17:12 1,407 ChangeODRTimestampStack.h
2022/04/29 17:12 3,903 CircularBuffer.cpp
2022/04/29 17:12 1,563 CircularBuffer.h
2022/04/29 17:12 3,695 common_data.h
2022/04/29 17:12 1,496 DeviceOrientation.cpp
2022/04/29 17:12 1,191 DeviceOrientation.h
2022/04/29 17:12 2,453 DynamicSensorProxy.cpp
2022/04/29 17:12 1,680 DynamicSensorProxy.h
2022/04/29 17:12 1,882 FlushBufferStack.cpp
2022/04/29 17:12 1,425 FlushBufferStack.h
2022/04/29 17:12 1,223 FlushRequested.cpp
2022/04/29 17:12 1,263 FlushRequested.h
2022/04/29 17:12 1,848 Gesture.cpp
2022/04/29 17:12 1,264 Gesture.h
2022/04/29 17:12 7,439 Gyroscope.cpp
2022/04/29 17:12 1,776 Gyroscope.h
2022/04/29 17:12 27,339 HWSensorBase.cpp
2022/04/29 17:12 4,279 HWSensorBase.h
2022/04/29 17:12 6,015 Magnetometer.cpp
2022/04/29 17:12 1,540 Magnetometer.h
2022/04/29 17:12 1,701 Pressure.cpp
2022/04/29 17:12 1,116 Pressure.h
2022/04/29 17:12 1,759 RHumidity.cpp
2022/04/29 17:12 1,132 RHumidity.h
2022/04/29 17:12 10,134 RingBuffer.cpp
2022/04/29 17:12 2,393 RingBuffer.h
2022/04/29 17:12 2,986 SelfTest.cpp
2022/04/29 17:12 1,285 SelfTest.h
2022/04/29 17:12 1,869 SensorAdditionalInfo.cpp
2022/04/29 17:12 1,524 SensorAdditionalInfo.h
2022/04/29 17:12 22,098 SensorBase.cpp
2022/04/29 17:12 8,760 SensorBase.h
2022/04/29 17:12 106,872 SensorHAL.cpp
2022/04/29 17:12 6,754 SensorHAL.h
2022/04/29 17:12 1,769 SignificantMotion.cpp
2022/04/29 17:12 1,205 SignificantMotion.h
2022/04/29 17:12 3,137 StepCounter.cpp
2022/04/29 17:12 1,244 StepCounter.h
2022/04/29 17:12 2,168 StepDetector.cpp
2022/04/29 17:12 1,247 StepDetector.h
2022/04/29 17:12 2,720 SWAccelerometerUncalibrated.cpp
2022/04/29 17:12 1,361 SWAccelerometerUncalibrated.h
2022/04/29 17:12 4,833 SWAccelGyroFusion6X.cpp
2022/04/29 17:12 1,227 SWAccelGyroFusion6X.h
2022/04/29 17:12 4,994 SWAccelMagnFusion6X.cpp
2022/04/29 17:12 1,227 SWAccelMagnFusion6X.h
2022/04/29 17:12 5,260 SWAccelMagnGyroFusion9X.cpp
2022/04/29 17:12 1,254 SWAccelMagnGyroFusion9X.h
2022/04/29 17:12 3,226 SWGameRotationVector.cpp
2022/04/29 17:12 1,321 SWGameRotationVector.h
2022/04/29 17:12 1,253 SWGeoMagRotationVector.cpp
2022/04/29 17:12 1,018 SWGeoMagRotationVector.h
2022/04/29 17:12 2,363 SWGravity.cpp
2022/04/29 17:12 1,249 SWGravity.h
2022/04/29 17:12 2,657 SWGyroscopeUncalibrated.cpp
2022/04/29 17:12 1,336 SWGyroscopeUncalibrated.h
2022/04/29 17:12 2,589 SWLinearAccel.cpp
2022/04/29 17:12 1,303 SWLinearAccel.h
2022/04/29 17:12 1,774 SWMagnetometerUncalibrated.cpp
2022/04/29 17:12 1,039 SWMagnetometerUncalibrated.h
2022/04/29 17:12 1,531 SWOrientation.cpp
2022/04/29 17:12 958 SWOrientation.h
2022/04/29 17:12 1,636 SWRotationVector.cpp
2022/04/29 17:12 979 SWRotationVector.h
2022/04/29 17:12 12,457 SWSensorBase.cpp
2022/04/29 17:12 2,484 SWSensorBase.h
2022/04/29 17:12 1,214 SWVirtualGyroscope.cpp
2022/04/29 17:12 991 SWVirtualGyroscope.h
2022/04/29 17:12 1,726 Temp.cpp
2022/04/29 17:12 1,097 Temp.h
2022/04/29 17:12 1,794 TiltSensor.cpp
2022/04/29 17:12 1,199 TiltSensor.h
2022/04/29 17:12 25,399 utils.cpp
2022/04/29 17:12 5,302 utils.h
2022/04/29 17:12 1,341 WristTiltGesture.cpp
2022/04/29 17:12 1,202 WristTiltGesture.h
3,源码文件概要
文件名 | 类型 | 备注 |
Android.mk | 配置文件 | 编译配置 |
android_KK_defconfig | 配置文件 | android_KK系统配置文件 |
android_L_defconfig | 配置文件 | android_L系统配置文件 |
android_M_defconfig | 配置文件 | android_M系统配置文件 |
android_N_defconfig | 配置文件 | android_N系统配置文件 |
android_O_defconfig | 配置文件 | android_O系统配置文件 |
android_P_defconfig | 配置文件 | android_P系统配置文件 |
android_Q_defconfig | 配置文件 | android_Q系统配置文件 |
android_R_defconfig |
相关文章:

【android12-linux-5.1】【ST芯片】【RK3588】【LSM6DSR】HAL源码分析
一、环境介绍 RK3588主板搭载Android12操作系统,内核是Linux5.10,使用ST的六轴传感器LSM6DSR芯片。 二、芯片介绍 LSM6DSR是一款加速度和角速度(陀螺仪)六轴传感器,还内置了一个温度传感器。该芯片可以选择I2C,SPI通讯,还有可编程终端,可以后置摄像头等设备,功能是很…...

MT8788安卓核心板详细参数_MTK安卓主板开发板智能通讯模块
MT8788安卓核心板集成了一个高效的12nm SoC,内置4G LTE调制解调器,将强大的硬件与到处可连接的全面功能设计相结合。 MTK8788智能终端具备许多功能,包括4G、2.4G/5G双频WiFi、蓝牙4.2BLE、2.5W功放、USB、mipi屏接口、三路摄像头接口、GPS和…...
C++String模拟实现
实际上string没什么可讲,主要是对string函数的运用与理解,与其写库函数如何用,不如直接去看c库函数来得好。 以下是自己实现string功能函数。但没对string库中的全部函数进行实现,而是实现主要使用的。 .cpp内是用来测试函数功能…...

Java 设置免登录请求接口被拦截问题
1、在设置免登录时,前端将请求的路由添加到白名单后,请求接口还是被拦截到了,将请求接口也设置后还是会被拦截跳转到登录页面 通过JAVA 注解 Anonymous 进行设置匿名访问就可以了...

(其他) 剑指 Offer 67. 把字符串转换成整数 ——【Leetcode每日一题】
❓ 剑指 Offer 67. 把字符串转换成整数 难度:中等 写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为…...

【MySQL】一文详解MySQL,从基础概念到调优
作者简介 前言 博主之前写过一个MySQL的系列,从基础概念、SQL到底层原理、优化,专栏地址: https://blog.csdn.net/joker_zjn/category_12305262.html?spm1001.2014.3001.5482 本文会是这个系列的清单,拉通来聊一聊Mysql从基础概…...

机器学习——boosting之提升树
提升树和adaboost基本流程是相似的 我看到提升树的时候,懵了 这…跟adaboost有啥区别??? 直到看到有个up主说了,我才稍微懂 相当于,我在adaboost里的弱分类器,换成CART决策树就好了呗࿱…...

解决Spring Boot启动错误的技术指南
🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…...

使用Spring Security保障你的Web应用安全
🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…...

PostgreSQL本地化
本地化的概念 本地化的目的是支持不同国家、地区的语言特性、规则。比如拥有本地化支持后,可以使用支持汉语、法语、日语等等的字符集。除了字符集以外,还有字符排序规则和其他语言相关规则的支持,例如我们知道(‘a’,‘b’)该如何排序&…...

MySQL——日志
日志的作用 1.用来排错 2.用来做数据分析 3.了解程序的运行情况,是否健康--》了解MySQL的性能,运行情况 分类 mysql很多有类型的日志,按照组件划分的话,可以分为 服务层日志 和 存储引擎层日志 : - 服务层…...
玩转Mysql系列 - 第18篇:流程控制语句(高手进阶)
这是Mysql系列第18篇。 环境:mysql5.7.25,cmd命令中进行演示。 代码中被[]包含的表示可选,|符号分开的表示可选其一。 上一篇存储过程&自定义函数,对存储过程和自定义函数做了一个简单的介绍,但是如何能够写出复…...

LED屏幕电流驱动设计原理
LED电子显示屏作为户外最大的应用产品,是大型娱乐,体育赛事,广场大屏幕等场所不可或缺的产品,从单双色简单的文字展示到今天的高清全彩,显示屏的技术一直都在进步,全球80%的LED电子显示屏皆产自于中国。显示…...

shell知识点复习
1、shell能做什么( Shell可以做任何事(一切取决于业务需求) ) 自动化批量系统初始化程序 自动化批量软件部署程序 应用管理程序 日志分析处理程序 自动化备份恢复程序 自动化管理程序 自动化信息采集及监控程序 配合Zabbix信息采集 自动化扩容 2、获取当…...

【Sentinel Go】新手指南、流量控制、熔断降级和并发隔离控制
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开…...
iOS自定义滚动条
引言 最近一直在做数据通信相关的工作,导致了UI上的一些bug一直没有解决。这两天终于能腾出点时间大概看了一下Redmine上的bug,发现有很多bug都是与系统滚动条有关系的。所以索性就关注一下这个小小的滚动条。 为什么要自定义ScrollIndictor 原有的Scrol…...
C++知识点2:把数据写进switch case结构,和写进json结构,在使用上有什么区别
将数据存储在Switch Case结构和JSON结构中有明显的区别,它们用于不同的目的和方式。以下是它们之间的主要区别: 1、用途和结构: Switch Case结构:Switch Case是一种条件语句,通常用于根据条件执行不同的代码块。它通常…...

肖sir__linux详解__003(vim命令)
linux 文本编辑命令 作用:用于编辑一个文件 用法:vim 文件名称 或者vi (1)编辑一个存在的文档 例子:编辑一个file1文件 vim aa (2)编辑一个文件不存在,会先创建文件,再…...

瑞芯微RK3588开发板:虚拟机yolov5模型转化、开发板上python脚本调用npu并部署 全流程
目录 0. 背景1. 模型转化1.1 基础环境1.2 创建python环境1.3 将yolov5s.pt转为yolov5s.onnx1.4 将yolov5s.onnx转为yolov5s.rknn 2. 开发板部署2.1. c版本2.1. python版本(必须是python 3.9) 3. 性能测试 0. 背景 全面国产化,用瑞芯微rk3588…...

【Redis专题】RedisCluster集群运维与核心原理剖析
目录 课程内容一、Redis集群架构模型二、Redis集群架构搭建(单机搭建)2.1 在服务器下新建各个节点的配置存放目录2.2 修改配置(以redis-8001.conf为例) 三、Java代码实战四、Redis集群原理分析4.1 槽位定位算法4.2 跳转重定位4.3 …...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...

QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...

STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...

ZYNQ学习记录FPGA(一)ZYNQ简介
一、知识准备 1.一些术语,缩写和概念: 1)ZYNQ全称:ZYNQ7000 All Pgrammable SoC 2)SoC:system on chips(片上系统),对比集成电路的SoB(system on board) 3)ARM:处理器…...

Windows电脑能装鸿蒙吗_Windows电脑体验鸿蒙电脑操作系统教程
鸿蒙电脑版操作系统来了,很多小伙伴想体验鸿蒙电脑版操作系统,可惜,鸿蒙系统并不支持你正在使用的传统的电脑来安装。不过可以通过可以使用华为官方提供的虚拟机,来体验大家心心念念的鸿蒙系统啦!注意:虚拟…...
数据库正常,但后端收不到数据原因及解决
从代码和日志来看,后端SQL查询确实返回了数据,但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离,并且ai辅助开发的时候,很容易出现前后端变量名不一致情况,还不报错,只是单…...