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

这篇具有很好参考价值的文章主要介绍了【android12-linux-5.1】【ST芯片】【RK3588】【LSM6DSR】驱动移植。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、环境介绍

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

二、芯片介绍

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

三、驱动移植

驱动移植的目标是内核,所以下面的路径都是在kernel目录下。

源码链接:https://github.com/STMicroelectronics/STMems_Linux_IIO_drivers/tree/linux-4.19.y-gh

1,拷贝drivers/iio/imu/st_lsm6dsr文件夹到源码内核中相应路径

2,在 drivers/iio/imu/Kconfig中添加驱动支持,如果源码中有自带的st_lsm6dsx驱动的话,需要在对应的代码前加#注释掉,以免影响移植的驱动。

source "drivers/iio/imu/st_lsm6dsr/Kconfig"

3,在drivers/iio/imu/Makefile中添加驱动编译,如果源码中有自带的st_lsm6dsx驱动的话,需要在对应的代码前加#注释掉,以免影响移植的驱动。

obj-y += st_lsm6dsr/

4,在 include/uapi/linux/iio/types.h种增加枚举值(找到对应enum,查找下下面的值是否有缺,增加缺失的即可)

     enum iio_event_type {
            IIO_EV_TYPE_THRESH_ADAPTIVE,
            IIO_EV_TYPE_MAG_ADAPTIVE,
            IIO_EV_TYPE_CHANGE,
            IIO_EV_TYPE_FIFO_FLUSH,
    };

     enum iio_event_direction {
            IIO_EV_DIR_RISING,
            IIO_EV_DIR_FALLING,
            IIO_EV_DIR_NONE,
            IIO_EV_DIR_FIFO_EMPTY,
            IIO_EV_DIR_FIFO_DATA,
    };

5,在include/uapi/linux/iio/types.h中增加枚举值

     enum iio_chan_type {
             IIO_ELECTRICALCONDUCTIVITY,
             IIO_COUNT,
             IIO_INDEX,
             IIO_SIGN_MOTION,
             IIO_STEP_DETECTOR,
             IIO_STEP_COUNTER,
             IIO_TILT,
             IIO_TAP,
             IIO_TAP_TAP,
             IIO_WRIST_TILT_GESTURE,
             IIO_GESTURE,
             IIO_WKUP,
             IIO_FREE_FALL,
             IIO_GRAVITY,
     };

6,在arch/arm64/boot/dts/rockchip/rd-rk3588.dts中增加设备树支持

&i2c1 {#总线名称需根据自身情况修改

	status = "okay";

	st_lsm6dsr: lsm6dsr@6b {
		compatible = "st,lsm6dsr";
		reg = <0x6b>;
		interrupt-parent = <&gpio3>;#需根据自身情况修改
		interrupts = <RK_PC3 IRQ_TYPE_LEVEL_HIGH>;#需根据自身情况修改
	};
}

7,进入到源码根目录执行指令“./build.sh menuconfig”后配置增加芯片支持(也可以直接编译,然后根据提示输入Y就行)

  Device Drivers  --->
  	<M> Industrial I/O support  --->
  		Inertial measurement units  --->
  		<M>   STMicroelectronics LSM6DSM/LSM6DSL sensor  --->

8,修改取时间调用接口

【android12-linux-5.1】【ST芯片】驱动移植后编译不通过__花花的博客-CSDN博客

9,增加iio驱动名称定义

【android12-linux-5.1】【ST芯片】驱动移植后编译不通过__花花的博客-CSDN博客

10,编译烧录后查看设备情况

1)“adb shell” 指令进入设备

【android12-linux-5.1】【ST芯片】【RK3588】【LSM6DSR】驱动移植,Android,linux,android

2)“cd /sys/bus/iio/devices”指令进入iio设备路径并用“ls -l”指令查看设备列表

【android12-linux-5.1】【ST芯片】【RK3588】【LSM6DSR】驱动移植,Android,linux,android

3)“cat */name”查看设备名称,这个驱动注册了15个设备(iio序号不同系统和配置可能会有区别,请根据自己的情况分析使用)。

【android12-linux-5.1】【ST芯片】【RK3588】【LSM6DSR】驱动移植,Android,linux,android

设备情况列表总结如下

