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

(FAE给的驱动有些许问题)

路径:
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目录后重编生效。

联发科 (MTK) sensor bring up的更多相关文章

  1. MTK 虚拟 sensor bring up (pick up) sensor2.0

    pick up bring up sensor2.0 1.SCP侧的配置 (1) 放置驱动pickup.c (2) 添加底层驱动文件编译开关 (3) 加入编译文件 (4) 增加数据上报方式 (5)修改 ...

  2. MTK 虚拟 sensor bring up (pick up) sensor1.0

    pick up bring up sensor1.0 1.pick up对比 2.SCP 1.添加驱动文件 2.添加编译环境(打开开关) 注:编译过程中如果显示内存不够 3.修改底层数据上报方式 3. ...

  3. 高通(QCOM)sensor bring up

    高通7150平台 1.添加驱动文件 2.添加编译 3.配置json文件 4.高通默认配置 5.部分sensor外挂电源 6.遇到的问题 1.添加驱动文件 路径:adsp_proc/ssc/sensor ...

  4. MTK sensor 架构

    mtk architactureAP和scp 两部分组成从上到下的整体的结构是 app -->framerwork-->native-->hal -->kernel --> ...

  5. MTK 平台sensor arch 介绍-scp

    架构介绍 路径:vendor/mediatek/proprietary/tinysys/scp 1.[build]编译相关 2.[driver]scp 的driver,I2C,power,eint 3 ...

  6. 【转载】wifi一键配网smartconfig原理及应用

    物联网给我们又提供了一种窃取WiFi密码的好方式:让智能设备主动断线. 同时也提供一种让智能设备连接到恶意WiFi的方式:设备一键配置功能时疯狂广播恶意WiFi的信息. 转自:http://blog. ...

  7. 06_android虚拟机介绍

    分辨率不用选太高,否则会占用太大内存.你选高分辨率一跑起来会干掉你的500多MB的内存.1/8内存就没了.百分之97%或者是98%的设备都是ARM CPU.ARM自己不生产CPU,它生产的是一个标准的 ...

  8. MTK 平台sensor arch 介绍-hal

    MTK 平台sensor arch 介绍-hal 一:整体框架 二:具体流程简介 AP-HAL: (1)init & control flow 我们以前文的originchannel 的 ac ...

  9. 浅谈Android高通(Qualcomm)和联发科(MTK)平台

    一款CPU好不好是要从多个方面考虑的,并不是说简简单单看一个主频.几个核心数就完了,更重要的是它的综合实力到底有多强,这里面当然也会牵扯到价格问题,性能相似当然是便宜的获胜,这是毋庸置疑的. 事实上, ...

随机推荐

  1. 【Android开发】【数据库】Realm For Android

    目录 1.Realm简介 2.环境配置 3.初始化Realm 4.创建实体 5.增 6.删 7.改 8.查 9.异步操作 10.数据库数据更新监听 11.json转对象,插入数据库 12.Demo地址 ...

  2. 给大家补充一个结构体的例子:下面TwoNumber就是一个形式上的结构体

    给大家补充一个结构体的例子:下面TwoNumber就是一个形式上的结构体: class TwoNumber {     int num1;     int num2; } public class T ...

  3. PAT1018 锤子剪刀布

    大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入 ...

  4. MySQL8.0官方文档学习

    InnoDB架构 下面的架构里只挑选了部分内容进行学习 内存架构(In-Memory Structures) Buffer Pool Buffer Pool是内存中的一块区域,InnoDB访问表和索引 ...

  5. web.xml 配置 contextConfigLocation

    web.xml中classpath:和classpath*:  有什么区别? classpath:只会到你的class路径中查找找文件; classpath*:不仅包含class路径,还包括jar文件 ...

  6. 基于File NIO写的一个文件新增内容监控器

    基于File NIO写的一个文件新增内容监控器 需求说明 监控一个文件,如果文件有新增内容,则在控制台打印出新增内容. 代码示例 FileMoniter文件监控器类 package com.black ...

  7. SpringCloudAlibaba注册中心与配置中心之利器Nacos实战与源码分析(上)

    不断踩坑并解决问题是每个程序员进阶到资深的必要经历并以此获得满足感,而不断阅读开源项目源码和总结思想是每个架构师成长最佳途径.本篇拉开SpringCloud Alibaba最新版本实战和原理序幕,以工 ...

  8. AngularJS ui-router 用resolve、service预先加载数据写法,属于优化性能方面吧

    AngularJS的service怎么声明此处就不再赘述,下面的例子是ui-router中使用service的实现代码 $stateProvider.state('myState', { url: & ...

  9. javaWeb代码整理01-mysql

    jar包: maven坐标: <dependency> <groupId>mysql</groupId> <artifactId>mysql-conne ...

  10. Go 语言接口及使用接口实现链表插入

    @ 目录 1. 接口定义 1.1 空接口 1.2 实现单一接口 1.3 接口多方法实现 2. 多态 2.1 为不同数据类型的实体提供统一的接口 2.2 多接口的实现 3. 系统接口调用 4. 接口嵌套 ...