知识卡片

自更新需要双阶段

普通读书笔记卡 · 1799.b

内容

驻留更新程序若也要被替换,可先由旧更新器加载临时 Up2 到 RAM,再让 Up2 改写旧更新器,最后运行新更新器写入应用。发散:修改“正在负责修改别人的代码”必须拆成阶段,否则会擦掉自己脚下的地板。

参考来源

- 位置:《嵌入式系统设计与实践》第7章《更新代码》"7.2.1 修改驻留的更新程序"一节(源文件:_epub-src/OEBPS/text00102.html) - 结论依据:原文明确"在新代码存储机制中放入一个包含与旧更新程序类似的代码(称之为Up2)。旧的更新程序将它装入内存并运行。Up2将驻留的旧更新程序擦除,并将新更新程序写入。在新更新程序驻留并运行后……它可以将新的运行时映像装入内存",说明更新器更新自己需要拆成两阶段。 - 原始内容:如果确实需要对更新程序进行更新,那么可以用一种类似于一个骗局的双通过程……在新代码存储机制中放入一个包含与旧更新程序类似的代码(称之为Up2)。旧的更新程序将它装入内存并运行。Up2将驻留的旧更新程序擦除,并将新更新程序写入。在新更新程序驻留并运行后(可能需要重置系统),它可以将新的运行时映像装入内存。