num device device name sensor name type 传感器名称 描述
1 iio:device1 lsm6dsr_gyro LSM6DSR Gyroscope Sensor SENSOR_TYPE_GYROSCOPE 角速度传感器/陀螺仪 陀螺仪测量围绕设备的 x、y 和 z 轴的旋转速率(弧度/秒)
2 iio:device2 lsm6dsr_accel LSM6DSR Accelerometer Sensor SENSOR_TYPE_ACCELEROMETER 加速度传感器 加速度传感器测量施加到设备的加速度,包括重力
3 iio:device3 lsm6dsr_temp LSM6DSR Temperature Sensor SENSOR_TYPE_AMBIENT_TEMPERATURE 温度传感器 环境空气温度
4 iio:device4 lsm6dsr_step_c LSM6DSR Step Counter Sensor SENSOR_TYPE_STEP_COUNTER 计步器传感器 提供自已激活传感器后最后一次重启以来用户迈出的步数
5 iio:device5 lsm6dsr_step_d LSM6DSR Step Detector Sensor SENSOR_TYPE_STEP_DETECTOR 步行检测传感器 每次用户迈步时,步测器传感器都会触发事件
6 iio:device6 lsm6dsr_sign_motion LSM6DSR Significant Motion Sensor SENSOR_TYPE_SIGNIFICANT_MOTION 特殊动作触发传感器 每次检测到有效运动时,有效运动传感器都会触发事件,然后将其禁用
7 iio:device7 lsm6dsr_glance LSM6DSR Glance Gesture SENSOR_TYPE_GLANCE_GESTURE 掠过手势传感器 支持短暂打开屏幕,以便用户根据特定动作浏览屏幕上的内容
8 iio:device8 lsm6dsr_motion LSM6DSR Motion Gesture SENSOR_TYPE_MOTION_DETECT 运动检测传感器 如果设备处于运动状态至少5秒,并且最大延迟为5秒,则产生事件
9 iio:device9 lsm6dsr_no_motion LSM6DSR No-Motion Gesture SENSOR_TYPE_STATIONARY_DETECT 静止检测器 如果设备静止至少5秒,并且最大延迟时间为5秒,则产生事件
10 iio:device10 lsm6dsr_wk LSM6DSR WakeUp Gesture SENSOR_TYPE_WAKE_GESTURE 唤醒手势传感器 支持根据设备特定的动作唤醒设备
11 iio:device11 lsm6dsr_pickup LSM6DSR PickUp Gesture SENSOR_TYPE_PICK_UP_GESTURE 拾取手势传感器 拾起设备时触发,无论面前是什么(桌子、口袋、手提袋)
12 iio:device12 lsm6dsr_dev_orientation LSM6DSR Device Orientation Sensor SENSOR_TYPE_DEVICE_ORIENTATION 设备方向传感器 测量设备的旋转方向
13 iio:device13 lsm6dsr_wrist LSM6DSR Wrist Tilt Gesture SENSOR_TYPE_WRIST_TILT_GESTURE 手腕倾斜手势传感器 描述手腕倾斜手势传感器的常数
14 iio:device14 lsm6dsr_tilt LSM6DSR Tilt Sensor SENSOR_TYPE_TILT_DETECTOR 倾斜检测传感器 每次检测到倾斜事件后均生成事件

4)设备数据读取,以最简单的温度数据读取为例。

1>“cd iio:device3”进入温度传感器路径,“ls”指令查看属性文件:

【android12-linux-5.1】【ST芯片】【RK3588】【LSM6DSR】驱动移植,Android,linux,android

2>可以通过读取“in_temp_raw”来查看温度传感器原始数据,“cat in_temp_raw”指令查看温度数据:

【android12-linux-5.1】【ST芯片】【RK3588】【LSM6DSR】驱动移植,Android,linux,android

提示:该驱动于2022年就停止维护了,最新维护源码路径:https://github.com/STMicroelectronics/st-mems-android-linux-drivers-iio。开始移植的时候完全没头绪,只顾着检测是否能用,没注意维护情况问题。但是该驱动亲测能用,HAL移植请看下篇。

另,源码包上传资源被拒,提示侵权,需要的可以评论私信我获取。

新人入行,经验分享,如有所误,欢迎指出~

版权归属:深圳市琪智科技有限公司-花花文章来源地址https://www.toymoban.com/news/detail-704368.html

