RISC-V 应用核的启动链路: 从 Reset_Handler 到调度器启动

从复位到第一个线程执行,启动过程分成四段,每段都有前置条件。本文按段说明每一段在做什么、为什么顺序不能换、这些段和它们的地址从哪里来,并给出启动失败时的判断顺序。

October 12, 2026 · 3 min · 541 words · map[name:DeguiLiu]

DMA 物理内存映射与 FPGA 环形缓冲: 零拷贝通路与无锁读写

FPGA 采集到的数据由 DMA 写进 DDR,用户态程序用 /dev/mem 映射同一块物理内存把它读出来。这条通路上没有数据拷贝,双方能对上靠的是事先约定的物理地址。无锁则来自另一处设计:环形队列把读写状态拆成两个各自单向递增的计数器,锁就没有存在的必要。

October 6, 2026 · 4 min · 743 words · map[name:DeguiLiu]

单芯片相机上的 RTSP 服务: 一帧画面怎么送到播放器

相机芯片上的 RTSP 服务不建线程,由应用线程反复调用,画面只传地址不复制。全文围绕三件事:定时任务共用一个到期时刻、一帧画面被多个客户端共用时的复用时机、一条连接上控制命令与视频的发送顺序,最后与服务器上的实现逐项对照。

September 20, 2026 · 4 min · 637 words · map[name:DeguiLiu]

嵌入式 SD 卡上电加载: 从卡检测到文件系统挂载

上电时已插入的 SD 卡不会产生检测跳变,驱动需主动查询 CDETECT,再通过检测线程、识别线程与文件系统完成挂载。

September 20, 2026 · 6 min · 1264 words · map[name:DeguiLiu]

嵌入式双路 USB 视频输出: 一个设备、两个摄像头的同步原理

一台嵌入式设备通过同一个 USB 控制器输出两路 UVC 视频:IAD 负责让主机看到两个摄像头,内部视频链负责分别产生两路帧,环形缓冲保证单路稳定,时间戳和上位机逻辑完成最终配对。

September 20, 2026 · 5 min · 898 words · map[name:DeguiLiu]

嵌入式块设备写入路径: 从文件系统到 SD 卡的四层地址翻译

一次写入要经过四层地址翻译:字节偏移、扇区、设备块号、命令。多数人以为数据在这四层里被拷了四遍,实际一次都没有。

September 18, 2026 · 2 min · 343 words · map[name:DeguiLiu]

MCU 任务监控: 怎样发现任务卡死并正确喂狗

用采集与发送任务的例子,说明心跳应在哪里上报、正常等待怎样与卡死区分,以及如何汇总检查结果后再喂硬件看门狗。

September 14, 2026 · 3 min · 454 words · map[name:DeguiLiu]

Reactor 事件循环引入嵌入式模块: 适配性评估与冗余账

对一套已经基于「中断 + 线程 + IPC」自洽的嵌入式模块群,引入 Reactor 事件循环(libev)在大多数模块上是净成本,本质是「第二套并发模型叠第一套」。是否值得,取决于两个先决条件:数据源能否映射成 fd、模块是否已有完整的并发机制。

September 8, 2026 · 2 min · 409 words · map[name:DeguiLiu]

单线程事件循环的内核设计: 机制、移植与适用边界

libev 是一个单线程的事件循环库(Reactor 模式)。使用时把要等待的事件(文件描述符可读、定时器到期、跨线程通知)注册进去,事件发生后由库调用回调函数处理。在嵌入式系统中,它可以作为一个 RT-Thread 线程运行,STM32F407 上已用 select 后端验证了 ev_io、e

September 8, 2026 · 4 min · 729 words · map[name:DeguiLiu]

嵌入式软硬件缓存一致性: 从旁路写入到集中收敛

双份状态并非问题根源,失控的写入口才是;通过写穿、受控旁路、版本失效、脏标记和集中同步可让缓存与硬件重新收敛。

August 27, 2026 · 6 min · 1124 words · map[name:DeguiLiu]

DVP 图像输出通路: 像素时序、模块分工与实现边界

DVP 输出由并行像素数据、PCLK、HSYNC 和 VSYNC 共同组成,图像经 DDR 与 VIDEO_O 送入 VOC,实际缺口可能位于框架接入层。

August 25, 2026 · 2 min · 316 words · map[name:DeguiLiu]

UVC 与 CSI-2 图像输出通路: 封装、标识与带宽取舍

同源像素走 UVC 时以描述符和 endpoint 面向 PC,走 CSI-2 时以 data type 和 VC 面向板级接收端,两者的封装、物理层与带宽边界不同。

August 23, 2026 · 3 min · 507 words · map[name:DeguiLiu]

Cortex-M 内存寻路: SRAM 与 CCM 的拓扑、层次与工程取舍

SRAM 面向 DMA 与外设,CCM 面向 CPU 热数据;根据访问者、执行需求和访问频率分配内存,避免 DMA 不可见与 CCM 溢出。

August 21, 2026 · 4 min · 823 words · map[name:DeguiLiu]

嵌入式系统中的过度设计: 识别、量化与规避

设计模式、分层架构、可扩展性在桌面/服务器领域是最佳实践,但搬到资源受限的 MCU 上时,每个抽象层都有可量化的代价。本文通过一次信号处理 pipeline 重构的量化分析,提炼出三个典型的过度设计模式 (为不存在的动态性付费、凭直觉拆锁、为假想需求预留架构),并给出四维评估框架 (RAM/ROM/CPU/栈) 和轻量替代方案。

February 19, 2026 · 5 min · 962 words · map[name:DeguiLiu]

工业固件 A/B 分区升级引擎: HSM 驱动 + 三层掉电保护设计

面向工业嵌入式的 A/B 分区固件升级引擎。osp::StateMachine 驱动 8 阶段流程,raw 分区状态持久化、U-Boot 冗余环境变量切换与 bootcount 回滚三层保护实现掉电安全,全程零堆分配 (~10KB 栈/静态),适合 32-256MB RAM 设备。

February 17, 2026 · 7 min · 1285 words · map[name:DeguiLiu]