perf 性能分析实战: 从硬件计数器到火焰图的完整工作流

perf 是 Linux 内核自带的性能分析利器,但多数开发者只停留在 perf top 层面。本文以嵌入式 ARM-Linux 实战为背景,从 PMU 硬件计数器原理出发,系统讲解 perf stat(IPC/缓存/分支预测)、perf record + 火焰图(On-CPU/Off-CPU)、perf sched(调度延迟)三大核心工作流,并给出 ARM 平台缓存访存分析方法和自动化监控脚本。

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

perf lock 锁竞争诊断: 从 futex 原理到生产定位实战

以 perf lock 为主线的锁竞争诊断实战。从 Linux mutex 的三条路径(fast/mid/slow)和 futex 内核机制出发,详解 perf lock contention 的每个输出字段含义,演示调用栈分析、锁持有者追踪、类型过滤等进阶用法,通过一个完整案例展示从「发现 95% 竞争率」到「无锁架构 3.6x 吞吐提升」的诊断全过程。

February 16, 2026 · 6 min · 1241 words · map[name:DeguiLiu]

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]

告别手动输密码: 嵌入式 SSH/SCP 自动化方案

嵌入式 Linux 开发中频繁需要在宿主机和目标板之间传输文件、远程调试。本文从实际需求出发,对比 Expect 脚本、sshpass、SSH 密钥认证三种自动化方案的实现与安全性,然后介绍 SSH Config、ProxyJump 跳板机、rsync 增量同步等进阶技术,构建一套完整的嵌入式远程开发工具链。

February 16, 2026 · 4 min · 789 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]

QPC 框架深度解析: Active Object 与层次状态机的嵌入式实践

QP/C (Quantum Platform in C) 是一个面向嵌入式实时系统的事件驱动框架,其核心是 Active Object (主动对象) 并发模型与层次状态机 (HSM)。本文从架构设计出发,深入剖析 QPC 的三大支柱: HSM 的冒泡-继承-覆盖机制与 QHsm/QMsm 双实现策略、QActive 零拷贝无锁事件队列的 SPSC 设计、以及 QActive 在 RT-Thread 上的完整移植方案。通过 1kHz 高频采样案例展示框架的工程优势。

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

数据库抽象层的 C++14 重写: 从手动内存管理到 RAII

以 dbpp 对 DatabaseLayer 的现代化重写为案例,系统展示如何将一个 C++03 风格的数据库封装库改造为符合 MISRA C++ 标准的 C++14 实现。涵盖 RAII 资源管理、move-only 语义替代 const_cast hack、零异常错误处理、零全局状态等关键改造点,附完整前后对比代码。

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

Clang-Tidy 嵌入式 C++17 实战: 从配置到 CI 集成的完整指南

将两篇 clang-tidy 基础教程整合并扩展为面向嵌入式 C++17 的完整实战指南。涵盖针对 -fno-exceptions/-fno-rtti 场景的精选 check 集合、嵌入式专属 check (concurrency、performance、bugprone)、HeaderFilterRegex 精确控制、CMake CMAKE_CXX_CLANG_TIDY 原生集成、GNU parallel 并行加速、GitHub Actions CI 门禁,以及 NOLINT 注释的正确用法。

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

行为树 Tick 机制深度解析: 从原理到 bt-cpp 实践

行为树的 Tick 心跳机制将复杂任务编排抽象为一棵可组合的静态规则树,通过 RUNNING 状态实现协作式并发。本文从 Tick 原理出发,以 bt-cpp (C++14 header-only) 库为主线,深入分析节点遍历语义、PARALLEL 位图优化、异步 I/O 集成模式、性能开销量化,并给出 BT+HSM 互补架构的工程实践建议。

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

Unix Domain Socket 实时性优化: 嵌入式 IPC 全链路调优

面向嵌入式 ARM-Linux 平台的 Unix Domain Socket 实时性优化系统指南。从 UDS 内核数据路径出发,覆盖 socket 类型选择(STREAM/DGRAM/SEQPACKET)、epoll 边缘触发正确实现、抽象命名空间、fd 传递零拷贝、memfd_create 大块数据传输、eventfd 轻量通知、实时调度与 CPU 隔离、内核缓冲区调优、io_uring 异步路径等维度。每项优化标注原理、ARM 特有注意事项和适用场景。附完整的 RAII 服务端实现。

February 16, 2026 · 10 min · 2110 words · map[name:DeguiLiu]

TCP 非阻塞发送的 Short Write 问题: 环形缓冲区 + epoll 事件驱动方案

非阻塞 TCP 发送的 short write 问题在高吞吐嵌入式场景下不可回避。本文从一个 CSDN 环形缓冲方案出发,逐项分析其 5 个工程缺陷 (非 2 幂、无界索引、内存泄漏、部分发送丢失、EAGAIN 误判),给出工程级改进方案: 2 的幂位掩码、精确 acquire-release 内存序、EPOLLOUT 驱动异步刷写,并对比 newosp SpscRingbuffer 的设计取舍。

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

SPSC 无锁环形缓冲区设计剖析: 从原理到每一行代码的工程抉择

深度剖析 liudegui/ringbuffer 的 SPSC 无锁环形缓冲区实现。逐项解析缓存行对齐、2 的幂位掩码、wait-free 无重试设计、精确 acquire-release 内存序、FakeTSO 单核模式、批量 memcpy、ProducerClear 所有权修正等 12 项设计决策,每项标注 为什么这样做 和底层硬件原理。

February 16, 2026 · 10 min · 1955 words · map[name:DeguiLiu]

共享内存 IPC 实践: 从 POSIX shm 到 newosp 无锁 Ring Buffer

共享内存是 Linux 进程间通信中延迟最低的机制,但原始的 POSIX shm_open/mmap 接口缺少同步、生命周期管理和崩溃恢复。本文从 POSIX 共享内存原理出发,剖析 newosp 框架中 ShmRingBuffer 的 CAS 无锁设计、ARM 内存序加固、缓存行对齐等工程决策,并与 cpp-ipc 库进行架构对比,展示嵌入式场景下共享内存 IPC 的完整工程方案。

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

嵌入式线程间消息传递重构: 用 MCCC 无锁消息总线替代 mutex + priority_queue

本文基于一个实际的线程间消息传递需求(Windows 风格的 SendMessage/PostMessage),分析传统 mutex + priority_queue + promise/future 方案的工程缺陷,然后用 MCCC 无锁消息总线重新实现,并通过完整的测试和 Sanitizer 验证。

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

无锁编程核心原理: 从 CAS 原子操作到三种队列设计模式

无锁编程的基础性原理文章。从 CAS 原子操作的硬件实现出发,严格定义 lock-free 与 wait-free 的进展保证差异,深入分析 ABA 问题及其解决方案,阐明 acquire-release 内存序的必要性,最终以 SPSC/MPSC/MPMC 三种队列模式为主线,展示无锁数据结构从设计到工程落地的完整知识体系。

February 16, 2026 · 10 min · 2084 words · map[name:DeguiLiu]