0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在高度时间敏感的低功耗蓝牙应用中使用 RTOS

名士流 来源:名士流 作者:名士流 2022-08-11 14:33 次阅读

当您设计嵌入式系统时,您需要回答的问题之一是您的应用程序是否需要实时操作系统 (RTOS)。许多嵌入式设计人员都回避使用 RTOS 内核,因为他们担心内核在处理关键部分时会禁用中断,这会妨碍时间敏感型应用程序无法满足最后期限。

什么是实时操作系统? RTOS 是一种软件,可以尽可能高效地管理中央处理单元 (CPU)、微处理单元 (MPU) 甚至数字信号处理器DSP) 的时间。大多数 RTOS 内核是用 C 语言编写的,需要一小部分用汇编语言编写的代码来使内核适应不同的 CPU 架构。

内核为程序员提供了许多有用的服务,包括多任务处理、中断管理、任务间通信和信令、资源管理、时间管理和内存分区管理。应用程序基本上分为多个任务,每个任务负责应用程序的一部分。任务是一个简单的程序,它认为它自己拥有 CPU。每个任务都根据任务的重要性分配一个优先级。

大多数用于嵌入式系统的内核都是“抢占式”的,这意味着内核总是执行准备好运行的最重要的任务。抢占式内核也是事件驱动的,这意味着任务被设计为等待事件发生才能执行。当事件发生时,任务执行并执行其功能。如果任务等待的事件没有发生,内核将运行其他任务。等待任务消耗 CPU 时间为零;内核允许您避免使用轮询循环,这是对 CPU 时间的不好利用。

许多嵌入式程序员回避使用 RTOS 内核,因为他们担心内核会给他们的应用程序增加太多复杂性。事实证明,您只需要少数服务即可使用内核启动您的项目。至于开销,RTOS 确实可能需要 2% 到 5% 的 CPU 资源来执行其职责。

然而,更重要的是 RTOS 在进入临界区时需要禁用中断。根据 CPU 本身、时钟频率以及内存访问是否需要等待状态,RTOS 可以禁用中断数十微秒。对于大多数嵌入式应用程序而言,此限制通常不是问题,但在每微秒都很重要时可能会出现问题。

低功耗蓝牙 (BLE) IoT 设备越来越多地配备 BLE 链路,因为当与智能手机或类似手持设备结合使用时,BLE 使这些 IoT 设备的调试和配置变得简单方便。BLE 可以有多种操作模式、多种连接、多个广告商等等,其中一些甚至可以重叠。

扫描模式: 设备扫描其他设备发送的广告包。扫描由扫描之间的间隔和设备正在侦听的时间窗口组成。扫描仪在每个间隔改变频道频率。需要在收到请求后 150 µs 内做出响应。这称为帧间空间 (IFS)。

广告模式: BLE 设备也可以自行执行广告,广告时间可能在 20 毫秒到 3 小时之间。

连接模式: Master 在每个连接间隔发送一个数据包,BLE Slave 设备在 150 µs 后回复 Master,即 IFS。如果 Master 有其他东西要发送给 Slave,它会在 150 μs 后向 Slave 发送一个数据包。设备相互发送数据包,直到两端都没有数据要发送。

对于 32 位 CPU 来说,150 微秒可能看起来很长,但在处理传入请求时还有很多工作要做。数据包具有流控信息,指示从另一端请求什么序列号;可能有地址白名单过滤需要处理。

实际上,执行这些操作会消耗 120 µs 到 130 µs 的 CPU 时间。如果无法在 150 µs 内处理数据包,通常不会发生任何不良情况;数据吞吐量可能会略有下降或打开连接可能会延迟。从客户的角度来看,这种行为与无线电干扰相同。但是,连续错过这个截止日期不是一种选择,因为它会使最终产品无法使用。

