本文主要是介绍adsp中地磁矫正库的使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在adsp中,地磁的矫正需要用到第三方的矫正库,那么如何才能正确使用呢?
On msm8974 platform, you can try to enable qualcomm mag calibration lib:
To enable Qcom mag cal
- Set registry item 3801 to 1
- Set the flag “ro.qc.sensors.smgr_mag_cal_en=true”
To confirm whether QMagCal is available, please check whether you have this header file: Sensors/scm/algo/inc/qmag_cal.h
#define AKMD8963_LIB_PATH "/vendor/lib/libAKM8963.so"
{ SNS_REG_UUID_AKM8963, AKMD8963_LIB_PATH, &mag_cal_akm_sam_init },
以上是以AKM8963为例,高通给的回复。
也就是说,我们首先需要把库文件按照一定的名字,发到特定的目录下面。这个名字和目录在代码中有定义,不过很遗憾,这部分我们没有源码。每个UUID对应一个库文件路径,这个UUID我们已经在sns_reg_common.h这个文件中定义了,只要在高通认证过的芯片,都在这里定义了的。
再然后就是使能了,高通默认的都是使能了的,registry item 3801设置为1,不过 ro.qc.sensors.smgr_mag_cal_en这个flag我没有找到,可能源码没有开放。
如果库文件没有读取成功,我们可以看到如下的log:
E/Sensors ( 445): mag_cal.c(1588):mag_cal_sam_init: Failed to init mag cal lib for UUID(1) d4b21999-dd43-4e9e
E/Sensors ( 445): mag_cal.c(1593):mag_cal_sam_init: Failed to init mag cal lib for UUID(2) b6d8-9e68015a5c35
E/Sensors ( 445): sns_sam.c(4349):Failed to register algorithm service 16 with SAM
adsp驱动的调试:
如果是高通代码已经包含的驱动,那么我们调试就非常的方便了,只需要更改sensor_def_qcomdev.conf这个文件里面的内容就可以了
这里面定义了I2C地址,中断管脚,一些参数和UUID等,然后push进去,不过要记得删除sns.reg文件,然后重启就可以了。
具体的分析后面进行。。。
这篇关于adsp中地磁矫正库的使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!