【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 …...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
[拓扑优化] 1.概述
常见的拓扑优化方法有:均匀化法、变密度法、渐进结构优化法、水平集法、移动可变形组件法等。 常见的数值计算方法有:有限元法、有限差分法、边界元法、离散元法、无网格法、扩展有限元法、等几何分析等。 将上述数值计算方法与拓扑优化方法结合&#…...
CTF show 数学不及格
拿到题目先查一下壳,看一下信息 发现是一个ELF文件,64位的 用IDA Pro 64 打开这个文件 然后点击F5进行伪代码转换 可以看到有五个if判断,第一个argc ! 5这个判断并没有起太大作用,主要是下面四个if判断 根据题目…...
人工智能--大型语言模型的存储
好的,我现在需要回答用户关于GGUF文件和safetensors文件后缀的差别的问题。首先,我得先确认这两个文件格式的具体应用场景和它们各自的优缺点。用户可能是在处理大模型时遇到了这两种文件格式,想了解它们的区别以便正确使用。 首先ÿ…...
Vue中虚拟DOM的原理与作用
绪论 首先我们先了解,DOM(Document Object Model,文档对象模型) 是浏览器对 HTML/XML 文档的结构化表示,它将文档解析为一个由节点(Node)和对象组成的树形结构(称为 DOM 树…...
jenkins脚本查看及备份
位置与备份 要完整备份 Jenkins 的所有脚本和相关配置,包括 Jenkinsfile、构建脚本(如 .sh / .bat)、Job 配置、插件、凭据等,你可以从两个层面入手: ✅ 一、完整备份 Jenkins 主目录(最全面) …...
