当前位置: 首页 > news >正文

【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决策树就好了呗&#xff1…...

解决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 …...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子&#xff08…...

【kafka】Golang实现分布式Masscan任务调度系统

要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...

网络编程(UDP编程)

思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...

git: early EOF

macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...