Making My Rust Program Space-Flight Ready
5 hours ago
- #error correction
- #Rust programming
- #radiation hardening
- 一个名为“hugebool”的Rust crate引入了一种16字节的“布尔安”类型,用于辐射硬化。
- “布尔安”使用位模式(如交替的0x55和0xAA),通过最接近匹配解码使单比特翻转可检测和可修复。
- 三重模块冗余通过通用的“Rad”结构实现,用于投票和清理,保护任何“Eq + Copy”类型。
- 基准测试显示,硬化读取(例如,通过投票和清理)比普通布尔读取慢约12倍,但仍然很快(每秒1.95亿次)。
- 局限性:保护仅适用于堆分配数据,不适用于寄存器、指令指针或其他系统组件,这与像RAD750这样的专用硬件不同。
- 该方法利用Rust的类型系统将静默的硬件错误转化为可检测的错误,为关键系统提供了一种经济有效的替代方案。