可穿戴设备应用程序的实现

描述

手表不再只是用来讲述时间。智能手表通过启用短信,电话和健康监控,将我们的手腕变成了智能手机皮套。可穿戴设备是用户“几乎总是”佩戴的无线设备。例如,健身监测器是一种可穿戴设备,可以通过监测心率,运动,睡眠习惯,体温,汗水等参数来跟踪一个人的健康状况。这些设备具有多个传感器,通常可以与连接到互联网的设备(如智能手机或PC)进行通信。这些设备有三个主要功能:

始终开启:由于健身监视器持续运行,因此这些设备需要较长的电池寿命。设计可穿戴设备时的一大挑战是它们耗电量大,并且通常可以容纳的电池尺寸有限。

监控活动:健身监控器感知、处理、记录和报告用户活动。这包括监控多个传感器和执行“传感器融合”,其中来自多个传感器的数据使用类似DSP的引擎进行关联,以分析更复杂的行为,并以用户可以理解和使用的方式跟踪它们。

交换数据:这包括将收集和分析的信息传达给其他设备的能力,例如向/从智能手机发送通知和警报。

图2显示了使用嵌入式MCU(如PSoC 6 BLE)实现可穿戴健身监测器的情况。

处理器

活动监控:计步器和卡路里计数器计算一个人走的步数,并计算燃烧的卡路里数。要检测步骤,需要加速度计传感器。压力传感器还用于测量步行/跑步时的海拔变化。大多数传感器都有一个数字接口,通常是 I2C、SPI 或 UART。需要对采集的数据进行额外的过滤和处理,以计算步数、海拔、燃烧的卡路里等值。这些传感器还用于实现低功耗系统功能,例如在检测到运动时唤醒整个系统,以便执行实时分析。为了支持可穿戴设备可能需要的多个传感器,嵌入式MCU将需要几个数字接口。理想情况下,这些接口可以在 I2C、SPI 和 UART 之间进行配置,为开发人员提供最大的传感器选择和实现灵活性。此外,嵌入式MCU需要支持双核架构,其中MCU能够执行传感器融合和复杂分析,低功耗MCU用于执行运动唤醒等系统任务。

环境监测:监视器可能还需要收集环境数据,例如紫外线暴露测量值、环境温度、大气压力、指南针航向等。

全球定位系统: GPS传感器通常是带有UART接口的数字传感器。GPS 传感器提供位置(纬度和经度)、速度和高度信息。

音频:在通过无线链路传输音频数据之前,数字域中的音频信号处理是任何音频系统的重要组成部分。数据通常使用基于 PDM 麦克风的声音计收集,然后对其进行测量、过滤和/或压缩。具有集成DSP功能和音频功能的嵌入式MCU可以大大简化高质量、不间断声学音频子系统的设计。

安全:可穿戴设备需要能够跟上不断变化的安全协议和措施。具有安全启动功能的嵌入式MCU可确保可穿戴设备仅执行经过身份验证的代码。此外,设备可以支持无线 (OTA) 更新,以使更新对用户透明。

用户界面:今天的用户已经习惯了使用按钮、滑块和接近感应的触摸显示器。嵌入式MCU还可以支持不同的输出类型,可以支持各种显示技术,如Eink,OLED等。

无线连接:设备需要支持低功耗蓝牙 (BLE) 连接,并为可穿戴设备操作提供必要的服务。

支持所有这些功能需要全面的固件流程(请参阅图 3)。支持可穿戴设备应用的制造商可以提供完整的库,以加速开发并降低整体设计投资。

处理器

任务架构

在任何可穿戴设计中,都有三个关键任务:

获取数据

处理数据

与用户通信 – 输入和输出(显示)

通常,传感器采集需要比其他任务更高的处理器操作速率,因为此类处理包括运行在大样本基底上的滤波器。因此,使用低功耗内核(如 Arm Cortex-M0+)执行传感器数据采集更具能效。处理传感器数据取决于所用算法的复杂性,开发人员必须在功耗效率和处理速度之间做出权衡。对于光处理,可以使用用于采集传感器数据的相同低功耗内核。但是,为了获得更多的实时操作,需要更高性能的处理器,例如Arm Cortex M3 / M4内核。当涉及到简单的可穿戴显示器和输入时,用户界面通常是一个轻量级的过程,可以由任一内核处理,但理想情况下是在低功耗内核上实现的。因此,为了在低功耗可穿戴设备中实现最佳性能,需要双核架构。请注意,可以利用双核架构来流水线化固件框架,通过加快任务完成速度来提高响应能力,并通过在内核之间共享资源(如时钟、RAM、Flash 等)来减少资源和功耗。

