知识卡片
暂存空间防止半更新
内容
固件更新先把新映像完整写入暂存空间并校验,再擦写运行代码,可避免通信中断或文件损坏后设备落入半新半旧状态。发散:暂存区把[[闪存按扇区思考]]带来的擦写风险变成可校验的阶段。
参考来源
- 位置:《嵌入式系统设计与实践》第7章《更新代码》"7.2 构建自己的更新程序"一节(源文件:_epub-src/OEBPS/text00102.html)
- 结论依据:原文明确"获得的新代码可能是损坏的……如果在检测错误之前,更新程序就已经将代码写入代码空间,那么校验和也于事无补……暂存空间是可选的,但是它可以有效地避免这些问题",即先写暂存区校验再擦写正式代码空间。
- 原始内容:第一,获得的新代码可能是损坏的。第二,通信方法中可能会漏掉一部分消息。第三,存储新代码的存储器可能会被移除。校验和可以检测出这些问题,但是如果在检测错误之前,更新程序就已经将代码写入代码空间,那么校验和也于事无补……暂存空间是可选的,但是它可以有效地避免这些问题。