物理sensor bring up流程

物理sensor就是实体sensor,现实存在的、从硬件直接获取数据的sensor。
常见的物理sensor有:加速度acceleration、陀螺仪gyroscope、地磁magnetic、接近光proximity light、光感light、sar(specific absorption rate)、霍尔hall、气压计pressure等

以A器件lis2dw12为例

1.添加驱动文件

bp侧在adsp_proc/ssc/sensors/下新建文件夹lis2dw12

mkdir lisdw12
cd lisdw12

移植三方源码src于文件夹adsp_proc/ssc/sensors/lis2dw12内(有些FAE提供的源码会将.h文件放于inc里)

新建文件夹build

mkdir build
cd build

在adsp_proc/ssc/sensors/lis2dw12/build/ 下添加sns_lis2dw12.scons文件(可以生成目标文件,部分FAE不提供,可参照以下进行修改添加)

#====================================================================
#
# LIS2DW12 sensor implementation
#
# GENERAL DESCRIPTION
#    build script
#
# Copyright (c) 2022 - LIS2DW12 CO.,LTD.
# All Rights Reserved.
# Confidential and Proprietary - LIS2DW12 CO.,LTD.
#
#====================================================================
Import('env')
import os, inspectif ('SSC_TARGET_HEXAGON_MDSP' in env['CPPDEFINES']):Return()lis2dw12_island_enable = Falseif 'SNS_ISLAND_INCLUDE_LIS2DW12' in env:lis2dw12_island_enable = Trueclean_pack_list = []
if 'USES_SSC_STATIC_LIB_BUILDER' in env:if ('SSC_TARGET_HEXAGON' in env['CPPDEFINES']):env.AddSSCSU(inspect.getfile(inspect.currentframe()),register_func_name = "sns_register_lis2dw12",binary_lib = False,clean_pack_list = clean_pack_list,cflags = ['-Wno-sign-compare', '-Wno-enum-compare'],add_island_files = lis2dw12_island_enable,registration_cnt = 1,diag_ssid = "MSG_SSID_SNS_SENSOR_EXT")

2.bp侧添加编译

adsp_proc/ssc/chipset/sdm439/por.py中添加物理器件的编译,添加sns_lis2dw12

if "YES" == os.getenv('BUILD_FOR_ALPHA'):include_sensor_vendor_libs.extend(['sns_pah_common', 'sns_wrist_pedometer','sns_wrist_tilt', 'sns_arw','sns_t1000', 'sns_mir3da', 'sns_lis2dw12'])else:

注意:取消编译时不可直接注释掉器件,比如 /* , ‘sns_lis2dw12’ */ ,这会导致所有sensor驱动都挂载不上。

3.在bp侧添加.proto协议文件

在adsp_proc/ssc_api/pb/里添加.proto协议文件(文件由FAE提供)

4.bp侧编译

./build_modem.sh build adsp

./build_modem_projectname.sh adsp

生成的文件在adsp_proc/obj/xxx/xxx/system/etc/firmware/里

将该目录下所有文件push到机器的/firmware/image/里

可以用一下脚本文件 adsp_push.bat

adb root
adb wait-for-device
adb remount
adb wait-for-device
adb shell mount -o rw,remount /firmware
::adb shell rm /firmware/image/adsp*
adb push adsp\. /firmware/image
::adb shell rm /persist/sensors/sns.reg
adb shell sync
adb wait-for-device
adb reboot

其中,adsp文件夹与adsp_push.bat同目录,且adsp文件夹内为从adsp_proc/obj/xxx/xxx/system/etc/firmware/复制的全部文件

5.在ap侧添加.proto协议文件

在vendor/qcom/proprietary/commonsys-intf/sensors-see/ssc/proto/添加.proto协议文件

6.在ap侧hal层添加.cpp文件

在vendor/qcom/proprietary/sensors-see/sensors-hal/sensors/添加.cpp文件(通常由Qcom提供)

7.在ap侧添加配置

在vendor/qcom/proprietary/sensors-see/sensors-hal/framework/sensors_qti.h 添加sensor type

在vendor/qcom/proprietary/commonsys-intf/sensors-see/ssc/proto/ Makefile.am 添加.proto协议文件的编译

8.ap侧编译

export LC_ALL=C
source build/envsetup.sh
lunch
make sensors.ssc

编译生成out/target/product/project/vendor/lib/sensors.ssc.so,push到机器里

9.配置json文件

在vendor/qcom/proprietary/sensors-see/registry/config/msm8937里添加三方json文件sdm429w_lis2dw12_0.json

修改json文件使之适配

10.将json文件添加到机器中

编写脚本文件json_push.bat

adb root
adb wait-for-device
adb remount
adb wait-for-device
adb shell rm -rf persist/sensors/registry/registry/
adb shell mkdir persist/sensors/registry/registry
adb push json\. /vendor/etc/sensors/config/
::adb shell sync
adb reboot
pause

其中,json文件夹与json_push.bat同目录,且json文件夹内为修改好的json文件

11. 查看驱动是否加载成功,器件是否有值上报

adb shell dumpsys sensorservice

