2026/4/6 4:19:44
网站建设
项目流程
cms网站管理系统制作,合肥网络seo推广服务,个人网站服务器推荐,wordpress项目id目录
一、BP 层移植说明 #xff08;1#xff09;、添加一个虚拟陀螺仪驱动 #xff08;2#xff09;、虚拟陀螺仪编译配置 #xff08;3#xff09;、虚拟陀螺仪info添加
二、HAL层移植说明 #xff08;1#xff09;、虚拟陀螺仪算法库移植 #xff08;2#xff0…目录一、BP 层移植说明1、添加一个虚拟陀螺仪驱动2、虚拟陀螺仪编译配置3、虚拟陀螺仪info添加二、HAL层移植说明1、虚拟陀螺仪算法库移植2、虚拟陀螺仪算法库编译配置3、平台端获取虚拟陀螺仪数据调用三、Device 目录移植1、虚拟陀螺相关宏定义一、BP 层移植说明1、添加一个虚拟陀螺仪驱动bsp/sensorhub/public/sensor_hub_sprd/public/system/sensor_driver/gyro_drivers 路径增加一个虚拟陀螺仪驱动文件夹virtual_gyro/2、虚拟陀螺仪编译配置bsp/sensorhub/public/sensor_hub_sprd/public/system/sensor_driver/gyro_drivers 路径中gyro_drivers.cmakeif(CONFIG_VIRTUAL_GYRO_LSM6DSL_AKM99018_SUPPORT) list(APPEND SRCS system/sensor_driver/gyro_drivers/virtual_gyro/sensor_driver_virtual_gyro_akm99018_lsm6dsl_common.c system/sensor_driver/gyro_drivers/virtual_gyro/sensor_driver_gyroscope_virtual_gyro.c ) endif()Kconfig中添加宏定义config VIRTUAL_GYRO_LSM6DSL_AKM99018_SUPPORT bool VIRTUAL_GYRO_LSM6DSL_AKM99018_SUPPORT depends on SPRD_SENSOR_HUB_SUPPORT help gyro virtual_gyro_lsm6dsl_akm99018 support statusbsp/sensorhub/public/project/QogirN6Pro_CH/ums9620_2h10 设置宏打开CONFIG_VIRTUAL_GYRO_LSM6DSL_AKM99018_SUPPORTy3、虚拟陀螺仪info添加bsp/sensorhub/public/project/QogirN6Pro_CH/ums9620_2h10/sensor_config.hstruct sensor_hw_info gyro_virtual_hw_info { .position 2, .i2c_info { .interface_freq 400, .interface_num 0, .slave_addr 0x00, .reg_addr_len 1, }, }; struct sensor_property_info { char *sensor_name; struct sensor_hw_info *info; } sensor_property_list[]{ {acc_lsm6dsl, acc_qmi8658_hw_info}, {virtual_gyro, gyro_virtual_hw_info},二、HAL层移植说明1、虚拟陀螺仪算法库移植vendor/sprd/modules/sensors/libsensorhub/Virtual_gyro_lib/添加虚拟陀螺仪算法库2、虚拟陀螺仪算法库编译配置vendor/sprd/modules/sensors/libsensorhub/Android.bp 中定义CPP 中用到的宏sonng_config_module_type { name: libsensorhub_cc_defaults, module_type: cc_defaults, config_namespace: sensorhubcfg, bool_variables: [ virtual_gyro, akm_virtual_gyro, ], properties: [ cflags, shared_libs, srcs, local_include_dirs, ], } libsensorhub_cc_defaults { name: libsensorhub_defaults, soong_config_variables: { virtual_gyro: { srcs: [Virtual_gyro_lib/virtual_gyro_interface.cpp], local_include_dirs: [Virtual_gyro_lib], cflags: [-DSENSORHUB_WITH_VIRTUAL_GYROSCOPE], }, akm_virtual_gyro: { shared_libs: [libcompasshub], srcs: [Virtual_gyro_lib/AKMAlgo/akm_vgyro_algo.cpp], cflags: [-DSENSORHUB_SUPPORT_akm_virtual_gyro], }, } }3、平台端获取虚拟陀螺仪数据调用vendor/sprd/modules/sensors/libsensorhub/Virtual_gyro_lib/virtual_gyro_interface.cpp 调用获取虚拟陀螺仪数据接口void initVirtualGyroLib(void) { struct magChipInfo magChipInfo {0x00, 0x0c, 0x00}; float offset_value[3] {0}; float fMagSP[9] {1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0}; float fmagCaPara[4] {0.0, 0.0, 0.0, 0.5}; float pa[8] {18.0, 25.0, 35.0, 0.025, 0.08, 0.85, 1.15, 1.4}; float pb[4] {0.1, 0.00002, 0.0002, 0.0001}; int pc[4] {20, 15, 10, 2}; char mag_sensor_str[MAX_MAG_STRING_SIZE]; int ret; SH_ERR(initVirtualGyroLib ::parse mag name paramagname); ret parseMagSensorinfo(mag_sensor_str); if(ret 0) { SH_ERR(parse mag name failed); return; } #ifdef SENSORHUB_SUPPORT_akm_virtual_gyro #if 1 if(!strcmp(mag_sensor_str, mag_akm09918)) { mag_type AKM; akm_wrapper_lib_init(magChipInfo); akm_wrapper_set_offset(offset_value); return; } #endif }三、Device 目录移植1、虚拟陀螺相关宏定义device/sprd/mpool/module/vendor/sensor/main.mkifeq (akm_virtual_gyro, $(findstring akm_virtual_gyro, $(SENSOR_HUB_VIRTUAL_GYROSCOPE))) SOONG_CONFIG_sensorhubcfg akm_virtual_gyro SOONG_CONFIG_sensorhubcfg_akm_virtual_gyro : true endifdevice/sprd/qogirn6pro/ums9620_2h10/module/sensor/md.mkSENSOR_HUB_VIRTUAL_GYROSCOPE : akm_virtual_gyro