news 2026/4/18 5:40:26

BLE 4.2 Controller:高精度调度器与冲突仲裁

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
BLE 4.2 Controller:高精度调度器与冲突仲裁

由于芯片通常只有一个 Radio(单射频),我们不能同时进行广播、扫描和保持连接。如果我在 37 信道广播时,连接的锚点(Anchor Point)也到了,该怎么办?如果我正在扫描,突然需要回复一个连接请求,怎么保证时间差精确在 150µs?

这就是我们需要一个高精度调度器(High-Precision Scheduler)的原因。通用的 RTOS(如 FreeRTOS)基于 SysTick 的 1ms 调度精度在这里完全不够看,我们需要的是微秒级的控制。

1 设计哲学:时间轴上的俄罗斯方块

BLE Controller 的调度本质上是时分复用(TDM)。我们可以把时间看作一条无限延伸的单行铁轨,而每一个任务(广播一次、连接交互一次)就是一列列火车。

我们的调度器只有两个核心目标:

  1. 不撞车:保证任意两个任务在时间轴上不重叠。
  2. 准点率:任务必须在预定的微秒时刻触发(误差 < 2µs)。

为了实现这一点,我们需要抛弃“线程优先级”的概念,转而使用基于绝对时间的有序链表

2 冲突仲裁

显然,这样插入非常容易出现时间上的重叠。但幸好,蓝牙中并不是所有事件都对时间要求非常严格,为了解决冲突,可以根据事件的优先级一定的策略调整不同事件开始的时间。

下面以 Cordio 源码为例,分析不同情况的处理方法。

2.1.1 新事件优先级更高

如果新事件优先级更高,新事件获胜,则移除旧的事件,插入新的事件,然后通过回调函数abortCback通知旧事件被取消了。回调函数针对不同的事件单独实现。

/* by yours.tools - online tools website : yours.tools/zh/quchong.html */ static bool_t SchResolveConflict(BbOpDesc_t *pItem, BbOpDesc_t *pTgt) { schRemoveForConflict(pTgt); schInsertToEmptyList(pItem); if (pDeleted->abortCback) { pDeleted->abortCback(pDeleted); } return TRUE; }

2.1.2 优先级相同

如果新事件优先级相同,就使用冲突回调函数conflictCback来决定怎么处理。回调函数针对不同的事件单独实现。

