【android12-linux-5.1】【ST芯片】【RK3588】【LSM6DSR】HAL移植

news2024/11/27 4:18:02
一、环境介绍

RK3588主板搭载Android12操作系统,内核是Linux5.10,使用ST的六轴传感器LSM6DSR芯片。

二、芯片介绍

LSM6DSR是一款加速度和角速度(陀螺仪)六轴传感器,还内置了一个温度传感器。该芯片可以选择I2C,SPI通讯,还有可编程终端,可以后置摄像头等设备,功能是很强大的(感兴趣的可以去看数据手册)。该芯片原厂公开了input和iio两种驱动和HAL,我这边选用的是iio驱动,所以HAL也配套选择了iio的。

三、驱动移植

【android12-linux-5.1】【ST芯片】【RK3588】【LSM6DSR】驱动移植__花花的博客-CSDN博客

四、HAL移植

源码链接:https://github.com/STMicroelectronics/STMems_Android_Sensor_HAL_IIO/tree/STMems_Android_Sensor_HAL_IIO

1,拷贝整个文件夹到hardware/目录下

2,在/device/rockchip/rk3588/device.mk中增加

PRODUCT_PACKAGES += sensors.rk3588

3,HAL目录下,执行生成cofig指令

source android_data_config
make sensors-defconfig

        报错失败可以参考【android12-linux-5.1】【ST芯片】HAL移植后配置文件生成报错__花花的博客-CSDN博客

4,增加权限配置参考(开机会卡住报错-13)

【android12-linux-5.1】【ST芯片】HAL移植后开机卡死__花花的博客-CSDN博客

5,编译后调不到HAL参考(HAL增加日志不会出来)

【android12-linux-5.1】【ST芯片】HAL移植后没调起来__花花的博客-CSDN博客

6,多HAL兼容参考

RK平台的sensor框架HAL层兼容其他HAL层so库__花花的博客-CSDN博客

7,测试任然SensorManger调不到的话,参考配置

Solved: Re: Android P can't get LSM6DSM HAL Accelerometer/... - STMicroelectronics Community

五,测试

直接系统接口SensorManger调用即可

1,MainActivity.java

package com.example.sensorsdata;

import static android.hardware.SensorManager.SENSOR_DELAY_GAME;
import static android.hardware.SensorManager.SENSOR_DELAY_NORMAL;
import static android.hardware.SensorManager.SENSOR_DELAY_UI;
import static java.lang.Math.atan2;

import android.app.Activity;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;

import com.google.android.material.snackbar.Snackbar;

import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Environment;
import android.text.method.ScrollingMovementMethod;
import android.util.Log;
import android.view.View;

import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;

import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.TextView;

import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.List;

public class MainActivityRaw extends Activity implements SensorEventListener {

