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的全部過程。
評論