如何portingADSP中的sensor
来源:互联网 发布:怎么查看服务端口 编辑:程序博客网 时间:2024/06/07 10:30
ADSP sensor overview
在初略介绍sensor的时候,就有讲到sensor的架构,在此继续将其具体化,来看看高通的sensor架构。
我们可以通过下图看具体sensor是如何进行运作的。
该图我们可以非常明显地看到Sensor通过I2C或者是SPI将数据发到Sensor Driver中,drivers通过device driver framework将数据包装后发给Sensor Manager,然后通过共享内存的方式发给上层。作为一个BSP,当然我所做的是具体来分析adsp这部分的问题了。
how to porting new sensor driver
基本缩写
SSC: Snapdragon Sensors Core
QMI: Qualcomm Messaging Interface
IDL: Interface description language
CTS: Compatibility Test Suite
SAM: Sensors Algorithm Manager
openSSC: SSC Vendor Ecosystem
SSI: sensor single image
如何集成一个新的sensor driver
在这里我提供我手上高通提供的文档,该文档详细描述了如何进行porting的重要信息。
下面我将通过这个文档来详细描述如何进行Porting。
声明驱动程序的入口函数
在fwcode中qcom_firmware\ADSP.8953.2.8.2\adsp_proc\Sensors\dd\qcom\inc目录下找到sns_dd.h,添加声明。
如
- extern sns_ddf_driver_if_s sns_dd_mpu6515_if;
在fwcode中qcom_firmware\ADSP.8953.2.8.2\adsp_proc\Sensors\dd\qcom\src添加厂商给的code。并更新qcom_firmware\ADSP.8953.2.8.2\adsp_proc\Sensors\dd\qcom\build\dd_qcom.scons。
如:
在src中添加sns_dd_mpu6515.c、sns_dd_mpu6515_ext.c、 sns_dd_mpu6515_selftest.c,需要在dd_qcom.scons的DD_SOURCES中添加
- "${BUILDPATH}/sns_dd_mpu6515.c",
- "${BUILDPATH}/sns_dd_mpu6515_ext.c",
- "${BUILDPATH}/sns_dd_mpu6515_selftest.c",
同时要配置编译档案进行匹配声明。
在qcom_firmware\ADSP.8953.2.8.2\adsp_proc\Sensors\build\Sensors.scons申明config名称。
- env.Append(CPPDEFINES = ["CONFIG_SUPPORT_MPU6515"])
生成UUID等待匹配
那么如何生成UUID呢?UUID在线生成器拿去不谢。生成后如何使用呢?
请在qcom_firmware\ADSP.8953.2.8.2\adsp_proc\Sensors\common\inc\sns_reg_common.h中
- #define SNS_REG_UUID_MPU6515 \
- {0xa3,0x87,0x37,0xc5,0x50,0x03,0x43,0xe9,0x84,0x9c,0x6c,0xfb,0xc1,0xaa,0x37,0xe4}
此时adsp已经基本正常porting完成了。
openSSC层更新config档
在vender\qcom\proptery\sensors\dsps\reg_defaults中更新sensor_def_qcomdev.conf档是至关重要的。
在文档中有一张表详细藐视了config档的所代表的意思。
此时UUID就要用上了。
- 2000 1 0x00010001
- 2001 2 0x00010001
- # SSI SMGR Cfg 0: MPU6881 ACCEL INT {0x68,0x81,0x46,0x7b,0x75,0x75,0x45,0xcc,0xad,0x20,0x48,0x52,0x42,0xae,0x68,0x81}
- 2002 0xcc4575757b468168 0x00010001 #UUID
- 2003 0x8168ae42524820ad 0x00010001 #UUID
- 2004 10000 0x00010001 #off_to_idle
- 2005 10000 0x00010001 #idle_to_ready
- 2006 45 0x00010001 #gpio1
- 2007 1000 0x00010001 #reg_group_id
- 2008 0 0x00010001 #cal_grp_id
- 2009 4 0x00010001 #i2c_bus
- 2010 0x68 0x00010001 #i2c_address
- 2011 1 0x00010001 #sens_default
- 2012 0x80 0x00010001 #flags
如何生效
- adb root
- adb remount
- adb shell rm /system/etc/sensors/sensor_def_qcomdev.conf
- adb push sensor_def_qcomdev.conf /system/etc/sensors/sensor_def_qcomdev.conf
- adb shell chmod 644 /system/etc/sensors/sensor_def_qcomdev.conf
- adb shell rm /persist/sensor/sns.reg
- adb shell sync
- adb reboot
- 如何portingADSP中的sensor
- 如何portingADSP中的sensor
- 如何portingADSP中的sensor
- 如何使MID中的G-Sensor起效果
- Sensor
- Sensor
- sensor
- sensor
- SENSOR
- sensor
- 根据硬件模组上如何sensor方向
- 如何估算MIPI Sensor需要几个lanes
- Sensor在Linux内核中的驱动分析
- Android sensor架构(一)应用如何使用sensor(and5.1)
- Android sensor架构(一)应用如何使用sensor(and5.1)
- Android sensor架构(一)应用如何使用sensor(and5.1)
- 关于sensor在android系统原生应用中的使用(从应用层面验证sensor移植)
- 如何强制禁用Android的Sensor方向感应器
- ListView多条目加载
- c++实验4项目6
- Spark性能优化指南——高级篇
- MySQL的统计函数
- SSL 1072——砝码称重
- 如何portingADSP中的sensor
- 程序员的故事
- 使用git码云为unity版本控制1
- hdu 1698 Just a Hook(线段树)
- Java sdut acm 3869购物车
- LightOJ-1265-Island of Survival (概率dp)
- 2017.4.21 2^k进制数 思考记录
- 对所提取的ip进行有效性检测
- 内连接(inner join)