MT6768平台
- 1.添加驱动文件
- 2.增加硬件配置支持
- 3.添加硬件配置
- 4.添加编译配置
- 5.分配空间(不必要,当代码量超过当前空间大小时,会报错,根据报错log大小可以改变。
- 6.兼容配置
- 7.特殊情况 (下一步基本不用自己做,厂家提供的驱动代码都写好了,万一没有,可以自己加)
-
- (FAE给的驱动有些许问题)
- 8.遇到的问题
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.遇到的问题
- 添加硬件配置时,如果协议是spi时,误将”.i2c_num”改为“.spi_num“,没有”.spi_num“这种写法,是根据值来判断使用的是哪个协议。
- I2c地址写错,当时因为项目资料i2c通讯规格书上的i2c地址为0x46, 但是实际上该传感器的数据手册却是0x48,所以导致i2c通讯失败,改正后通讯成功。 (注:I2c通讯地址以IC数据手册为准)
- scp空间不足报错,根据log更改空间大小后编译通过。
- 兼容配置时overlay_sensor.h里添加驱动名字后没有添加连接符,导致编译报错,查看平台其它自带传感器配置添加后编译通过。
- 修改中断脚后却不生效,删掉out目录后重编生效。