工具与软件:
我有一个从闪存运行的引导加载程序。 最后、此 BL 选择闪存中两个可能的应用(A 或 B)之一并跳转到该应用。 应用程序应该从 RAM 运行。
在跳转之前、这些操作会按顺序完成(BL 中完成的最后一项操作):
WD_DISABLE > init_ram (清除整个 RAM)> 将所选应用从闪存复制到 RAM (A 或 B)>跳转到所选应用的闪存中的起始地址(A 或 B)
这样、所选的应用程序将开始运行(从 RAM)
首次实现此功能时、我决定从闪存而不是 RAM 运行 BL、因为我认为如果从 RAM 运行、在我最后清除整个 RAM 时、BL 本身会崩溃、然后它可能成功跳至所选的应用 A 或 B。当 BL 从闪存运行时、我遇到了非常奇怪的问题(在这里和这里介绍)。 有时工作正常、有时我会随机发生奇怪的行为。
我尝试从 RAM 运行 BL、发现它与我预期的不同、工作正常。
现在我的问题是:具有此结构并从 RAM 而不是闪存运行 BL 是否安全? 如果可以、那对我来说就是一个解决方案。 但如果您认为它可能并不总是能正常工作、我就必须丢弃这种情况(从 RAM 运行的 BL)、并专注于从闪存运行 BL、并解决 在这种情况下出现的问题。
我应该补充的是、 在 BL 末尾(在跳转之前)完成上述(清除 RAM +将选定的应用程序复制到 RAM +分支到其闪存的起始地址)完成的序列在一些链接到闪 存的汇编文件中完成(在专用于 BL 的闪存区域中)、即使我尝试从 RAM 运行 BL 时、仍然会将这些文件链接到闪存。