紫光展锐驱动之sensorhub调试

2023-11-08

第一章 平台及硬件信息简介

本文档基于ums312(T310),Android 11,sensorhub架构,sensor的硬件接口为i2c1(该平台目前不支持spi)

第二章 紫光展锐的移植文档

所有的移植文档

第三章 sensor厂家提供的代码

代码在共享的资源中有《加速度&陀螺仪+光距感+地磁驱动.zip》。

3.1 地磁(AF6133E)的驱动–需要动态加载

地磁驱动

3.2 光距感(STK33562)的驱动–需要动态加载

光距感驱动代码

3.3 加速度&陀螺仪(icm40607)的驱动–不需要动态加载

加速度&陀螺仪驱动

第四章 动态驱动的编译工具及配置

编译工具:EmBitz_1.11.zip;在共享的资源中有。
使用EmBitz创建和编译工程按文档《33457_Android11.0EmBitz编译Sensorhub动态加载驱动介绍V1.3.pdf》中的操作,下面是添加工程文件:
1、导入编译文件(导入方法按文档中的3.3中的方式操作)
需要导入的文件是:使用Embitz编译的文件,包括地磁驱动overlay_types.h、patch_table_sensor.c、vtc_algo.a、vtc_algo.h、vtc_cali.ld及光距感patch_table_sensor.c,其中光距感patch_table_sensor.c暂时不要导入
2、添加链接脚本,即vtc_cali.ld
3、编译工程生成elf文件,如果没有生成该文件说明以上配置有问题(光距感patch_table_sensor.c先不要加工程)
4、生成elf格式文件后,需要将elf文件转成bin文件,操作如下:
4.1 桌面右键Embitz,打开文件所在位置,找到如下图所示文件
objcopy.exe文件路径
4.2 打开Embitz软件,点击project->Build Options ->选择 Pre/post build steps 中的Post build steps,将 disable 置为 always
将elf转成bin的操作
4.3 配置编译工具
在这里插入图片描述
配置内容格式为:objcopy.exe所在位置 -O binary elf文件所在位置 生成bin文件的位置,如:
C:\Program Files (x86)\EmBitz\1.11\share\em_armgcc\arm-none-eabi\bin\objcopy.exe -O binary E:\ums312_sensorhub\7_5_sh_driver\7_5_sh_driver\bin\Release\7_5_sh_driver.elf E:\ums312_sensorhub\7_5_sh_driver\7_5_sh_driver\bin\Release\7_5_sh_driver.bin
在这里插入图片描述
4.4 再次点击编译就可以发现重新生成elf文件后会同时生成bin文件

第五章 动态驱动编译及二进制bin文件

动态驱动的编译就是为了生成bin文件,但以上工程,编译了地磁的驱动,现在需要将光距感的驱动加入
1、基本原理:光距感和地磁都有patch_table_sensor.c文件,且作用都是实现了overlay_types.h中定义的结构体struct patch_table_sensor中的函数,只要将patch_table_sensor.c文件内容进行整合就行,实现完整的struct patch_table_sensor dynamic_driver_interface结构体
2、注意名称的对应关系,否则无法使用
在这里插入图片描述
3、重新编译,就可以生成具有包含了地磁和光距感功能的bin文件

第六章 opcode驱动代码

6.1 配置Sensor型号

路径:device/sprd/(平台名)/(工程名)/module/sensor/md.mk
示例:
以UMS512平台为例,路径为device/sprd/sharkl5Pro/ums512_1h10/module/sensor/md.mk
SENSOR_HUB_ACCELEROMETER := lsm6dsl_ums512
SENSOR_HUB_GYROSCOPE := lsm6dsl
SENSOR_HUB_LIGHT := ltr578als ltr553als
SENSOR_HUB_MAGNETIC := akm09918_ums512
SENSOR_HUB_PROXIMITY := ltr578als
SENSOR_HUB_PRESSURE := null
说明:
赋值的名字需与opcode文件名中的(Sensor型号)一致。
赋值null表示不支持此类型Sensor。
同类型Sensor,如需兼容多个型号,型号以空格隔开,如上面LIGHT所示,同时兼容ltr578als和ltr553als。

6.2 增加对应Sensor参数配置文件(opcode)

路径:vendor/sprd/modules/sensors/libsensorhub/ConfigSensor/(Sensor类型)/
在路径中增加(Sensor类型)_(Sensor型号).cpp文件。
示例:
以ums512_1h10工程添加加速计lsm6dsl为例,增加文件:
vendor/sprd/modules/sensors/libsensorhub/ConfigSensor/accelerometer/accelerometer_lsm6dsl_ums512.cpp
说明:(Sensor型号)需与device路径下的工程配置中的Sensor类型赋值一致。

