联发科 (MTK) sensor bring up
阅读原文时间:2022年06月04日阅读:1

MT6768平台

1.添加驱动文件

路径:vendor\mediatek\proprietary\tinysys\freertos\source\middleware\contexthub\MEMS_Driver\alsps

驱动.c   驱动.h  (以stk3321.c   stk3321.h为例)

2.添加硬件配置支持

路径:
vendor/mediatek/proprietary/tinysys/freertos/source/project/CM4_A/mt6768/P98980AA1/ProjectConfig.mk

CFG_stk3321_SUPPORT = yes //修改内容

CFG_stk3321_SUPPORT = yes
CFG_CM36558_SUPPORT = yes

3.添加硬件配置

路径:
vendor/mediatek/proprietary/tinysys/freertos/source/project/CM4_A/mt6768(根据项目定)/P98980AA1/cust/alspscust_alsps.c

#ifdef CFG_STK3321_SUPPORT
   {
       .name = "stk3321",               //驱动名字,以驱动代码的.c文件名为准
       .i2c_num    = 0,                 //使用i2c选0,spi选1
       .i2c_addr = {0x48, 0},           //使用i2c时是i2c地址,使用spi时为0,即{0, 0}
       .polling_mode_als = 1,           //0为轮询,1为中断
       .als_level  = {0, 328, 861, 1377, 3125, 7721, 7767, 12621, 23062, 28430, 33274, 47116, 57694, 57694, 65535},       //光感采样值范围
       .als_value  = {0, 200, 320, 502, 1004, 2005, 3058, 5005, 8008, 10010, 12000, 16000, 20000, 20000, 20000, 20000},      //光感采样值经过算法获得的上报值范围。
       .eint_num = 10,                 //中断脚
   },
#endif

4.添加编译配置

路径:
vendor/mediatek/proprietary/tinysys/freertos/source/project/CM4_A/mt6768(根据项目定)/platform /feature_config/chre.mk

ifeq ($(CFG_STK3321_SUPPORT),yes)
C_FILES  += $(SENDRV_DIR)/alsps/stk3321.c
endif                                   //注意放到对应传感器支持位置

5.分配空间(非必要,当代码量超过当前空间大小时将会报错,根据报错log改大小即可。)

路径:
vendor/mediatek/proprietary/tinysys/freertos/source/project/CM4_A/mt6768(根据项目定)/platform/Setting.ini

alsps:***        //原有大小足够就不用改,反之跟着需求修改

6.兼容配置

路径:vendor/mediatek/proprietary/tinysys/freertos/source/project/CM4_A/mt6768(根据项目定)/P98980AA1/inc/overlay_sensor.h

#define OVERLAY2  \
   OVERLAY_ONE_OBJECT(cm36558, cm36558)  \
    OVERLAY_ONE_OBJECT(stk3321, stk3321)         //特别注意,”\”为连接符,必不可少。

路径:
vendor/mediatek/proprietary/tinysys/freertos/source/project/CM4_A/mt6768(根据项目定)/P98980AA1/cust/overlay/overlay.c

void alspsOverlayRemap(void)
{
ALSPS_OVERLAY_REMAP_START
  ALSPS_OVERLAY_REMAP(cm36558);
ALSPS_OVERLAY_REMAP(stk3321);
ALSPS_OVERLAY_REMAP_END
   return;

7.特殊情况 (下面这一步基本不用自己做,厂商提供的驱动代码都写好了,万一没有,可以自己加)

路径:
vendor/mediatek/proprietary/tinysys/freertos/source/middleware/contexthub/MEMS_Driver/alsps/stk3321.c

/*
#ifndef CFG_OVERLAY_INIT_SUPPORT
MODULE_DECLARE(stk3321, SENS_TYPE_ALS, stk3321Init);
#else
#include "mtk_overlay_init.h"
OVERLAY_DECLARE(stk3321, OVERLAY_WORK_02, stk3321Init);
#endif
*/

8.遇到的问题

  1. 添加硬件配置时,如果协议是spi时,误将”.i2c_num”改为“.spi_num“,没有”.spi_num“这种写法,是根据值来判断使用的是哪个协议。
  2. I2c地址写错,当时因为项目资料i2c通讯规格书上的i2c地址为0x46, 但是实际上该传感器的数据手册却是0x48,所以导致i2c通讯失败,改正后通讯成功。
    (注:I2c通讯地址以IC数据手册为准)
  3. scp空间不足报错,根据log更改空间大小后编译通过。
  4. 兼容配置时overlay_sensor.h里添加驱动名字后没有添加连接符,导致编译报错,查看平台其它自带传感器配置添加后编译通过。
  5. 修改中断脚后却不生效,删掉out目录后重编生效。

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章