低功耗处理器(如 Cortex M0+)运行一个简单的任务调度程序,用于处理频繁的低带宽任务,例如:

传感器数据采集

电容感应扫描和处理

BLE 链路层控制器,用于维护 BLE 连接和通告

系统管理,包括安全任务和传感器控制

高性能处理器(如 Cortex M4)可用作运行 RTOS 的应用处理器,并处理处理器密集型应用级任务,例如:

传感器数据处理(即方向计算、高度计算等)

显示图形,如绘图文本、图像、形状等。

完整的指纹处理,包括匹配和注册算法

BLE 主机层任务,包括所有服务、配置文件和连接身份验证

由于共享内存和内核之间的快速处理器间通信(IPC)通道桥接,与让两个设备进行外部通信相比,通信延迟几乎不存在。

低功耗核心任务架构

在高级别上,低功耗内核执行两种类型的任务 - 级别 1:在每个周期中执行的定期任务和级别 2:周期性但每 ‘n’ 个周期(n = 任务周期/每个周期持续时间)执行一次的时隙任务。定时器可用于产生中断以指示周期的开始,例如每10 ms(100 Hz)。级别 1 任务在中断事件上逐个执行。时隙变量可以每次中断递增并传递到2级任务管理器。根据插槽号,将执行相应的 2 级任务。

表 1 提供了可在低功耗内核中实现的各种任务的示例。

桌子 1. 低功耗核心任务

处理器

在完成数据采集任务或需要与高性能内核上运行的其他任务通信的任何事件(如检测到手势)时,将形成消息数据包并通过IPC发送到高性能内核。在高性能内核上引发中断,处理消息数据包,并将数据适当地传递给在高性能内核上执行的预期任务。

高性能核心任务架构

高性能内核使用实时操作系统来管理 BLE、运动感应、显示更新、GPS、压力/温度、紫外线和指纹检测等任务。除了BLE、运动感应和指纹检测之外,其他任务都在等待来自低功耗内核的数据。

BLE 任务可以定期运行(每个连接间隔运行一次)。完成后,任务将自行挂起,直到下一次所需的唤醒。

运动感应任务可以是非周期性任务,每当运动传感器本身引起中断时就会运行。像Invensense MPU9255这样的运动传感器包括一个数字运动处理器(DMP),该处理器在片上FIFO上收集数据,并以预配置的速率中断高性能内核。中断时,运动传感器任务通过SPI接口读取运动传感器中的FIFO,并处理数据以计算方向,步数,燃烧的卡路里等。

指纹检测任务可以是非周期性任务,每当用户注册、验证或删除指纹时都会运行。当注册用户指纹且显示屏锁定时,此任务也会运行。已注册的用户指纹可用于解锁和保护可穿戴设备。

显示任务也可以是非周期性任务,每当需要在屏幕上更新数据(即传感器数据、时间、电池和其他任务的BLE通知)或从低功耗内核报告电容感应手势事件时,都会运行。

GPS、压力/温度和 UV 任务可以是伪周期性任务,因为它们不会定期挂起和唤醒。相反,任务唤醒是在低功耗内核从相应的传感器收集数据后触发的。由于低功耗内核中的数据收集速率是周期性的,因此这些任务可以在高性能内核上定期执行。

表 2 显示了高性能内核管理的任务示例。

桌子 2. 高性能核心任务

处理器

处理器间通信架构

同时运行的两个内核需要一种机制来保护共享数据和通信,以同步固件中的任务。双核架构需要支持多种IPC机制,如IPC锁定、消息传递和中断/通知。任务代码可以使用 IPC 锁定功能来保护共享数据和 IPC 消息传递,以便在内核之间交换通知和数据。

IPC锁:每当访问共享数据进行修改时,访问核心/任务都会尝试获取与数据相对应的锁。如果锁是空闲的,则向核心/任务授予对数据的访问权限。更新/处理完成后,任务可以释放锁,以将数据的访问权限授予其他挂起的任务。这可以保护数据不被多个尝试同时更新/使用数据的源损坏。

IPC 消息:除了保护共享数据外,还需要一种通信方式来同步内核之间的任务。这可以通过在内核之间传递的“命令和参数”消息包来实现。每当一个内核希望另一个内核执行操作时,它就会将具有任何必需参数的操作/命令 ID 打包到消息中,并通过 IPC 传递消息。消息数据包准备就绪后,内核会在另一个内核上触发 IPC 中断,在该内核中解析命令,然后对其执行操作。

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分