概述
第一章 平台及硬件信息简介
本文档基于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,打开文件所在位置,找到如下图所示文件
4.2 打开Embitz软件,点击project->Build Options ->选择 Pre/post build steps 中的Post build steps,将 disable 置为 always
4.3 配置编译工具
配置内容格式为:objcopy.exe所在位置 -O binary elf文件所在位置 生成bin文件的位置,如:
C:Program Files (x86)EmBitz1.11shareem_armgccarm-none-eabibinobjcopy.exe -O binary E:ums312_sensorhub7_5_sh_driver7_5_sh_driverbinRelease7_5_sh_driver.elf E:ums312_sensorhub7_5_sh_driver7_5_sh_driverbinRelease7_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路径下:
最后
以上就是大意外套为你收集整理的紫光展锐驱动之sensorhub调试第一章 平台及硬件信息简介第二章 紫光展锐的移植文档第三章 sensor厂家提供的代码第四章 动态驱动的编译工具及配置第五章 动态驱动编译及二进制bin文件第六章 opcode驱动代码第七章 代码提交记录的全部内容,希望文章能够帮你解决紫光展锐驱动之sensorhub调试第一章 平台及硬件信息简介第二章 紫光展锐的移植文档第三章 sensor厂家提供的代码第四章 动态驱动的编译工具及配置第五章 动态驱动编译及二进制bin文件第六章 opcode驱动代码第七章 代码提交记录所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复