我正在开发一个基于 Cortex-M3 的定制设备,我需要实现应用程序内编程 (IAP) 机制,以便可以在没有 JTAG 的情况下更新设备固件(我们将使用 TFTP 或 HTTP)。虽然 ST Microelectronics 提供的与 IAP 相关的代码示例对我来说已经足够清楚,但我并不真正理解重新刷新的工作原理。
据我了解,指令是由 CPU 通过 ICode 总线(当然还有预取块)从 Flash 中提取的。所以,这是我非常愚蠢的问题:为什么正在运行的程序在重新闪烁时不会被破坏(即更改正在运行的闪存)?
最佳答案
一个常见的解决方案是在闪存中有一个小的保留区域,用于存储实际的闪存程序。下载新固件后,只需跳转到该区域的代码即可。
当然,这个小区域在刷固件的时候不会被覆盖,只能通过其他方式(比如JTAG)来完成。因此,请确保此闪烁程序运行良好。 :)
关于arm - ARM (Cortex M3) 的应用程序内编程如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7994648/