或者

adb shell ssc_sensor_info

若加载成功,查看是否有值上报:

工厂版本打开mmi单项测试,加速度测试,看是否有值

用户版本下载sensorlist.apk,看是否有值

[Android][sensor]物理sensor bring up流程相关推荐

  1. Android传感器Motion Sensor开发实验

    目录 一.实验目的 二.实验要求 三.实验原理 (一)第一次实验 1.JDK(Java Development Kit) 2.Android SDK 3.AVD(Android Virtual Dev ...

  2. Android感应检测Sensor(简单介绍),Android系统面试题

    Sensor 说明 Sensor.TYPE_ACCELEROMETER 加速度感应检测 Sensor.TYPE_MAGNETIC_FIELD 磁场感应检测 Sensor.TYPE_ORIENTATIO ...

  3. android 方向传感器Sensor或指南针罗盘研究

    目前获取方向角度的方法有两种: 1.目前谷歌建议使用SensorManager中Sensor.TYPE_ACCELEROMETER和Sensor.TYPE_MAGNETIC_FIELD SensorM ...

  4. android power 按键,Android Framework层Power键关机流程(一,Power长按键操作处理)

    一:Android处理Power按键长按操作 在Framework层中,Android4.x对Power键(KeyEvent.KEYCODE_POWER)的操作,我们从PhoneWindowManag ...

  5. android power键测试,Android Framework层Power键关机流程(一,Power长按键操作处理)...

    一:Android处理Power按键长按操作 在Framework层中,Android4.x对Power键(KeyEvent.KEYCODE_POWER)的操作,我们从PhoneWindowManag ...

  6. Android存储设备(U盘,SD卡)状态监测(《Android 2.3 SD卡挂载流程浅析1234567)

    我们是以DV6300-T的平台来做测试的,发现有2种方式来检测android中external media(包括SD卡,USB)的状态. 一种是使用StorageListener监听,还有一种是使用广 ...

  7. 高通LCD bring up流程

    高通LCD bring up流程 前言 kernel 添加LCD的dtsi 将屏的dtsi放到平台的dtsi中 电压配置 lk 添加屏的.h文件 Panel configuration Panel r ...

  8. 【Android 高性能音频】Oboe 开发流程 ( Oboe 音频帧简介 | AudioStreamCallback 中的数据帧说明 )

    文章目录 一.音频帧概念 二.AudioStreamCallback 中的音频数据帧说明 Oboe GitHub 主页 : GitHub/Oboe ① 简单使用 : Getting Started ② ...

  9. 【Android 高性能音频】Oboe 开发流程 ( Oboe 完整代码示例 )

    文章目录 一.GitHub 地址 二.Oboe C++ 代码 三.日志封装 四.Activity 代码 五.AndroidManifest.xml 配置文件 六.CMakeLists.txt 构建脚本 ...

最新文章

  1. 2009 Competition Highlights by ICPC Live
  2. 2017(秋)软工作业: (2)硬币游戏—— 代码分析与改进
  3. 用VS Code直接浏览GitHub代码 | 12.1K星
  4. java自学语法_Java自学笔记(一):基础知识
  5. Winform 打开下载的文件
  6. Hyperledger Fabric 1.0 实战开发系列 第二课 Fabric环境搭建
  7. SpringCloud OpenFeign 远程HTTP服务调用用法与原理
  8. c语言 获取系统版本,[原创]C/C++ 实现获取Windows操作系统版本信息
  9. Java软件低级错误:短路运算和非短路运算的区别
  10. 摄像头视频画面接入,使用iframe标签嵌入到页面中(海康威视、萤石)
  11. 屁孩君儿子讲解 2022 【例4.7】最小n值
  12. php配置站点报错403,phpstudy V8 报403错误怎么办
  13. 惠普暗影精灵7和联想小新pro16哪个好
  14. 华为正式发布“鸿蒙”,率先进行应用开发。
  15. [Angular实战网易云]——15、歌词渲染
  16. 4.Matplotlib多子图,文字和注释以及自定义坐标轴
  17. Leanback控件的item中存在可上焦子View时的寻焦逻辑处理
  18. python中datetime是什么意思_python中datetime的使用方法
  19. Linux 中 exit 的意思
  20. c语言实现向量,如何在C中实现向量

热门文章

  1. linux打包解压工具,打包压缩、解压缩工具详解
  2. 【深度学习-机器学习】分类度量指标 : 正确率、召回率、灵敏度、特异度,ROC曲线、AUC等
  3. Django毕业设计题目推荐电影推荐系统
  4. Halcon Qt 环境一次性配置
  5. python开发数据管理系统客户桌面_实践是最好的老师:给中级 Python 开发人员的 13 个项目构想...
  6. 新生儿取名:撩人于无形的女宝宝名字,任你挑选
  7. 快手小筷子机器人_快手小快机器人设置 苹果手机小快机器人怎么弄
  8. oracle怎样一次多选,如何在Apex Oracle中创建和使用多选列表?
  9. 网站使用CDN加速的5个优势
  10. CAD打印怎么布满图纸?