[Android][sensor]物理sensor bring up流程
物理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流程相关推荐
- Android传感器Motion Sensor开发实验
目录 一.实验目的 二.实验要求 三.实验原理 (一)第一次实验 1.JDK(Java Development Kit) 2.Android SDK 3.AVD(Android Virtual Dev ...
- Android感应检测Sensor(简单介绍),Android系统面试题
Sensor 说明 Sensor.TYPE_ACCELEROMETER 加速度感应检测 Sensor.TYPE_MAGNETIC_FIELD 磁场感应检测 Sensor.TYPE_ORIENTATIO ...
- android 方向传感器Sensor或指南针罗盘研究
目前获取方向角度的方法有两种: 1.目前谷歌建议使用SensorManager中Sensor.TYPE_ACCELEROMETER和Sensor.TYPE_MAGNETIC_FIELD SensorM ...
- android power 按键,Android Framework层Power键关机流程(一,Power长按键操作处理)
一:Android处理Power按键长按操作 在Framework层中,Android4.x对Power键(KeyEvent.KEYCODE_POWER)的操作,我们从PhoneWindowManag ...
- android power键测试,Android Framework层Power键关机流程(一,Power长按键操作处理)...
一:Android处理Power按键长按操作 在Framework层中,Android4.x对Power键(KeyEvent.KEYCODE_POWER)的操作,我们从PhoneWindowManag ...
- Android存储设备(U盘,SD卡)状态监测(《Android 2.3 SD卡挂载流程浅析1234567)
我们是以DV6300-T的平台来做测试的,发现有2种方式来检测android中external media(包括SD卡,USB)的状态. 一种是使用StorageListener监听,还有一种是使用广 ...
- 高通LCD bring up流程
高通LCD bring up流程 前言 kernel 添加LCD的dtsi 将屏的dtsi放到平台的dtsi中 电压配置 lk 添加屏的.h文件 Panel configuration Panel r ...
- 【Android 高性能音频】Oboe 开发流程 ( Oboe 音频帧简介 | AudioStreamCallback 中的数据帧说明 )
文章目录 一.音频帧概念 二.AudioStreamCallback 中的音频数据帧说明 Oboe GitHub 主页 : GitHub/Oboe ① 简单使用 : Getting Started ② ...
- 【Android 高性能音频】Oboe 开发流程 ( Oboe 完整代码示例 )
文章目录 一.GitHub 地址 二.Oboe C++ 代码 三.日志封装 四.Activity 代码 五.AndroidManifest.xml 配置文件 六.CMakeLists.txt 构建脚本 ...
最新文章
- 2009 Competition Highlights by ICPC Live
- 2017(秋)软工作业: (2)硬币游戏—— 代码分析与改进
- 用VS Code直接浏览GitHub代码 | 12.1K星
- java自学语法_Java自学笔记(一):基础知识
- Winform 打开下载的文件
- Hyperledger Fabric 1.0 实战开发系列 第二课 Fabric环境搭建
- SpringCloud OpenFeign 远程HTTP服务调用用法与原理
- c语言 获取系统版本,[原创]C/C++ 实现获取Windows操作系统版本信息
- Java软件低级错误:短路运算和非短路运算的区别
- 摄像头视频画面接入,使用iframe标签嵌入到页面中(海康威视、萤石)
- 屁孩君儿子讲解 2022 【例4.7】最小n值
- php配置站点报错403,phpstudy V8 报403错误怎么办
- 惠普暗影精灵7和联想小新pro16哪个好
- 华为正式发布“鸿蒙”,率先进行应用开发。
- [Angular实战网易云]——15、歌词渲染
- 4.Matplotlib多子图,文字和注释以及自定义坐标轴
- Leanback控件的item中存在可上焦子View时的寻焦逻辑处理
- python中datetime是什么意思_python中datetime的使用方法
- Linux 中 exit 的意思
- c语言实现向量,如何在C中实现向量
热门文章
- linux打包解压工具,打包压缩、解压缩工具详解
- 【深度学习-机器学习】分类度量指标 : 正确率、召回率、灵敏度、特异度,ROC曲线、AUC等
- Django毕业设计题目推荐电影推荐系统
- Halcon Qt 环境一次性配置
- python开发数据管理系统客户桌面_实践是最好的老师:给中级 Python 开发人员的 13 个项目构想...
- 新生儿取名:撩人于无形的女宝宝名字,任你挑选
- 快手小筷子机器人_快手小快机器人设置 苹果手机小快机器人怎么弄
- oracle怎样一次多选,如何在Apex Oracle中创建和使用多选列表?
- 网站使用CDN加速的5个优势
- CAD打印怎么布满图纸?