    private SensorManager sensorManager = null;
    private Sensor accSensor = null;//加速度传感器
    private Sensor gyroSensor = null;//角速度传感器
    private Sensor magSensor = null;//磁力传感器
    private Sensor stepSensor = null;//计步传感器
    private Sensor tempSensor = null;//温度传感器
    private Sensor tempSensor2 = null;//温度传感器
    private TextView textView_AccName, textView_AccX, textView_AccY, textView_AccZ;//加速度传感器参数
    private TextView textView_GyrName, textView_GyrX, textView_GyrY, textView_GyrZ;//角速度传感器参数
    private TextView textView_MagName, textView_MagX, textView_MagY, textView_MagZ;//磁力

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/978306.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第二章 Linux多进程开发 2.24-2.31 信号集及相关函数 共享内存 守护进程

有时间需要重新回顾 2.24 信号集及相关函数 1.用户通过键盘 Ctrl C, 产生2号信号SIGINT (信号被创建) 2.信号产生但是没有被处理 (未决) - 在内核中将所有的没有被处理的信号存储在一个集合中 (未决信号集) - SIGINT信号状态被…

第 3 章 栈和队列 (利用非循环顺序队列采用广度搜索法求解迷宫问题(一条路径))

1. 背景说明 广度优先通俗的解释的是将当前所有能走的步骤全部走完并保存在队列中,又称为层序遍历,此外,该方法类似于多条路线并发前进, 哪一条先到就取哪条路线作为结果并终止查询,因此能够得到最短路径,…

【JavaEE】_HTML

目录 1.HTML结构 2. HTML常用标签 2.1 注释标签 2.2 标题标签:h1~h6 2.3 段落标签:p 2.4 换行标签:br 2.5 格式化标签 2.6 图片标签:img 2.7 超链接标签:a 2.8 表格标签 2.9 列表标签 2.10 表单标签 2.10…

镜像的基本命令(docker)

文章目录 前言一、docker命令介绍1、帮助命令2、显示镜像3、搜索镜像4、下载镜像5、删除镜像 总结 前言 本文主要介绍docker中与镜像相关的一些命令,是对狂神课程的一些总结,作为一个手册帮助博主和使用docker的同学们来查找和回忆。 实验环境&#xf…

【Java 基础篇】深入理解 Java 中的抽象类:提高代码可维护性与扩展性

抽象类(Abstract Class)是 Java 面向对象编程中的一个重要概念。它允许我们定义一组抽象方法,这些方法可以被子类(类)实现。抽象类通常用于定义一些通用的方法和属性,但不能被实例化。本篇博客将深入探讨 J…

Java反序列化漏洞复现(weblogic和s2)

文章目录 weblogic启动环境漏洞扫描漏洞复现 S2-045启动环境漏洞复现 前提条件: 1.安装docker docker pull medicean/vulapps:j_joomla_22.安装docker-compose docker run -d -p 8000:80 medicean/vulapps:j_joomla_23.下载vulhub weblogic 启动环境 到下面路径下…

Mac13.4 (22F66)钥匙串无法导出.p12证书解决方案

最近更新了Mac 13.4系统之后,开发苹果APP项目时突然发现无法导出.p12证书 这情况解决方案如下方案 在钥匙串访问的上方,有一栏类型筛选,默认选中的是 “所有项目”,将选项切换至“证书” 切换到“证书”后,右键点击需要…

Ae 效果:CC Vector Blur

模糊和锐化/CC Vector Blur Blur & Sharpen/CC Vector Blur CC Vector Blur(CC 向量模糊)使用源图像(图层自身或指定的向量映射图层)的亮度差异或其他选择的属性(如红通道、绿通道、蓝通道等)来生成一个…

kafka学习-概念与简单实战

目录 1、核心概念 消息和批次 Topic和Partition Replicas Offset broker和集群 生产者和消费者 2、开发实战 2.1、消息发送 介绍 代码实现 2.2、消息消费 介绍 代码实现 2.3、SpringBoot Kafka pom application.yaml KafkaConfig producer consumer 1、核心…

【变分法】【书籍阅读笔记】Calculus of Variation by gelfand 第一章 总结与习题题解 【更新中】

文章目录 前言1 第一章 变分法基础1.1 泛函 与 一些简单的变分问题1.2 Function Spaces/ 赋范线性空间1.3 泛函的变分: 具有极值的必要条件1. 重要引理/线性泛函的等零条件2. 泛函变分 1.4 最简单的变分问题:欧拉方程1. 欧拉方程2. 证明/欧拉方程的得出3. 欧拉方程的…

机器学习:基于梯度下降算法的线性拟合实现和原理解析

机器学习:基于梯度下降算法的线性拟合实现和原理解析 线性拟合梯度下降算法步骤算法实现数据可视化(动态展示)应用示例 当我们需要寻找数据中的趋势、模式或关系时,线性拟合和梯度下降是两个强大的工具。这两个概念在统计学、机器…

SQLI-labs-第五关

知识点:布尔盲注 思路: 1、判断注入点 首先,我们看看正常的回显内容 ?id1 接着输入?id1 ,结果出现语句错误 这里说明存在单引号的闭合错误 ?id1 and 11-- ?id1 and 12-- 这里没有任何回显信息,可以准确的确…

基于STM32程序万年历液晶1602显示-proteus仿真-源程序

一、系统方案 本设计采用STM32单片机作为主控器,液晶1602显示,按键设置万年历。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 //通用定时器3中断初始化 //这里时钟选择为APB1的2倍,而APB1为36M //arr&…

官方YOLOV5的torch模型->ONNX模型->RKNN模型

1、环境配置 1.1 RKNN Toolkit2的环境配置 下载RKNN Toolkit2 git clone https://github.com/rockchip-linux/rknn-toolkit2.git打开一个终端命令行窗口,安装 Python3.6 和 pip3 sudo apt-get install python3 python3-dev python3-pip安装所需的依赖包 sudo apt-get inst…

机器学习笔记之最优化理论与方法(七)无约束优化问题——常用求解方法(上)

机器学习笔记之最优化理论与方法——基于无约束优化问题的常用求解方法[上] 引言总体介绍回顾:线搜索下降算法收敛速度的衡量方式线性收敛范围高阶收敛范围 二次终止性朴素算法:坐标轴交替下降法最速下降法(梯度下降法)梯度下降法的特点 针对最速下降法缺…

Vue + Element UI 前端篇(十二):用户管理模块

Vue Element UI 实现权限管理系统 前端篇(十二):用户管理模块 用户管理模块 添加接口 在 http/moduls/user.js 中添加用户管理相关接口。 import axios from ../axios/* * 用户管理模块*/// 保存 export const save (params) > {ret…

Unity中Shader的变体shader_feature

文章目录 前言一、变体的类型1、multi_compile —— 无论如何都会被编译的变体2、shader_feature —— 通过材质的使用情况来决定是否编译的变体 二、使用 shader_feature 来控制 shader 效果的变化1、首先在属性面板暴露一个开关属性,用于配合shader_feature来控制…

解决deepspeed框架的bug:不保存调度器状态,模型训练重启时学习率从头开始

deepspeed存在一个bug,即在训练时不保存调度器状态,因此如果训练中断后再重新开始训练,调度器还是会从头开始而不是接着上一个checkpoint的调度器状态来训练。这个bug在deepspeed的github中也有其他人提出:https://github.com/mic…

清理Maven仓库中下载失败的文件

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

【SpringBoot】统一功能处理

目录 🎃1 拦截器 🎀1.1 拦截器的代码实现 🎨1.2 拦截器的实现原理 🧶2 拦截器应用——登录验证 🦺3 异常统一处理 🎭4 统一数据返回格式 🧤4.1 为什么需要统一数据返回格式 🧣4.2 统…