6.3 注册opcode接口

路径:vendor/sprd/modules/sensors/libsensorhub/ConfigSensor/
示例:
以加速度计lsm6dsl为例。
• 在SensorHubOpCodeExtrator.h中增加以下代码:
extern void SensorHubOpcodeRegisterAccelerometer_lsm6dsl();
• 在SensorHubOpCodeExtrator.cpp中增加以下代码:
#ifdef SENSORHUB_WITH_ACCELEROMETER_lsm6dsl
strcat(accelerometer_list, “accelerometer_lsm6dsl,”);
SensorHubOpcodeRegisterAccelerometer_lsm6dsl();
#endif

6.4 配置Native MMI工模菜单

如使用展锐提供的关机工模和工厂板级自动化测试方案,需要对工模以及bbat需支持的测试项进行配置。如对UMS512平台
ums512_1h10工程进行配置,此工程支持加速计、陀螺仪、地磁、光感、距感。在下述文件中,将支持的配置项置1,不支持的置0。 • device/sprd/sharkl5Pro/ums512_1h10/module/engpc/prodnv/PCBA.conf
• device/sprd/sharkl5Pro/ums512_1h10/module/engpc/prodnv/BBAT.conf
示例:
31 1 ACCSOR
表示支持加速计功能测试
32 1 MAGSOR
表示支持对地磁传感器的功能测试
36 0 PRESSOR
表示不支持对气压计的测试
4.配置Native MMI工模菜单
说明:其他Sensor相关英文简写含义如下,请根据实际情况仿照上述示例进行配置。 • GYRSOR:陀螺仪功能测试
• LSENSOR:光感功能测试
• PXYSOR:距感功能测试
• CALI_ACCOSOR:加速计校准
• CALI_GYRSOR:陀螺仪校准
• CALI_MAGSOR:地磁校准(暂未使用) • CALI_PROSOR:距感校准
• CALI_LSOR:光感校准

6.5 拷贝动态加载bin

如果使用了动态加载驱动,需要在编译阶段将已经编译好的动态加载驱动bin拷贝到$(TARGET_COPY_OUT_VENDOR)/firmware/目录,
并改名为EXEC_CALIBRATE_MAG_IMAGE。
示例:
ums512_1h10工程配置中需要使用akm09918_cali_img_l5p.bin:
device/sprd/sharkl5Pro/ums512_1h10/module/sensor/md.mk

PRODUCT_COPY_FILES +=
vendor/sprd/modules/sensors/libsensorhub/ConfigSensor/calibration/mag_cali/akm09918_cali_img_l5p.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/EXEC_CALIBRATE_MAG_IMAGE

opcode移植请参考《33445_Android11.0SensorHub客制化指导手册V1.2.pdf》

第七章 代码提交记录

vendor/sprd/modules/sensors路径下:
在这里插入图片描述
device/sprd/sharkl5路径下:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