到了这里,关于【android12-linux-5.1】【ST芯片】【RK3588】【LSM6DSR】驱动移植的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RK3588 Android 12 北斗模块调试

    北斗模块用的MTK RS1612M3 , http://www.sragps.com/web/down.html,可以查看相关资料,用串口和系统通讯 Android12中主要包括串口设备树修改,GPS2.0加载,gps.default.so编译和上层应用测试,以下主要记录测试中碰到的难点 板子上用的串口8,因此打开uart8的设备树配置 uart8 { status = “okay”;

    2024年02月15日
    浏览(27)
  • [RK3588 Android12]设置屏幕方向、分辨率和密度

    修改device/rockchip/common/BoardConfig.mk SF_PRIMARY_DISPLAY_ORIENTATIO参数值 在控制台输入 wm size 1920x1080 或 修改device/rockchip/rk3588/rk3588_s/rk3588_s.mk 增加PRODUCT_PROPERTY_OVERRIDES += ro.config.size_override参数值 在控制台输入 wm density 240 或 修改device/rockchip/rk3588/rk3588_s/rk3588_s.mk 修改PRODUCT_PROPERTY_OVERRI

    2024年02月15日
    浏览(40)
  • RK3588平台开发系列讲解(安卓篇)Android12 获取 root 权限

    沉淀、分享、成长,让自己和他人都能有所收获!😄 📢获取 Android 设备的 root 权限是指取得超级用户( root 用户)的权限,使得用户可以对系统进行更广泛的修改和操作。但需要注意,获取 root 权限可能会导致安全风险,包括系统不稳定、数据丢失或设备损坏,因此应该谨

    2024年02月03日
    浏览(50)
  • Android RK3588-12 hdmi-in Camera方式最大支持3个

      hdmi-in Camera最大支持3个     modified:   hardware/interfaces/camera/device/3.4/default/ExternalCameraDevice.cpp     modified:   hardware/interfaces/camera/device/3.4/default/ExternalCameraDeviceSession.cpp     modified:   hardware/interfaces/camera/device/3.4/default/include/ext_device_v3_4_impl/ExternalCameraDeviceSession.h     modified:

    2024年02月08日
    浏览(36)
  • RK3588平台开发系列讲解(USB篇)Linux Android USB软件架构

    平台 内核版本 安卓版本 RK3588 Linux 5.10 Android 12

    2024年02月09日
    浏览(41)
  • RK3588芯片支持8K视频的硬编解码

    RK3588是一款采用8nm制程工艺的高端通用型SoC,CPU采用四核A76和四核A55的八核架构,GPU采用Mail G610MP4,集成6TOPS独立NPU,支持四通道LPDDR5,有效保证了RK3588芯片的性能输出。RK3588在视频编解码方面也十分突出,支持8K视频的硬编硬解,非常适合VR(虚拟现实)、AR(增强现实)、

    2024年02月12日
    浏览(36)
  • 陀螺仪LSM6DSV16X与AI集成(5)----6D方向检测功能

    陀螺仪通常可以读取三个方向上的旋转,即绕X轴、Y轴和Z轴的旋转。每个方向上的旋转包括正向旋转和反向旋转,因此一共有六个位置。这六个位置分别是:1.X轴正向旋转、2.X轴反向旋转、3.Y轴正向旋转、4.Y轴反向旋转、5.Z轴正向旋转、6.Z轴反向旋转 通过检测陀螺仪在每个方

    2024年02月22日
    浏览(33)
  • 【android】rk3588-android-bt

    参考: https://source.android.com/docs/core/connect/bluetooth?hl=zh-cn https://android.googlesource.com/platform/hardware/interfaces/+/master/bluetooth/ 蓝牙整体硬件架构上分为主机(计算机或MCU)和主机控制器(实际蓝牙芯片组)两部分;主机和控制器之间的通信遵循主机控制器接口(HCI),如下所示:

    2024年01月24日
    浏览(29)
  • 陀螺仪LSM6DSV16X与AI集成(3)----读取融合算法输出的四元数

    LSM6DSV16X 特性涉及到的是一种低功耗的传感器融合算法(Sensor Fusion Low Power, SFLP). 低功耗传感器融合(SFLP)算法: 该算法旨在以节能的方式结合加速度计和陀螺仪的数据。传感器融合算法通过结合不同传感器的优势,提供更准确、可靠的数据。 6轴游戏旋转向量: SFLP算法能

    2024年02月03日
    浏览(28)
  • arm鲁班猫lubanCat rk3588 ubuntu20.04下源码编译安装qt5.12.5

    ubuntu-18.04上通过源码来编译及安装Qt-5.12库 QT官方线上文档for linux qt源码下载地址 进入下面目录下载 【new_archive/qt/5.12/5.12.5/single/qt-everywhere-src-5.12.5.tar.xz】 将压缩包放到Ubuntu某目录,并进入解压: 初步解压出:qt-everywhere-src-5.12.5.tar 最终得到:qt-everywhere-src-5.12.5 或者【右键】

    2024年04月11日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包