嵌入式 C++17 设计模式实战: 零虚函数、零堆分配的编译期技术

传统设计模式依赖虚函数和动态分配,在嵌入式系统中代价偏高。本文以 newosp 真实代码为例,给出 8 种编译期替代手法,覆盖类型擦除、RAII、编译期分发、Tag Dispatch、强类型包装、零堆 Pub/Sub、Visitor 与 CRTP。

February 16, 2026 · 9 min · 1805 words · map[name:DeguiLiu]

嵌入式系统中的编译期分发: 用模板消除虚函数开销

结合 MISRA C++ 规范和 newosp 工程实践,说明如何用 C++17 模板做编译期分发,在保留代码灵活性的同时去掉虚函数的分发开销。文中数据来自实测:编译期分发比回调模式快 15 倍,比虚函数分发开销低 95% 以上。

February 16, 2026 · 7 min · 1310 words · map[name:DeguiLiu]

C 语言设计模式实战: 策略模式与状态模式的本质差异

在没有面向对象语法的 C 语言中,策略模式和状态模式都通过函数指针表 (vtable) 模拟多态,代码结构几乎一致。本文从设计意图出发,用通用示例 (传感器滤波、通信协议状态机) 剖析二者的本质差异,并展示它们在同一系统中的协作方式。

February 16, 2026 · 7 min · 1433 words · map[name:DeguiLiu]

C 语言层次状态机框架: 从过程驱动到数据驱动的重构实践

以 state_machine 框架的重构为案例,展示如何将一个过程驱动的 C 语言状态机改造为数据驱动的层次状态机 (HSM)。涵盖转换表替代 switch-case、LCA 算法消除递归、用户缓冲区替代内部分配、守卫条件与内外转换区分等关键改造点,附完整数据结构和 API 设计。

February 16, 2026 · 7 min · 1478 words · map[name:DeguiLiu]

如何设计传感器数据流水线: newosp 事件驱动 + 零堆分配方案

以激光雷达点云流水线为主线,展示 newosp C++17 事件驱动架构如何解决工业传感器系统的三个问题: 零堆分配消息传递 (CAS 无锁 MPSC + variant 值语义)、可建模的状态管理 (层次状态机 LCA + Guard)、微秒级确定性调度。

February 16, 2026 · 8 min · 1573 words · map[name:DeguiLiu]

MCU 二级 Bootloader 设计: 状态机驱动的 A/B 分区 OTA 与安全启动

在工业 MCU 产品中,固件更新失败意味着设备变砖,安全启动漏洞意味着固件被篡改。本文设计一个裸机环境下的二级 Bootloader,用状态机驱动 A/B 分区 OTA (含 Scratch 分区原子交换的掉电安全方案)、TLV 标准化镜像格式的安全启动验证、以及 ISR + Ring Buffer + 状态机三层解耦的通信协议栈。所有设计面向零 RTOS 依赖的裸机环境。

February 16, 2026 · 11 min · 2318 words · map[name:DeguiLiu]

嵌入式 Telnet 调试 Shell 重构: 纯 POSIX 轻量化实现

嵌入式 Linux 设备常需要 telnet 调试 shell:远程执行诊断命令、查看状态、修改参数。本文给出 C++17 header-only 纯 POSIX 实现过程,产物为 telsh。

February 15, 2026 · 2 min · 296 words · map[name:DeguiLiu]

将 RT-Thread MSH 移植到 Linux: 嵌入式调试 Shell 的多后端设计

RT-Thread 的 MSH 是嵌入式里广泛使用的命令行组件。本文梳理它的设计要点,对比在嵌入式 Linux 上实现同等功能的三种方案,并介绍 embsh 如何在纯头文件库中融合多后端 I/O、telnet 协议、认证、历史导航和 Tab 补全。

February 15, 2026 · 4 min · 818 words · map[name:DeguiLiu]

轻量级 C++14 日志库设计: 可插拔后端与零依赖架构

在嵌入式 ARM Linux 项目中,基于 Boost.Log 的日志方案因临时对象创建、std::regex 解析和动态链接依赖而成为性能瓶颈。本文以 loghelper 的重构为例,将其改造为 C++14 header-only 架构,支持 spdlog/zlog/fallback 三后端编译期切换,实现 10-100 倍性能提升。

February 15, 2026 · 5 min · 856 words · map[name:DeguiLiu]

ztask 调度器的 C++14 重写: 类型安全、RAII 与模板化改造

在轻量 RTOS 项目和嵌入式Linux中,合作式任务调度器是比操作系统线程更轻量的执行抽象。

February 15, 2026 · 6 min · 1105 words · map[name:DeguiLiu]

MCCC 消息总线 API 全参考: 类型、接口与配置

MCCC (Message-Centric Component Communication) 消息总线的完整 API 参考,涵盖 FixedString/FixedVector 容器、MessageEnvelope 消息封装、AsyncBus 总线接口、StaticComponent 编译期组件、优先级与背压配置,每个接口附带签名、参数说明和使用示例。

February 15, 2026 · 8 min · 1547 words · map[name:DeguiLiu]

C++17 并行矩阵乘法: 从单线程到多进程共享内存的性能实测

以 512x512 矩阵乘法为载体,基于 newosp 基础设施库实测对比单线程、线程池、消息总线、多进程共享内存四种并行方案的性能差异,分析各方案在嵌入式 Linux 平台上的架构取舍与加速比。

February 15, 2026 · 4 min · 785 words · map[name:DeguiLiu]

C++ 消息总线性能实测: 6 个开源方案的吞吐量与延迟对比

在同一硬件上统一测试 MCCC、eventpp、EnTT、sigslot、ZeroMQ、QP/C++ 六个消息总线方案,从吞吐量、延迟、内存安全、嵌入式适配性四个维度给出选型建议

February 15, 2026 · 5 min · 1005 words · map[name:DeguiLiu]

Lock-free MPSC 消息总线的设计与实现: 从 Ring Buffer 到零堆分配

嵌入式系统中,消息总线是组件间通信的核心基础设施。本文剖析 MCCC 的九项设计决策:Lock-free MPSC 替代互斥锁、Envelope 内嵌消除热路径堆分配、编译期类型索引替代哈希查找,并附实测数据。

February 15, 2026 · 5 min · 1032 words · map[name:DeguiLiu]

无锁异步日志设计: Per-Thread SPSC 环形缓冲与分级路由

在多核 ARM Linux 嵌入式系统中,同步日志的 I/O 阻塞导致控制回路超时和看门狗复位。本文设计一种基于 Per-Thread SPSC 环形缓冲与分级路由的异步日志架构,实现 wait-free 热路径 (~200-300 ns)、零竞争生产者、崩溃安全的关键日志保障。

February 15, 2026 · 7 min · 1283 words · map[name:DeguiLiu]