BLE 应用程序中 的 RTOS 如果 RTOS 可能会在数十微秒内禁用中断,那么您为什么要考虑在基于 BLE 的应用程序中使用它呢?嗯,答案是这些时间紧迫的事件可以在 RTOS 之外轻松处理。具体来说,可以在 RTOS 范围之外分配特定的时间敏感中断服务例程 (ISR)。这些称为非内核感知 (nKA) ISR,顾名思义,它们只是绕过 RTOS 内核。nKA ISR 的优先级高于内核感知 (KA) ISR。

poYBAGLyXVyAVlzWAABalm_TewU694.png

图 1:Cortex-M3 CPU 上的 ISR 和任务优先级。

图 1 显示了典型 Cortex-M3 CPU 的 ISR 和任务的优先级。如果 RTOS 需要保护临界区,它会将 Cortex-M3 CPU 的 BASEPRI 寄存器设置为 0x40,从而禁用优先级为 0x40 及以下的 KA ISR。因为 0x00 和 0x20 是更高的优先级,它们将被允许中断 CPU,即使 RTOS 处于临界区的中间。

因此,时间敏感的 BLE ISR 可以简单地分配优先级 0x00 或 0x20,当它们发生时,将立即处理它们,而与低优先级 ISR 或任务的状态无关。

一项任务可能会为 nKA ISR 提供设置信息——操作模式、配置等。nKA ISR 可能还需要在任务级别执行进一步的非时间关键处理。因此,如果不允许 nKA ISR 进行任何 RTOS API 调用,nKA ISR 如何与任务通信?设置共享内存相当容易,如图2 所示。

pYYBAGLyXWKALQbHAABHrQNqo18205.png

图 2:nKA ISR 和任务之间的通信。

nKA ISR 将信息存储到与其共享任务的内存中。

由于 nKA ISR 无法进行任何 RTOS API 调用,因此它需要触发 KA 中断,进而允许进行内核调用。ARM Cortex-M CPU 的嵌套向量中断控制器 (NVIC) 允许系统设计人员做到这一点,但设计人员需要识别应用程序未使用的 I/O 设备并窃取其中断向量以用于此目的。

因此,KA ISR 可以向任务发出信号,让其知道共享 RAM 中的数据可用。

当所有 ISR 都已完成,并且 RTOS 已决定发出信号的任务现在是最高优先级时,该任务可以读取 nKA ISR 发送给它的数据。

该任务可以根据需要将 nKA ISR 的信息存储在一个共享区域中,该共享区域只能由 nKA ISR 读取。数据写入共享 RAM,但只有在设置“数据可用”标志时才能读取。ARM Cortex-M3 CPU 和上面的处理器具有特殊指令,可确保设置或清除“数据可用”标志可以自动完成,以防止竞争条件,而无需禁用全局中断。

nKA ISR 将轮询任务提供的数据。这通常不是问题,因为无论如何都会在 nKA ISR 发生时发生这种情况。

总结 RTOS 和时间敏感的应用程序(如 BLE)可以通过制作非内核感知的时间敏感 ISR 轻松共存。使用与此类似的方案可确保时间关键代码不受 RTOS 存在的影响。同时,RTOS 可以最有效地利用 CPU 来处理时间不敏感的代码。

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10428

    浏览量

    206517
  • 操作系统
    +关注

    关注

    37

    文章

    6274

    浏览量

    121861
  • 应用程序
    +关注

    关注

    37

    文章

    3132

    浏览量

    56359
  • 低功耗蓝牙
    +关注

    关注

    1

    文章

    181

    浏览量

    20732
