首页
/ Hubris项目中主机闪存双槽管理机制的技术解析

Hubris项目中主机闪存双槽管理机制的技术解析

2025-06-26 23:25:06作者:傅爽业Veleda

背景与问题场景

在基于Gimlet硬件架构的Hubris项目中,主机闪存(host flash)采用双槽设计(QSPI 0和QSPI 1),通过模拟多路复用器实现启动槽的选择。当前实现中存在一个关键问题:当进行在线固件更新时,若主机意外重启,可能导致系统从半完成的镜像槽启动,造成系统不稳定。

硬件架构基础

系统采用两级信号路由机制:

  1. 第一级2:1多路复用器:选择QSPI信号来自服务处理器(SP)或主机
  2. 第二级1:2解复用器:将片选信号映射到具体闪存芯片

这种设计通过HostFlash.set_devHostFlash.set_mux两个RPC接口分别控制设备选择和信号路由。

现有机制的风险点

当前实现中,控制平面代理(control-plane-agent)执行以下典型操作序列时存在风险:

  1. 将启动设备从QSPI 0切换到QSPI 1
  2. 开始分块写入新固件镜像
  3. 若此时主机意外重启(如内核崩溃或MAPO事件)

此时系统会尝试从可能不完整的QSPI 1镜像启动,导致启动失败或运行异常。

改进方案设计

核心概念分离

新方案引入两个独立逻辑状态:

  1. 启动槽(Boot Slot):系统实际启动时使用的闪存槽
  2. 写入槽(Write Slot):执行固件更新时写入的目标槽

原子化写入操作

关键改进点是实现原子化的"写入目标槽"操作:

  1. 在内存中维护目标更新槽状态
  2. 写入时临时切换物理多路复用器
  3. 写入完成后立即恢复原始启动槽选择

这种设计既保证了写入的正确性,又最大限度减少了槽切换带来的风险窗口。

异常处理增强

结合硬件提供的RESET_L计数器,系统可以:

  1. 检测主机意外重启事件
  2. 自动回退到安全状态(A2)
  3. 根据预设策略决定是否自动恢复运行(A0)

实现考量

  1. 向后兼容性:新方案保持与现有Gimlet硬件的兼容
  2. 状态持久化:启动槽选择信息需要可靠存储在两块闪存上
  3. 错误恢复:与MAPO处理机制协同工作(#607相关)
  4. 操作原子性:确保写入过程中的多路复用器状态不会意外保持

预期收益

该改进方案能够:

  1. 显著降低固件更新过程中的系统风险
  2. 保持硬件兼容性的同时提升可靠性
  3. 为后续在线更新功能提供更健壮的基础
  4. 改善系统异常情况下的自恢复能力

总结

Hubris项目通过重构主机闪存的双槽管理机制,实现了启动槽与写入槽的逻辑分离,配合原子化写入操作和增强的异常检测,有效提升了系统在固件更新场景下的可靠性。这一改进既解决了现有架构下的潜在风险,又为未来的功能扩展奠定了良好基础。

登录后查看全文
热门项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
22
6
docsdocs
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
165
2.05 K
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
8
0
leetcodeleetcode
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
60
16
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
954
562
apintoapinto
基于golang开发的网关。具有各种插件,可以自行扩展,即插即用。此外,它可以快速帮助企业管理API服务,提高API服务的稳定性和安全性。
Go
22
0
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
1.01 K
396
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
407
387
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
199
279
giteagitea
喝着茶写代码!最易用的自托管一站式代码托管平台,包含Git托管,代码审查,团队协作,软件包和CI/CD。
Go
17
0