前提:mtk平台下的手机sensor
我们驱动移植sensor,代码移植完成,编译ok,接下来就是来验证sensor是否能够正常的工作,这也是我们移植的最终目的。好,那么问题来了,我们怎么验证它呢。这个就是接下来我要说的事。通过以下两点可得验证。
一, sensor是否校验
在我们遇到的sensor中需要校验的有p_sensor,g_sensor,gyro_sensor,m_snesor,下面我们挨个说一下,各个sensor是怎么校验的。
1, p_sensor
距离传感器,需要校验的ps_threshold_low,ps_threshold_high,这个在我们的dts中有写,而且在我们用到LTR559这个p_sensor 中有个动态的校准,所以基本上不需要你来校验。
2, g_sensor,gyro_sensor
这两个sensor 是需要我们重点讨论的,因为组装的原因,每台手机都需要对这两个sensor进行校准。
校准有两种方式
1)工厂模式的校准 这个具体怎么弄不清楚,所有就不说了
2)我们驱动自己校准是通过MTK提供的工具SP_MATE来实现的
在我们编译的out目录中有这个文件路径: \out\target\product\b50023_s1_mp\obj\CGEN\APDB_MT6735_S01_alps-mp-m0.mp1_W17.01
这个文件就是我们校验值暂时存放的地方后续会通过刷机把这些数据放到手机的nvram分区中(nvram分区存放audio,camera,sensor等校验的数据)。
使用SP_MATE打开APDB_MT6735_S01_alps-mp-m0.mp1_W17.01 这个文件,写入校验值,(具体流程看附录)
在开机log中搜索nvram_daemon (这个就是把数据从NVRAM分区中读取校验值通过IOCTL写到驱动中的MTK提供的一个程序) 我们可以通过在驱动代码xxxxx_unlocked_ioctl中添加相应的log信息来看是否调用,来验证校验功能是否正常。
3, m_sensor
m_sensor的校验比较特殊,在手机开机中会开启一个m_sensor的校验程序(只要有用到m_sensor时这个程序就会启动)
它是实时读取m_sensor中的数据,校验过后再写入到驱动中,写入到驱动中不止有sensor数据还有一个status位,我们可以通过status位的0,1,2,3这个四个数来判断m_sensor的数据是否校准。
它的校准数据是写在/data/misc/magpara 这个文件在恢复出厂设置后会被清除,所以需要重新校准,
二, 读到的sensor数据是否有效
这个需要SENSOR相关的apk来来验证 sensor厂商都有提供的
附录:
SP_MATE工具的使用(声明一下这是在mtk平台下的工具)
1, 开始界面
2, 连接
注意事项:手机需要关机,点击reconnect
连接连接成功手机界面会出现 mate mode 提示
成功后的图片
3,选择 APDB_MT6735_S01_alps-mp-m0.mp1_W17.01 (这个就是手机中存放校准信息的文件) 文件
点击action 选择open nvramdatabase ,然后选择我们所需的APDB_MT6735_S01_alps-mp-m0.mp1_W17.01文件
4, 查看数据
选择 ap nvram editor
选择要读取的文件点击read form nvram
5,sensor校验
选择 sensor tool