在 RT-Thread/MCU 上安全使用 C++:从编译器基线到零开销抽象实践
MCU 上用 C++ 不是禁忌,是有条件的工程选择。本文结合 RT-Thread v5.x 的 C++ 实际支持范围,从编译器基线、多态策略、固定大小容器、内存池 RAII、无锁 SPSC、C/C++ 互操作六个维度给出可落地的决策框架。
MCU 上用 C++ 不是禁忌,是有条件的工程选择。本文结合 RT-Thread v5.x 的 C++ 实际支持范围,从编译器基线、多态策略、固定大小容器、内存池 RAII、无锁 SPSC、C/C++ 互操作六个维度给出可落地的决策框架。
从 newosp v0.4.3 (43 headers, 1153 tests) 源码中提炼 C++17 能力的实际工程运用。每项附具体代码位置、设计决策和 C 语言对比,展示工业嵌入式库如何将语言特性转化为可靠性与性能优势。
筛选标准: 只保留 C11 在语言层面无法实现的能力。从类型安全、编译期计算、内存安全、类型分发四个维度,逐项对比 C++17 与 C11 的语言级差异,附完整代码对比。
以 dbpp 对 DatabaseLayer 的现代化重写为案例,系统展示如何将一个 C++03 风格的数据库封装库改造为符合 MISRA C++ 标准的 C++14 实现。涵盖 RAII 资源管理、move-only 语义替代 const_cast hack、零异常错误处理、零全局状态等关键改造点,附完整前后对比代码。
面向嵌入式 ARM-Linux 的 UDS 实时性优化指南。从内核数据路径出发,覆盖 socket 类型选择、epoll 边缘触发、抽象命名空间、fd 传递、memfd 大块传输、eventfd 通知、实时调度与 CPU 隔离、缓冲区调优和 io_uring 异步路径。
共享内存是 Linux 上延迟最低的 IPC 机制,但 POSIX shm_open/mmap 缺少同步、生命周期管理和崩溃恢复。本文剖析 newosp 中 ShmRingBuffer 的 CAS 无锁设计、ARM 内存序加固与缓存行对齐,并与 cpp-ipc 对比架构取舍。
std::shared_ptr 和 std::weak_ptr 在实时系统里会引入原子引用计数、堆碎片化和竞态风险。本文从一个 weak_ptr 竞态 bug 出发拆解五个陷阱,并给出 newosp 的零堆分配替代路径。
传统设计模式依赖虚函数和动态分配,在嵌入式系统中代价偏高。本文以 newosp 真实代码为例,给出 8 种编译期替代手法,覆盖类型擦除、RAII、编译期分发、Tag Dispatch、强类型包装、零堆 Pub/Sub、Visitor 与 CRTP。