本章要回答的三个问题:实时性要求下任务怎么调度?内存怎么静态化、缓冲怎么设计?电池寿命怎么算、开源栈怎么选?
调度、内存、功耗与开源栈是链路预算这本账在05层面的大宗科目。前面的章节把物理与 MAC 的账本立起来之后,这一章回答"这些参数在真实机制里怎么组合、怎么取舍"。理解本章,才能把参数旋钮变成可复现的设计,而不是背一串名词。
读完本章你应当能够:为给定需求选择正确的调度、内存、功耗与开源栈方案;解释每个选择对链路预算与通信质量的具体影响;在实现层面对比至少两种候选方案并给出取舍依据;处理本章主题最常见的三类故障。
| 节号 | 回答哪个问题 | 关键产出 |
|---|---|---|
| 1 | 实时性要求下任务怎么调度 | 方案与参数对照 |
| 2 | 内存怎么静态化、缓冲怎么设计 | 机制与实现要点 |
| 3 | 电池寿命怎么算、开源栈怎么选 | 选型与故障处置 |
本章讨论调度、内存与功耗的实现取舍,输入来自第 2–4 章的物理帧、MAC 时序与入网流程;建议先过一遍 3.2 的 Class A/B/C 状态机,再进入任务划分与缓冲区设计的讨论。
本章四节是嵌入式实现的四个维度:5.1 调度(实时性)、5.2 内存(确定性)、5.3 功耗(寿命)、5.4 选型(起点)。四者互相影响:选型决定调度模型,调度决定内存与功耗剖面。
| 维度 | 对应节 | 关键约束 | 交付物 |
|---|---|---|---|
| 实时性 | 5.1 | 窗口毫秒级 | 事件驱动状态机 |
| 内存 | 5.2 | 零堆分配 | 缓冲区设计 |
| 功耗 | 5.3 | 休眠 µA 级 | 电流剖面表 |
| 选型 | 5.4 | 团队与资源 | 协议栈对比结论 |
建议先 5.4 定栈,再按 5.1→5.2→5.3 落地,每步都有可验证的产出。
本章结束后,链路预算的05层账本即告齐全。下一章把本章的机制放进更大规模的整体里验证。
本章的软件账三件事:事件驱动调度满足毫秒级窗口、零堆分配满足内存确定性、电流剖面决定电池寿命(休眠电流定天花板、上报频率×空中时间是第一杠杆)。开源栈选型:LoRaMac-node适合裸机、Zephyr适合RTOS生态。常见坑:实时路径做阻塞IO、缓冲按典型帧预留、漏算唤醒电流。

| 取舍 | 倾向 | 理由 |
|---|---|---|
| 裸机 vs RTOS | 简单设备裸机 | 栈小、定时可控 |
| 动态 vs 静态内存 | 静态 | 确定性、可审计 |
| 休眠 vs 唤醒频率 | 深睡为主 | 寿命天花板在休眠电流 |
| 开源栈选择 | LoRaMac-node / Zephyr | 按团队与资源 |
四个取舍是软件架构的骨架,读节时对照确认。
本章小结:软件架构的四个维度环环相扣——选型定调度模型,调度定内存与功耗。工程常态是"裸机或轻量 RTOS + 零堆静态分配 + 事件驱动状态机",电池寿命按电流剖面算而不是拍脑袋。读完本章,你应当能对一台新设备写出内存预算表与电流剖面表,并据此选择开源栈。
带着四张表去读各节,架构决策都有数字依据,不再是凭感觉。
注意:内存与功耗的规划要在选芯片之前完成,否则开发到一半发现资源不够,只能换芯片返工,成本远高于前期半小时的估算。
架构的价值在故障时显现:事件驱动让窗口不丢,静态内存让运行可预期,电流剖面让寿命可计算。