sensor兼容分析mtk
Sensor兼容性分析MTK 本文主要介绍了Sensor兼容性分析MTK的解决方案,涉及到MTK平台方案和高通平台方案两种实现方式。 一、MTK平台方案 背景:客户需要两种材料,一种类型的传感器可能来自两个不同的供应商。如果将这两个驱动程序放在SCP SRAM中进行自动检测,则会消耗SRAM。因此MTK解决方案在DRAM中定位两个驱动程序,SCP引导时加载一个驱动程序。 实现步骤: 1. load overlay scp image : emmc -> dram -> sram1),将程序代码从DRAM复制到SRAM,然后SCP运行加载程序。 2. SCP加载器将Tinysys通用代码从DRAM复制到SRAM、操作系统运行和传感器驱动初始化。 3. OverlayRemap复制sensor driver 1到SRAM部分,并进行硬件验证,如果失败,复制driver 2并进行验证,如果成功,映射下一个sensor类型。 如何添加overlay driver: 1. 在链接器脚本中添加对象【C3S项目】/vendor/mediatek/proprietary/tinysys/freertos/source/project/CM4_A/mt6765/ice/inc/overlay_sensor.h。 2. 在overloay对象中添加overloay声明。(这是在特定驱动程序中添加的)/vendor/mediatek/proprietary/tinysys/freertos/source/middleware/contexthub/MEMS_Driver/accGyro/sc7a20.c。 3. 在驱动程序中,在传感器初始化流中使用了同步SPI或I2C API/vendor/mediatek/proprietary/tinysys/freertos/source/middleware/contexthub/MEMS_Driver/accGyro/sc7a20.c使用同步API后会把芯片的chip_id赋值给rxData[1],然后判断chip_id是否等于SC7A20_WAI_VALUE,如果等于继续将init流程走完,如果不等于将释放各种资源,然后退出init函数接着remap下一个driver。 4. 在overlay.c中为load和init添加overlay重映射/vendor/mediatek/proprietary/tinysys/freertos/source/project/CM4_A/mt6765/ice/cust/overlay/overlay.c如果init失败将下载另一份driver到SRAM中init,依次进行。 二、高通平台方案 高通平台方案主要涉及到编译py脚本slpi_proc/ssc/build/ssc_static_lib_builder.py解析驱动文件的scons,生成到sns_static_sensors.c/sns_static_drivers.c{ sns_register_bmi3x0, 1, true}。 如何区分不同vendor ic? 1. 通过区分chip_id来判断是否和主板上安装的ic是否一致,一致返回true。 2. 代码会按照顺序依次走完各个sensor的notify even函数完成chip_di的检测,当检测到的chip id和芯片不对应时就会走下一个sensor的notify_event函数。 节点: /mnt/vendor/persist/sensors/registry/registry (json注册表文件解析后的路径) /vendor/etc/sensors/config (json配置文件) Sensor兼容性分析MTK解决方案主要涉及到MTK平台方案和高通平台方案两种实现方式,通过添加overlay driver和编译py脚本来实现传感器驱动的兼容性检测和加载。
- 粉丝: 8
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助