MTK Genio510 platform 适配 Bosch BMA510 bringup经验分享
Genio510 基于sensorhub3.0 BMA510 bringup ,请按如下步骤操作:
1.scp 侧修改文件 修改如下: /vendor/mediatek/proprietary/tinysys/scp/middleware/sensorhub/drivers/physical/accgyro/ 增加贵司的驱动文件 /vendor/mediatek/proprietary/tinysys/scp/project/RV55_A/mt8188/aiot8370p1_64_bsp/project.mk 项目配置文件,宏定义 /vendor/mediatek/proprietary/tinysys/scp/project/RV55_A/mt8188/platform/platform.mk 平台配置文件,一般不用更改 /vendor/mediatek/proprietary/tinysys/scp/project/RV55_A/mt8188/platform/features/sensorhub.mk Makefile /vendor/mediatek/proprietary/tinysys/scp/project/RV55_A/mt8188/aiot8370p1_64_bsp/sensor/dts.c
2. 确认Sensor和Genio510的关系
通常供电有系统供应,不需要软件控制,通信方式基本是是I2C,I3C,SPI,这个具体采用哪种方式看Sensor厂商提供的确认是基于哪种通信接口。目前Genio510可以支持一组SCP I2C,一组SCP I3C,2组SCP SPI。中断控制,目前Genio510有14路GPIO可以供SCP enit使用,具体的可以参考Genio510的datesheet。
以上就是基于scp sensorhub3.0 bma510的全部移植说明。
3.代码的修改
3.1驱动添加到scp\middleware\sensorhub\drivers\physical\对应的目录下: 目录传感器类型 accgyro加速度陀螺仪 alsps光距感 magnetometer地磁 barometer气压计
3.2 dts的修改 位置:scp\project\RV55_A\mt8188\aiot8370p1_64_bsp\sensor\dts.c - #ifdef CFG_BMA5XY_SUPPORT
- { .key = "name", .string = "bma5xy"},
- { .key = "bus_id", .u8 = 1},
- { .key = "slave_addr", .u8 = 0x18},
- { .key = "direction", .u8 = 0},
- { .key = "eint_num", .u8 = 4},
- #endif
复制代码
3.3编译配置 - project\RV55_A\mt8188\aiot8370p1_64_bsp\project.mk
- CFG_BMA5XY_SUPPORT = yes
复制代码
3.4 mk修改配置 位置:project\RV55_A\mt8188\platform\features\sensorhub.mk
在mk文件中添加驱动编译的路径,要在sensor类型宏的包括范围内添加,如: - ifeq ($(CFG_BMA5XY_SUPPORT),yes)
- INCLUDES += -I$(PHYSICAL_DRV_DIR)/accgyro/
- C_FILES += $(PHYSICAL_DRV_DIR)/accgyro/bma5xy.c
- endif
复制代码
3.5 修改 sensorlist 文件
scp 侧配置完毕,当 kernel 请求 scp 配置时候,可以返回给 kernel,因此 kernel 的 hf_manager 可以读到对应的 sensor,但是 上层读不到,因为上层不是直接去 kernel 读 hf_manager,而是从 HAL 去读,因此需要修改 sensorlist 文件: - /vendor/mediatek/proprietary/hardware/sensor/2.0/hal/SensorListV2.cpp
- sensor.name = "bma5xy_acc";
- sensor.vendor = "bosch";
- sensor.version = 1;
- sensor.handle = SENSOR_TYPE_ACCELEROMETER;
- sensor.type = SENSOR_TYPE_ACCELEROMETER;
- sensor.maxRange = 78.4532f;
- sensor.resolution = 0.0012;
- sensor.power = 0;
- sensor.minDelay = 2500;
- sensor.fifoReservedEventCount = 3000;
- sensor.fifoMaxEventCount = 4500;
- sensor.stringType = SENSOR_STRING_TYPE_ACCELEROMETER;
- sensor.maxDelay = 200000;
- sensor.flags = SENSOR_FLAG_CONTINUOUS_MODE;
- mSensorList.push_back(sensor);
复制代码
移植完整后,我们可以使用测试工具进行测试,可以编译Genio510的测试工具high_freq_sensor_tool, 执行如下: - ./high_freq_sensor_tool -c 1,1,5000000,0
复制代码
如果有数据输出,证明sensor可以正常工作。
以上就是BMA510基于Genio510 bringup的全部过程。
|