【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 …...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
Leetcode33( 搜索旋转排序数组)
题目表述 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...
Python竞赛环境搭建全攻略
Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型(算法、数据分析、机器学习等)不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...
【Java】Ajax 技术详解
文章目录 1. Filter 过滤器1.1 Filter 概述1.2 Filter 快速入门开发步骤:1.3 Filter 执行流程1.4 Filter 拦截路径配置1.5 过滤器链2. Listener 监听器2.1 Listener 概述2.2 ServletContextListener3. Ajax 技术3.1 Ajax 概述3.2 Ajax 快速入门服务端实现:客户端实现:4. Axi…...
C++ 变量和基本类型
1、变量的声明和定义 1.1、变量声明规定了变量的类型和名字。定义初次之外,还申请存储空间,也可能会为变量赋一个初始值。 如果想声明一个变量而非定义它,就在变量名前添加关键字extern,而且不要显式地初始化变量: e…...
Unity基础-Mathf相关
Unity基础-Mathf相关 一、Mathf数学工具 概述 Mathf是Unity中封装好用于数学计算的工具结构体,提供了丰富的数学计算方法,特别适用于游戏开发场景。它是Unity开发中最常用的数学工具之一,能够帮助我们处理各种数学计算和插值运算。 Mathf…...
ubuntu自定义服务自动启动
自定义服务 在路径 /etc/systemd/system/ 下 定义example.service [Unit] DescriptionMy Custom Script[Service] ExecStart/root/exe_start.sh Typeoneshot RemainAfterExityes[Install] WantedBymulti-user.target在/root/ 路径下执行 vi exe_start.shcd /root/mes_server/…...
