展锐平台 Sensor Hub

本文详细介绍了展锐平台SensorHub的架构,包括其组成部分如AP、sensorhub和sensors,以及驱动的编译过程、配置方法和内存overlay解决方案。重点讲解了如何添加新的sensor驱动和配置功能宏以支持不同传感器厂商的产品。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

展锐平台 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

增加 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()

使用 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

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

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

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

中新增多供。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值