展锐平台 Sensor Hub

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

展锐平台 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 声明驱动。

  • 21
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值