ztask: 不依赖操作系统、无堆无锁的定时任务调度器
任务记在静态表里、主循环轮询派发的合作式定时调度器: 排序链表加表头判定换来 O(1) 轮询,代价是四条边界。含加固实现(重入守卫、一轮预算、超期计数、句柄校验)与完整 C 清单、演示程序、验证脚本。
任务记在静态表里、主循环轮询派发的合作式定时调度器: 排序链表加表头判定换来 O(1) 轮询,代价是四条边界。含加固实现(重入守卫、一轮预算、超期计数、句柄校验)与完整 C 清单、演示程序、验证脚本。
在「一个工作线程 + 多个命令入口 + 共享状态」的 MCU 服务里,偶发缺陷大多来自三处:读改写被别的线程插进来、派发过程被重入、锁散落在各个分支里。本文给出三个低成本的收敛办法,并用两种写法的代码指标做对照。
主机能够枚举一颗从未见过的芯片,并非因为主机预先识别了该芯片,而是因为设备按 USB 规范用描述符描述自身。描述符说明设备的身份与接口数量,Probe/Commit 协商确定输出格式。
串口 open 会在返回前应用 DTR/RTS 默认状态;控制线接到复位脚时会造成隐蔽复位。本文用实测定位时序根因,并给出打开前置低的写法。
不引入独立 RTC 服务,在 nginx 框架内直接完成 RTMP 到 WebRTC 的转换,延迟从 RTMP/HLS 的 1 到 10 秒降到 0.5 秒以内。端到端实测首包约 560 ms,HTTP-FLV 分发保留作为兜底。
libev 不碰硬件中断,却为中断驱动的系统提供了完整的「慢事慢办」机制。它的定位可以一句话说清:下半部调度器。
以 PySide6 上位机为例,梳理实时帧链的三条主线: 线程与背压、零拷贝与跨语言边界、打包与解释器。结论是单个 GUI 主线程加同进程 C++ 真线程,大帧只传 token 视图。
从 USB vendor 设备初始化到 Flash 擦写与 4K 回读校验,拆解固件烧写工具的三层架构、命令头、分区映射和失败定位。
MCU 上用 C++ 不是禁忌,是有条件的工程选择。本文结合 RT-Thread v5.x 的 C++ 实际支持范围,从编译器基线、多态策略、固定大小容器、内存池 RAII、无锁 SPSC、C/C++ 互操作六个维度给出可落地的决策框架。
从 Simple-WebSocket-Server 重构而来,去掉 ASIO 依赖,用 poll Reactor + 固定 RingBuffer + 状态机实现一个 67KB 二进制、12KB/连接、热路径零堆分配的嵌入式 WebSocket 服务器。
fccu-cpp 是一个 C++17 header-only 软件 FCCU 组件,复用 newosp 成熟设计模式,基于外部 SPSC ringbuffer 和两层 HSM 构建,零堆分配、裸机友好。本文介绍其架构设计、关键模式和集成方式。
从进程内 MPSC 总线到跨进程 SPMC 共享内存,newosp 同时支持 1:1 (SPSC) 和 1:N (SPMC) 两种共享内存数据分发模式。本文以 LiDAR 点云分发为例,展示 SPMC 的设计、实现和工业应用场景。
基于无锁 MPSC 消息总线,实现嵌入式场景下的数据分发架构。提供两种方案: Component 动态订阅版和 StaticComponent 零开销编译期分发版。单文件 ~100 行,零堆分配,单 worker 线程处理所有订阅者。
工业嵌入式设备常在 TCP telnet、串口、stdin 等不同环境下调试。newosp 的 Shell 模块用函数指针做 I/O 抽象,一套命令支持多后端,18 个命令覆盖诊断与运行时控制,全程零堆分配、兼容 -fno-exceptions。
LMDB 是基于 B+ 树 + mmap 的嵌入式 KV 数据库,编译产物 < 50KB,零拷贝读取,CoW 断电安全。本文从嵌入式 Linux 视角评估 LMDB 的适用场景(标定数据、设备配置、OTA 元数据)、架构原理、工业级代码质量、加密方案,以及跨平台 Python 工具链在工厂标定工位中的实际应用。