MTK Genio510 platform 適配 Bosch BMA510 bringup經驗分享

Genio510 基於sensorhub3.0 BMA510 bringup ,請按如下步驟操作:

1.scp 側修改文件如下:

1./vendor/mediatek/proprietary/tinysys/scp/middleware/sensorhub/drivers/physical/accgyro/  增加貴司的驅動文件

2./vendor/mediatek/proprietary/tinysys/scp/project/RV55_A/mt8188/aiot8370p1_64_bsp/project.mk 項目配置文件,宏定義

3./vendor/mediatek/proprietary/tinysys/scp/project/RV55_A/mt8188/platform/platform.mk 平台配置文件,一般不用更改

4./vendor/mediatek/proprietary/tinysys/scp/project/RV55_A/mt8188/platform/features/sensorhub.mk Makefile

5./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
位置: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 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的全部過程。

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論