HII、
我正在执行一个引导代码、必须从该代码执行两个固件映像。 启动代码和两个固件映像必须存储在闪存中。 它们的存储方式如 记忆图片段中所示。
一个变量必须存储在通用存储器区域的闪存存储器中、如代码段中所示、并且根据变量、必须在固件映像之间进行切换。 如何在 闪存中存储、更新和读取变量? 此外、我必须从闪存中执行固件映像。 我尝试使用函数(*(void (*)(void))(*(uint32_t *) 0x00004000)));。 从闪存地址执行是否足够?
我使用 LM 闪存编程器实用程序将程序加载到使用 USB 电缆连接的评估板。 当我将 blinky.bin 加载到0x00000000时、它可以正常工作。 但当我加载到0x00004000时、它不起作用。 原因可能是什么? 如果我最初将 bin 文件加载到某个地址、如果我再次将程序加载到0x00000000、该程序是否会保留在该地址中?
我将 blinky.bin 加载到0x00004000、然后将引导代码加载到0x00000000。 我必须从启动代码执行 blinky.bin。 我已经完成了、如代码段中所示。
我的方式是否正确? 请给我必要的建议。
谢谢、此致
Sandra