收藏 人收藏

    评论

    相关推荐

    超小蓝牙模组,远距离,低功耗#蓝牙芯片 #低功耗蓝牙 #物联网 #硬声创作季

    物联网蓝牙芯片模组低功耗蓝牙
    fly
    发布于 :2022年08月23日 20:52:27

    蓝牙低功耗技术

    设备应用,仅有很低的电池容量就可以使用很长时间蓝牙低功耗的技术应用设计和动态优化与低有效的数据吞吐量有直接关系。这包括一个广泛的传感器和控制的应用,包括运动和医疗传感器、遥控器、游戏、手表给移动电话
    发表于 05-13 11:25

    RTOS低功耗设计原理及实现_TicklessMode(FreeRTOS的实现)

    目前, 越来越多的嵌入式产品开发中使RTOS 作为软件平台, 同时,开发中对低功耗的要求也越来越高, 这篇文档会讨论一下如何在 RTOS
    发表于 11-10 09:54

    低功耗蓝牙怎么低功耗?如何界定

    的自放电特性也需要予以考虑,常温下储存,每年容量损失小于 2%。这些因素计算工作时间时也需要予以考虑。 低功耗蓝牙如何实现低功耗和传统
    发表于 02-06 15:32

    低功耗蓝牙

    )希望服务器节点蓝牙(服务器节点的功耗不是问题)同时连接低功耗蓝牙和普通蓝牙,这样可行吗? 2
    发表于 06-21 04:21

    蓝牙低功耗工业应用

    距离的通信、高通量的数据传输以及严苛的ISM应用,虽然这并不是蓝牙低功耗的设计目的。然而,蓝牙低功耗目前已经高质量工业应用领域中有所作为,
    发表于 08-30 14:33

    低功耗蓝牙的应用领域

    。彩灯控制把低功耗蓝牙模块内置于LED内,即可通过APP控制灯泡的色彩、亮暗。智能家居、连锁酒店、办公室、饭店等需要灯光控制调节的地方均可以内置低功耗
    发表于 03-18 02:25

    蓝牙低功耗的问题

    问大家一个问题。最近一个产品,用到蓝牙低功耗。因为蓝牙模块比较耗电,所以我想低功耗时,切断蓝牙模块的供电。然后按键外部中断唤醒单片机,再打开
    发表于 08-12 14:22

    你知道RTOS应用中节省功耗的方法吗?

    应用设计Cortex-M架构处理器中使RTOS 时,WHIS通过空闲任务中使用等待中断 (WFI) 指令,使处理器能耗节约三分之一以
    发表于 06-24 15:38

    怎样低功耗蓝牙中使用服务uuid AD类型呢?

    有没有哪位大神可以解释怎样低功耗蓝牙中使用服务uuid AD类型呢??
    发表于 12-12 06:15

    RTOS低功耗设计原理的讲解和实现概述

    目前,越来越多的嵌入式产品在开发中使RTOS作为软件平台,同时,开发中对低功耗的要求也越来越高,这篇文档会讨论一下如何在RTOS中处理微控制器的
    发表于 04-15 17:00 22次下载
    <b class='flag-5'>RTOS</b><b class='flag-5'>低功耗</b>设计原理的讲解和实现概述

    如何在RTOS中处理微控制器的低功耗特性

    目前, 越来越多的嵌入式产品在开发中使RTOS 作为软件平台, 同时,开发中对低功耗的要求也越来越高, 本文会讨论一下如何在 RTOS 中处理微控制器的
    的头像 发表于 04-19 15:15 1254次阅读

    RTOS低功耗设计原理及实现

    目前,越来越多的嵌入式产品在开发中使RTOS 作为软件平台,同时,开发中对低功耗的要求也越来越高,这篇文档会讨论一下如何在 RTOS 中处理微控制器的
    发表于 09-28 16:05 0次下载

    一文读懂低功耗蓝牙的应用

    蓝牙技术联盟于2010年推出了蓝牙4.0规范,其中低功耗蓝牙的出现满足了小型电池供电设备进行低功耗无线连接的需求,因此得到广泛应用。本文章将
    的头像 发表于 12-28 08:24 411次阅读
    一文读懂<b class='flag-5'>低功耗</b><b class='flag-5'>蓝牙</b>的应用

    低功耗蓝牙技术的特点 低功耗蓝牙如何实现低功耗

    低功耗蓝牙技术是一种优化的蓝牙技术,专为满足低功耗需求而设计。它通过采用一系列节能措施和技术,实现了更低的功耗消耗,延长了设备的续航
    的头像 发表于 02-07 16:49 738次阅读