最新文章

Bitesize Modern C++

Feabhas《Bitesize Modern C++》(2015-05 合集,作者 Glennan Carnie)全文转录:面向 C++98/C 背景嵌入式程序员的 C++11/14 小特性入门。正文仅修正原文笔误,各章附「注/批」点评。

Rust for Embedded C Programmers

来自 lowRISC/opentitan:This document is intended as an introduction to Rust, targeted at engineers with deep exposure to embedded systems C, and little to no experience with C++ and no knowledge of Rust。续写了 Part III「More Extended Look」,补充原文未覆盖的嵌入式专题。

用 Git worktree 做并行开发

转载自 barrd.dev 的博客:介绍 Git worktree——让多个分支各自拥有独立工作目录、共享同一套仓库历史,从此在功能开发与紧急修复之间切换不再需要 stash 和来回 checkout。

[SKILL] 单元测试设计规则参考

面向嵌入式 / C 宿主侧单元测试的可验收工程规范:自含、不依赖其他文档定义,覆盖范围与目标、组织构建、命名约定、覆盖深度、边界与对称、断言严格性、替身设计、验证流程与审查清单九个章节,附 14 条逐项审查清单。

Mock 不是 Stub

转载自 Martin Fowler 的博客:很多人把 mock object 和 stub 混为一谈,但 Fowler 指出这里其实纠缠着两层差异——一是「状态验证 vs 行为验证」,二是「经典派 TDD vs mockist 派 TDD」。文章用一个订单/仓库的例子演示了两种写法,借 Meszaros 的术语厘清了 dummy、fake、stub、spy、mock 五种测试替身,并从驱动 TDD、夹具搭建、测试隔离、与实现耦合、设计风格等几个维度,把两种风格的取舍掰开了讲。

写出优秀的单元测试:最佳与最差实践

转载自 Steve Sanderson 的博客:好的单元测试和坏的单元测试差别在哪?作者的核心观点是——单元测试不是用来找 bug 的,找 bug 该靠手工测试和集成测试;单元测试的真正用途是在 TDD 流程里帮你稳健地设计软件组件。文章给出了一条从「纯单元测试」到「纯集成测试」的光谱,并总结了写出落在「甜蜜点」上的单元测试的几条实操建议。

乒乓缓冲区(Ping-Pong Buffers)

转载自 Embedded.fm 博客:当一个慢速外设(如 SPI 上的高精度 ADC)持续滴入数据、要攒够 N 个样本才能跑算法时,单缓冲会在「DMA 完成」与「下一个样本到来」之间发生冲突。乒乓缓冲区(ping-pong buffer)用两块大小为 N 的内存轮流承担「被 DMA 写入」与「被 CPU 处理」两个角色,从而在没有拷贝开销的情况下让数据采集与算法处理解耦——它本质上就是一个只有 2 个元素的循环缓冲区。

Intel 8087 浮点芯片内部的微码:寄存器交换

转载自 Ken Shirriff 的博客(righto.com):1980 年的 Intel 8087 浮点协处理器把所有运算都实现为芯片内部一层被称为「微码」的低级代码。本文以 FXCH(浮点寄存器交换)指令为样本,逐条拆解它背后的 14 条微指令,并讲解 8087 的栈式寄存器组、tag 标签位、异常屏蔽机制,以及作者如何用显微镜和神经网络从硅片里把 1648 条微指令逆向提取出来。