绝大多数的flash只读存储器不能在写入的同时读出(那些“读写同时进行”的装置除外),所以你不能把flash程序复制到RAM(具体的是不能将全部的导入器复制到RAM),特别是在解锁、更改、重新编程flash只读存储器之前。
如果你有足够的RAM(请注意在导入过程中绝大多数的RAM是“空”的),所以flash可重新编程的代码可以在重新对ROM装置编程之前返回所有的flash只读存储图象到RAM。这一方式可以在解锁、更改、重新编程之前核实只读存储器图象的校验和。
不要将导入块本身包含在新的flash只读存储器图象文件中,因为一般不会随意对flash只读存储器重新编程。如果你不能将所有的图象从RAM导入到ROM,你将很有必要更改和重新编写导入块,因为这些数据都会传递到导入器。
请注意务必在编写flash只读存储器之后验证校验和,以确保所有的工作都能正常运行。
如果flash只读存储器已经核实程序的代码是正确,可以通过程序中特定位置实现对程序的控制。程序中特定位置可以是其他导入器的起始位置,其他导入器也是执行系统的初始化和准备高等级的环境。因为其他导入器位于flash只读存储器的区域内,你可以随意对程序进行修改。
如果在RAM中运行程序代码,在起动RAM程序之前有时候需要将程序代码从flash只读存储器复制到RAM。如果可能,你应该还要安排其他导入器执行这样的复制。
这对你在以后的修改是有好处的,特别是当你需要更改RAM位置时。例如,软件修改只需要复制flash只读存储器部分代码到RAM,所以你应该不要把这些代码放在受保护的块中。
最后,不要忘记,当flash只读存储器不受任何损坏时,将一些调用导入器的方式包含在程序中,这样你才可以在一般的装置中执行软件的更新。