紫光展锐驱动之sensorhub调试 的相关文章

  • sqlServer 常用查询语句

    查询语句 select 字段 from 表名 where 条件 select 字段 from 表名 where 字段 like 值 select distinct 字段 from 表名 排序查询 select 字段 from 表名 wher
  • 金山卫士开源软件之旅(九) KUI高级界面(列表控件、树控件例子、超文本、网页控件)

    转载自 http blog csdn net b2b160 article details 6275839 reply 注意 作者的例子及代码是基与上一版本的金山库 XML的语法及有些API名字不一样 本篇开始介绍比较复杂的界面应用了 界面
  • MySQL -- 获取某一字段数据的后几位! (SUBSTRING)

    select SUBSTRING id 3 from user 取id字段后三位字符 select SUBSTRING id 3 from user 从左开始第3位取 包括第三位
  • 文本标注平台 doccano 安装教程

    doccano简介 doccano 是一个开源的文本注释工具 它为文本分类 序列标记和序列到序列任务提供注释功能 因此 可以为情感分析 命名实体识别 文本摘要等创建标记数据 只需创建一个项目 上传数据并开始注释 安装 本文是基于window
  • HMM的学习

    20201012 0 引言 在学习 异常点检测 这本书的时候 在第十章的内容 离散数据的异常检测 记录中 涉及到隐马尔可夫模型 HMM 的学习 本篇文章具体记录HMM的学习过程 因为 异常点检测 书中关于这部分内容过于简短 本文主要学习文章
  • 有序单链表转换成二叉平衡搜索树

    题目 Given a singly linked list where elements are sorted in ascending order convert it to a height balanced BST 关键词 有序单链表
  • hibernate 注解 ,视图无主键,怎么配置联合主键

    我之前用myeclipse 反向生成了2个pojo 但是hql查询有问题 生成的类 Service类 我传入一个值查询的时候 这好像是我底层的 sessionFactory getCurrentSession createQuery hql
  • decimals数据格式化

    文章目录 decimals数据格式化 1 保留小数 1 1 iOS 2 去除小数点后多余的 0 2 1 iOS 2 2 C decimals数据格式化 格式化数据 以便移动端UI显示 1 保留小数 无小数部分 则保留整数 有小数部分保留两位
  • soul 网关源码解析

    一 soul网关引入的依赖分析 从上图可以看到我红线划分五个依赖区域 1 soul common包 这里不是很重要 我们大概看一下他的作用就好了 从上图中可以看出 这个包里主要定义了一个常量 枚举类 配置类 自定义的DTO对象 2 soul
  • CSS背景靠右对齐,并且背景图片右边刘10px

    margin right 10px float right 或者 Background Image url 图像路径 X坐标 Y坐标 no repeat 或者 padding right 10px float right
  • Qt -- 14Lambda表达式和信号功能

    视频学习链接 https www bilibili com video BV1g4411H78N p 14 在Qt中 使用Lambda表达式配合信号使用 非常方便 Lambda表达式是C 11中最重要的新特性之一 在QT5 4 包括 以前的
  • 从零开始学前端(三)

    上一篇我们已经写了一个带图片的网页 我们接着练一下其他的常用标签 声明为 HTML5 文档 元素是 HTML 页面的根元素 元素包含了文档的元 meta 数据 如 定义网页编码格式为 utf 8
  • 2023面试真题之浏览器篇

    人生当中 总有一个环节 要收拾你一下 让你尝一尝生活的铁拳 大家好 我是柒八九 今天 我们继续2023前端面试真题系列 我们来谈谈关于浏览器的相关知识点 如果 想了解该系列的文章 可以参考我们已经发布的文章 如下是往期文章 文章list 2
  • Conflux Studio 安装教学

    在 Conflux Studio 详解 中 烤仔从安装 教程 功能预览三个方面向大家介绍了 Conflux Studio 本次 由黑曜石实验室的 CEO Phil 向大家展示如何使用 Conflux Studio 进行一个完整的 Confl
  • 使用jenkins进行项目部署

    前言 由于近期接手了前端的项目 在项目打包部署的时候 手动操作构建打包部署等等步骤非常繁琐 所以自己尝试使用jenkins帮助自己解决这一烦恼 之前有用过 但只是使用而已 这次借机自己搭建配置一下 本以为很简单但是在自己使用的过程也多多少少
  • DCMM GBT 36073-2018 数据管理能力成熟度评估模型(Word版)

    ICS 35 240 70 L 67 中华人民共和国国家标准 GB T 36073 2018 数据管理能力成熟度评估模型 Data management capability maturity assessment model 2018 0
  • QT::槽函数关联的三种方式

    1 第一种方法 首先在头文件中定义 private slots void show l 在 cpp中进行connect QtGuiApplication3 QtGuiApplication3 QWidget parent QMainWind
  • C与C++的不同--------extern

    extern可以置于变量或者函数前 以表示变量或者函数的定义在别的文件中 提示编译器遇到此变量和函数时在其他模块中寻找其定义 另外 extern也可用来进行链接指定 C 语言的创建初衷是 a better C 但是这并不意味着C 中类似C语

