知识卡片
自更新需要双阶段
内容
驻留更新程序若也要被替换,可先由旧更新器加载临时 Up2 到 RAM,再让 Up2 改写旧更新器,最后运行新更新器写入应用。发散:修改“正在负责修改别人的代码”必须拆成阶段,否则会擦掉自己脚下的地板。
参考来源
- 位置:《嵌入式系统设计与实践》第7章《更新代码》"7.2.1 修改驻留的更新程序"一节(源文件:_epub-src/OEBPS/text00102.html)
- 结论依据:原文明确"在新代码存储机制中放入一个包含与旧更新程序类似的代码(称之为Up2)。旧的更新程序将它装入内存并运行。Up2将驻留的旧更新程序擦除,并将新更新程序写入。在新更新程序驻留并运行后……它可以将新的运行时映像装入内存",说明更新器更新自己需要拆成两阶段。
- 原始内容:如果确实需要对更新程序进行更新,那么可以用一种类似于一个骗局的双通过程……在新代码存储机制中放入一个包含与旧更新程序类似的代码(称之为Up2)。旧的更新程序将它装入内存并运行。Up2将驻留的旧更新程序擦除,并将新更新程序写入。在新更新程序驻留并运行后(可能需要重置系统),它可以将新的运行时映像装入内存。