newosp ospgen: YAML 驱动的嵌入式 C++17 零堆分配消息代码生成

newosp ospgen 是一个 200 行 Python 的 YAML->C++ 代码生成器,面向嵌入式 C++17 场景。生成 trivially_copyable POD 结构体、enum class、std::variant Payload、sizeof 编译期断言、event-message 零开销绑定、Validate() 范围检查、Dump() 调试打印。通过 streaming_protocol 流媒体协议示例展示真实应用集成: 删除手写 messages.hpp,用生成代码获得输入校验、结构化调试、类型安全枚举、拓扑常量和编译期保护。对比 Protobuf/FlatBuffers/nanopb,展示为什么嵌入式场景需要比 Protobuf 更轻、比手写更安全的第三条路。

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

嵌入式配置序列化选型: struct/TLV/nanopb/capnproto 对比

嵌入式设备的配置数据需要在 Flash/NvM 与内存之间可靠存取。本文从最简的裸 struct memcpy 出发,逐级递进到自定义 TLV、nanopb (Protocol Buffers C 实现) 和 c-capnproto (零拷贝固定布局),形成四档方案对比。重点分析各方案在版本兼容、读写性能、维护成本上的取舍,并结合 Flash 扇区擦除特性论证为何整体重写并非性能瓶颈。

February 16, 2026 · 12 min · 2453 words · map[name:DeguiLiu]