概述
sensor的img位于scp.img
9.1、在成熟的平台Bring Up
在已知的平台上驱动并验证一个器件是很常见的工作。因为管脚等基本不需要重新配置。所以只需要按照一般步骤驱动即可。驱动代码位置:
vendor/mediatek/proprietary/tinysys/freertos/source/middleware/contexthub/MEMS_Driver/accGyro/
生成.o文件位置:
out/target/product/****/obj/TINYSYS_OBJ/tiny-scp_inermediates/freertos/source/CM4_A/middleware/contexthub/MEMS_Driver/accGyro
首先将驱动代码的.c文件放入驱动代码位置。之后修改下面说明的几个位置:
9.1.1、添加CFG_SENSOR_SUPPORT
到
vendor/mediatek/proprietary/tinysys/freertos/source/project/CM4_A/****/****/projectConfig.mk
添加
CFG_SC7A20_SUPPORT = yes
9.1.2、添加器件总线和其他信息
到
vendor/mediatek/proprietary/tinysys/freertos/source/project/CM4_A/****/****/cust/accGyro/cust_accGyro.c
添加
#ifdef CFG_SC7A20_SUPPORT
{
.name = "sc7a20",
.i2c_num = 0;
.i2c_addr = {0x18, 0},
.direction = 3,
.eint_num = 12,
}
如果Sensor使用的是I2C,不管硬件上对应I2C总线几,此处i2c_num要写0,因为在这个平台下SensorHub侧只有一个I2C。如果是SPI总线,写成下面这个样子:
.i2c_num = 1;
.i2c_addr = {0, 0},
至少包含name、i2c总线、i2c地址就可以被驱动正常读取。
9.1.3、overlay
在
vendor/mediatek/proprietary/tinysys/freertos/source/project/CM4_A/****/****/inc/overlay_sensor.h
添加
#define OVERLAY0
OVERLAY_ONE_OBJECT(sc7a20, sc7a20)
在
vendor/mediatek/proprietary/tinysys/freertos/source/project/CM4_A/****/****/cust/overlay/overlay.c
添加
ACC_GYRO_OVERLAY_REMAP(sc7a20);
9.1.4、驱动编译
在
vendor/mediatek/proprietary/tinysys/freertos/source/project/CM4_A/****/****/platform/feature_config/chre.mk
添加
ifeq($(CFG_SC7A20_SUPPORT),yes)
C_FILES += $(SENDRV_DIR)/accgyro/sc7a20.c
endif
9.2、Sensor驱动调试
9.2.1、加速度方向调试
对于加速度和磁传感器,方向是一个很重要的参数:这是一个0~7的整数数据,由于这两种Sensor都有x y z三个轴,每个轴都有正负两种情况,2^3=8,所以±x ±y ±z共有8种组合。最直接的方法是把0~7这8个数值都试一遍,看哪个结果正确就用哪个数值。
9.2.2、eint_num
中断号,这里某些Sensor会提供一个中断脚,来通知主机数据准备完毕。此处中断号直接填写这个Sensor所使用的中断管脚号即可。
9.2.3、地磁三方库的所在位置
# add for Msensor
PRODUCT_COPY_FILES += device/mediatek/****/ThirdParty/mmc5603nj_lib/32bit/libmemsic.so:$(TARGET_COPY_OUT_VENDOR)/lib/libmemsic.so
# end for Msensor
最后
以上就是英俊草丛为你收集整理的MTK平台Sensor Bring Up的全部内容,希望文章能够帮你解决MTK平台Sensor Bring Up所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复