/* by yours.tools - online tools website : yours.tools/zh/quchong.html */ static bool_t SchIsBodResolvable( BbOpDesc_t *pItem, // 新BOD BbOpDesc_t *pTgt, // 现有BOD BbConflictAct_t conflictCback ) { // 策略1: 比较重调度策略(优先级) if (pItem->reschPolicy < pTgt->reschPolicy) { return TRUE; // 新BOD优先级更高,可以抢占 } // 策略2: 优先级相同,使用冲突回调 else if ((pItem->reschPolicy == pTgt->reschPolicy) && conflictCback) { if (conflictCback(pItem, pTgt) == pItem) { return TRUE; // 回调选择了新BOD } } // 策略3: 新BOD优先级更低或相同但无回调 else { LL_TRACE_WARN2("!!! Scheduling conflict: existing=%u vs incoming=%u", pTgt->reschPolicy, pItem->reschPolicy); return FALSE; // 保留现有BOD } return FALSE; }

2.1.3 新事件优先级更低

如果新事件优先级更低,则保留旧事件,调整新事件的事件重新尝试插入。
例如一个普通的广播事件在调度时碰到了更高优先级的连接事件,广播事件重新计算下一次的广播事件,然后重新尝试调度。对于广播,错过一次几乎不影响用户体验。

static bool_t SchResolveConflict( BbOpDesc_t *pItem, // 要插入的BOD BbOpDesc_t *pTgt // 冲突的BOD ) { BbOpDesc_t *pCur = pTgt; int numDeletedBod = 0; BbOpDesc_t *pDeleted[SCH_MAX_DELETE_BOD]; // 最多删除8个 // 1. 遍历并移除所有冲突的BOD while (TRUE) { // 防止删除过多 if (numDeletedBod == SCH_MAX_DELETE_BOD) { result = FALSE; break; } pDeleted[numDeletedBod++] = pCur; // 如果只与pCur冲突 if ((pCur->pNext == NULL) || SCH_IS_DONE_BEFORE(pItem, pCur->pNext)) { result = schRemoveForConflict(pCur); break; } // 继续移除下一个冲突的BOD if (!schRemoveForConflict(pCur)) { result = FALSE; break; } pCur = pCur->pNext; } // 2. 如果成功移除,插入新BOD if (result == TRUE) { if (pCur->pNext) { schInsertBefore(pItem, pCur->pNext); } else if (pTgt->pPrev) { schInsertAfter(pItem, pTgt->pPrev); } else { schInsertToEmptyList(pItem); } // 3. 调用所有被移除BOD的中止回调 for (int i = 0; i < numDeletedBod; i++) { if (pDeleted[i]->abortCback) { pDeleted[i]->abortCback(pDeleted[i]); } } } return result; }

本文版权归作者:ixbwer所有,转载请注明原文链接:https://www.cnblogs.com/ixbwer/p/19451924,否则保留追究法律责任的权利。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 3:42:32

大小球分拣系统实战手记

基于S7-200 PLC和组态王大小球大小分拣最近在厂里折腾了个有意思的项目——用S7-200 PLC和组态王搞了个大小球自动分拣系统。别看原理简单&#xff0c;调试过程真是踩了不少坑。今天就把核心代码和配置要点整理出来&#xff0c;给大伙儿唠唠这个系统的实现过程。硬件配置清单先…

作者头像 李华
网站建设 2026/4/15 23:39:15

DPPE-PEG2K-TPP,磷脂-聚乙二醇-三苯基膦,物理稳定性

DPPE-PEG2K-TPP&#xff0c;磷脂-聚乙二醇-三苯基膦&#xff0c;物理稳定性DPPE-PEG2K-TPP 是一种功能化两亲性分子&#xff0c;兼具磷脂嵌入能力、PEG2K 链柔性保护以及三苯基膦&#xff08;TPP&#xff09;末端线粒体靶向功能&#xff0c;可作为多功能纳米载体表面修饰模块。…

作者头像 李华
网站建设 2026/4/7 16:16:01

AI翻译新选择:腾讯混元MT-7B支持5种民族语言与汉语互译

AI翻译新选择&#xff1a;腾讯混元MT-7B支持5种民族语言与汉语互译 在多语言交流日益频繁的今天&#xff0c;机器翻译早已不再是科研实验室里的概念玩具&#xff0c;而是实实在在影响着信息流通、文化传播乃至区域发展的关键技术。尤其是在中国这样一个多民族国家&#xff0c;如…

作者头像 李华
网站建设 2026/4/16 0:22:28

室内装修风格识别:帮助用户一键获取家居设计灵感

室内装修风格识别&#xff1a;帮助用户一键获取家居设计灵感 引言&#xff1a;从“看图识物”到“懂你所见”的智能跃迁 在智能家居与个性化设计需求日益增长的今天&#xff0c;用户不再满足于简单的图像分类——他们希望系统能真正“理解”一张照片背后的设计语言。比如上传一…

作者头像 李华
网站建设 2026/4/18 5:34:45

Docker容器化封装:提升模型服务化能力

Docker容器化封装&#xff1a;提升模型服务化能力 万物识别-中文-通用领域的服务化挑战 在当前AI应用快速落地的背景下&#xff0c;万物识别-中文-通用领域这一视觉理解任务正逐步成为智能内容审核、电商图文匹配、教育辅助识别等场景的核心能力。该模型由阿里开源&#xff0c;…

作者头像 李华
网站建设 2026/4/18 5:37:31

为什么说Hunyuan-MT-7B-WEBUI是工程化翻译落地的标杆方案?

为什么说Hunyuan-MT-7B-WEBUI是工程化翻译落地的标杆方案&#xff1f; 在全球化浪潮席卷各行各业的今天&#xff0c;语言早已不再是简单的交流工具&#xff0c;而是信息流动、业务拓展和文化互通的关键枢纽。无论是跨国企业的本地化运营&#xff0c;还是科研机构的国际合作&…

作者头像 李华