sunsili 发表于 2024-4-9 22:17:59

MTK Genio510 platform 适配 Bosch BMA510 bringup经验分享 品佳-caobo ...

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的全部过程。
页: [1]
查看完整版本: MTK Genio510 platform 适配 Bosch BMA510 bringup经验分享 品佳-caobo ...