随机推荐

  • 分布式MySQL数据库TDSQL架构分析

    分布式MySQL数据库TDSQL架构分析 发表于 11小时前 次阅读 来源 程序员电子刊 0 条评论 作者 雷海林 MySQL TDSQL 腾讯 架构 width 22 height 16 src http hits sinajs cn A
  • 区块链平台开发

    太晚了 明天写
  • MVCC 脑图 数据库事务并发版本控制

    学习MySQL MVCC时做的脑图 记个笔记
  • 来了来了,2023年某中大厂真实面经!

    300万字 全网最全大数据学习面试社区等你来 本篇文章的面经是我辅导的一个同学的真实面试经历 2023年校招的宝子们拿走快看 第一个面经来自某头部大厂 1 做过的项目细节和遇到的问题 30分钟 所以说大家要对简历中的项目细节了如指掌 2 实
  • 如何在一个vue项目中集成electron框架

    将electron框架集成到vue文件中 不改变vue文件的原有结构 1 在vue文件中安装electron框架 运行代码 vue add electron builder nde为v16的 electron版本一般选择 electron
  • WSL2 使用桥接网络(不使用代理,局域网可独立IP访问)

    1 一切开始之前首先需要启动 WSL 直接在命令行运行运行 wsl 即可 这样 WSL 的网卡才会被自动创建出来 2 查看 网卡 管理员权限运行 PowerShell 运行 Get NetAdapter获取所有的网卡信息 注意这里的网卡不能
  • Using fork in Perl to spread load to multiple cores

    原文链接 https perlmaven com fork If you have a big task to do that needs a lot of computation but can be split up in severa
  • 【华为OD机试真题 JAVA】素数之积

    JS版 华为OD机试真题 JS 素数之积 标题 素数之积 时间限制 1秒 内存限制 262144K 语言限制 不限 RSA加密算法在网络安全世界中无处不在 它利用了极大整数因数分解的困难度 数据越大 安全系数越高 给定一个32位正整数 请对
  • 熔断机制-HYSTRIX

    一 问题产生 雪崩效应 是一种因服务提供者的不可用导致服务调用者的不可用 并将不可用逐渐放大的过程 正常情况下的服务 某一服务出现异常 拖垮整个服务链路 消耗整个线程队列 造成服务不可用 资源耗尽 形成过程 1 服务提供者不可用 a 硬件故
  • GPT-4掀起智能革命浪潮,AI风口下将涌现哪些新机遇?

    本文已同步发表至公众号 https mp weixin qq com s kTMhMZQ nfIbbeeXLnDeyA 编辑 AGI之心 3 月 15 日 OpenAI 发布 GPT 4 多模态大模型 支持文本和图像输入 相比前段时间大火的
  • AttributeError: ‘Namespace‘ object has no attribute ‘use_pdserving‘

    问题描述 按照文档安装 运行paddleocr的 demo的时候报这个错 AttributeError Namespace object has no attribute use pdserving 但是我用命令行能跑出来 解决办法 在pa
  • openwrt安装和使用minicom

    opkg list先看一下软件源里面有没有minicom包 有的话就直接安装 opkg install minicom 安装完后执行minicom v查看版本信息确认是否安装成功 安装完成后 把USB串口设备插入到路由器USB口 我用的是p
  • 只出现一次的数字python--只求和?(简单到偷懒)

    对于刚开始接触python小白去刷算法题老想偷懒 想看算法 等等大神 还没学会 哈哈哈哈 水一篇 简单到应该不用加备注 嘿嘿嘿 给定一个非空整数数组 除了某个元素只出现一次以外 其余每个元素均出现两次 找出那个只出现了一次的元素 class
  • 防盗报警系统功能简述

    周界防护系统主要是一些探测设备组成 利用现代科技的声 光处理技术 在第一线感知各种破坏 和犯罪行为 减少犯罪的几率 其主要的器材是红外对射探头 红外对射探头全名叫 光束遮断式感应器
  • 简单聊聊MySQL临时表(TEMPORARY TABLE)

    目录什么的也不需要 一 什么是临时表 二 临时表有哪些类型 1 内部临时表 2 外部临时表 三 对外部临时表说两句 四 执行验证 一 什么是临时表 MySQL临时表在很多场景中都会用到 MySQL内部在执行复杂SQL时 需要借助临时表进行分
  • IT项目管理-分析校园人脸识别门禁系统的可行性

    IT项目管理 分析校园人脸识别门禁系统的可行性 文章目录 IT项目管理 分析校园人脸识别门禁系统的可行性 系统描述 分析 业务 组织 技术 总结 系统描述 校园人脸识别门禁系统主要将人脸识别技术应用于校园门禁中 不同于传统刷卡门禁系统 该系
  • 第8章 Linux文件类型及查找命令实践

    第8章 Linux文件类型及查找命令实践 8 1 Linux文件属性概述 在Linux系统中 文件或目录的属性主要包括 索引节点 Inode 文件类型 权限属性 链接数 所归属的用户和用户组 最近修改时间等内容 执行ls lhi命令可以显示
  • STM32/GD32单片机防止程序克隆盗版解决办法

    1 目的 解决产品在市场流通过程中被电路板抄板 程序克隆 以各种手段窃取别人的知识产权 2 解决方案 1 在程序中处理 在程序每次上电运行时 先获取1次芯片唯一ID缓存在int GetID 10 数组中 然后在Flash特定存储区位置读出
  • 史上最强的 QML 思维导图

    作者 一去 二三里 QQ 技术交流群 242790253 个人微信 iwaleon 加我微信 邀请入 500 人微信群 微信公众号 高效程序员 这是一份史上最强 最高清 最好用的 QML 思维导图 所有内容均来自专栏 细说 QML 全新的
  • 紫光展锐驱动之sensorhub调试

    第一章 平台及硬件信息简介 本文档基于ums312 T310 Android 11 sensorhub架构 sensor的硬件接口为i2c1 该平台目前不支持spi 第二章 紫光展锐的移植文档 第三章 sensor厂家提供的代码 代码在共享