当前位置:   article > 正文

展锐平台 Sensor Hub

sensor hub

展锐平台 Sensor Hub驱动添加

sensor hub 架构

在这里插入图片描述

上图是展锐平台sensor hub 的整体架构图

sensor hub 分为三部分,AP、sensor hub、sensors。

外部的 sensor IC 通过 I3C、I2C、SPI 挂载于 sensor hub 核,sensor hub 核通过 SIPC 通讯方式与 AP 核进行交互。

对于图中各部分模块的解释:

  • sensor hub HAL:实现 Android 定义的标准 sensor HAL 接口。
  • sensor hub driver:将 HAL 层下发的命令传递给 sensor hub;将 sensor hub 反馈的信息及上报的 sensor 事件传递给 HAL 层;提供调试接口。
  • sensor hub algo:sensor 算法源码,以库方式释放(闭源)。
  • sensor hub manage:处理 AP 发送的命令;采集和上报 sensor 数据。
  • sensor driver:sensor 的驱动代码,被 sensor hub manage 调用。

sensor hub 工程编译

进入bsp目录,执行命令source build/envsetup.sh,并执行命令lunch,选择要编译的工程。

对于不同类型的工程,分别执行命令make sensorhub 或 make contexthub。

生成的可执行产物分别在目录:bsp/sensorhub/public/build/(项目名)

或者bsp/contexthub/out/(项目名)/(board 名)

配置sensor hub 功能宏

工程功能宏文件defconfig在目录:bsp/sensorhub/public/project/(项目名)

bsp/contexthub/device/CH/(项目名)/(board 名)/

可直接修改defconfig文件来配置功能宏。

同时也可以使用make sensorhub_menuconfig 或者make contexthub_menuconfig 命令进行功能宏配置(可以避免功能宏之间的依赖导致的错误)。

方法如下:

  • 进入bsp目录,执行命令source build/envsetup.sh,并执行命令lunch,选择工程。
  • 执行make sensorhub_menuconfig 或者make contexthub_menuconfig 命令,弹出工程配置窗口进行修改。

添加sensor hub sensor 驱动

驱动代码目录:bsp/sensorhub/public/sensor_hub_sprd/public/system/sensor_driver

bsp/contexthub/modules/sensorhub/sensor_hub_sprd/public/system/sensor_driver

之后以contexthub中的驱动为例:

在这里插入图片描述

在对应sensor类型中添加驱动代码

在这里插入图片描述

以color_drivers为例,添加完驱动代码之后,需要在该sensor类型目录下的.cmake文件和Kconfig文件中添加对应代码。

增加sensor功能宏

Kconfig文件添加举例如下:

config COLOR_TCS34303_SUPPORT
		bool "COLOR_TCS34303_SUPPORT"
		depends on SPRD_SENSOR_HUB_SUPPORT
		help
			color tcs34303 support status
  • 1
  • 2
  • 3
  • 4
  • 5

增加 sensor 功能宏的默认配置

在各项目的 defconfig 文件中,将该型号 sensor 的功能宏默认配置为关闭。

将驱动加入 sensor hub 工程编译

.cmake文件添加举例如下:

if(CONFIG_COLOR_TCS34303_SUPPORT)
	list(APPEND SRCS
		"${COLOR_DRIVERS_PATH}/tcs34303/sensor_driver_color_tcs34303.c"
		"${COLOR_DRIVERS_PATH}/tcs34303/color_tcs34303.c"
	)
endif()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

使用 list(APPEND SRCS xxx)追加驱动文件到 SRCS,并用新增的功能宏控制该修改。

使用 cp_library_include_directories()声明需要用到的头文件路径。

使用 cp_append_export_library()声明需要用到的库文件。

overlay 实现

对于同一个项目,同样类型的 sensor 有多个供应商,但 sensor hub 有限的 SRAM 空间难以兼容太多 sensor 驱动。

为解决这个问题,引入 memory overlay 方案。

在这里插入图片描述

在配置sensor hub 功能宏时,依次选择 sensorhub config > SPRD Sensor Module Configurations。

勾选 SENSORS_DRIVER_OVERLAY,根据页面提示保存并退出。

以color_drivers中的驱动为例,在 color_tcs34303.c 中添加 sensor overlay 管理及 sensor 初始化注册程序。

#include "sensor_driver_color_tcs34303.h"
#ifdef CONFIG_SENSORS_DRIVER_OVERLAY
#include "color_overlay.h"

overlay_color_driver_init(tcs34303, color_tcs34303_sensor_init);

#else // CONFIG_SENSORS_DRIVER_OVERLAY

DRIVER_INIT(color_tcs34303_sensor_init);

#endif //CONFIG_SENSORS_DRIVER_OVERLAY
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在链接脚本(lds 文件)中将每一供的驱动都加入编译。

在目录:bsp/sensorhub/public/ms_customize/

bsp/contexthub/device/CH/(项目名)/(board 名)/

中新增多供。

修改对应目录下的编译脚本,分别对 text 段、data 段、bss 段 overlay 声明驱动。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/1005106
推荐阅读
相关标签
  

闽ICP备14008679号