嵌入式系统中的编译期分发: 用模板消除虚函数开销
结合 MISRA C++ 规范和 newosp 工程实践,说明如何用 C++17 模板做编译期分发,在保留代码灵活性的同时去掉虚函数的分发开销。文中数据来自实测:编译期分发比回调模式快 15 倍,比虚函数分发开销低 95% 以上。
结合 MISRA C++ 规范和 newosp 工程实践,说明如何用 C++17 模板做编译期分发,在保留代码灵活性的同时去掉虚函数的分发开销。文中数据来自实测:编译期分发比回调模式快 15 倍,比虚函数分发开销低 95% 以上。
以激光雷达点云流水线为主线,展示 newosp C++17 事件驱动架构如何解决工业传感器系统的三个问题: 零堆分配消息传递 (CAS 无锁 MPSC + variant 值语义)、可建模的状态管理 (层次状态机 LCA + Guard)、微秒级确定性调度。
嵌入式 Linux 设备常需要 telnet 调试 shell:远程执行诊断命令、查看状态、修改参数。本文给出 C++17 header-only 纯 POSIX 实现过程,产物为 telsh。
RT-Thread 的 MSH 是嵌入式里广泛使用的命令行组件。本文梳理它的设计要点,对比在嵌入式 Linux 上实现同等功能的三种方案,并介绍 embsh 如何在纯头文件库中融合多后端 I/O、telnet 协议、认证、历史导航和 Tab 补全。
以 512x512 矩阵乘法为载体,基于 newosp 基础设施库实测对比单线程、线程池、消息总线、多进程共享内存四种并行方案的性能差异,分析各方案在嵌入式 Linux 平台上的架构取舍与加速比。
在多核 ARM Linux 嵌入式系统中,同步日志的 I/O 阻塞导致控制回路超时和看门狗复位。本文设计一种基于 Per-Thread SPSC 环形缓冲与分级路由的异步日志架构,实现 wait-free 热路径 (~200-300 ns)、零竞争生产者、崩溃安全的关键日志保障。
通读 eventpp v0.1.3 核心代码,定位回调遍历加锁、双锁入队、排他锁查 map 等 6 个瓶颈。优化后 Active Object 吞吐量从 1.5 M/s 升到 8.5 M/s,并用 processQueueWith 编译期 Visitor 模式去掉 5 层间接调用,提速 16.7x。
死锁是嵌入式多线程系统中最隐蔽的故障之一。本文从一个典型的双锁死锁场景出发,逐步演示有序锁、lock_guard、try_lock、无锁队列四种防御策略,分析各方案在嵌入式实时系统中的工程权衡。
基于 GCC 13 / x86-64 实测数据,面向 ARM-Linux 工业嵌入式开发者
三核 ARM SoC (3x Cortex-A7 @ 1.2 GHz) + Cortex-M0 支持 Linux + RTOS 异构部署。面向激光雷达和工业控制器,分析 AMP 核间通信 (Mailbox/共享内存)、实时性保障 (硬件定时器 + 中断隔离) 与资源分区策略。
在 FPGA + ARM 双核 SoC (双核 Cortex-A9 @ 667 MHz) 上处理 30 万点/秒激光雷达数据流。PL (FPGA) 负责传感器接口和 DMA 搬运,PS (ARM) 运行 Linux 处理点云算法和网络输出,目标端到端延迟 P99 < 5 ms。