我有以下问题:
STM32F7闪存从0x0800 0000开始。我的程序运行得很好。然后,我将闪存中的代码移到0x0802 0000,以便为将来的引导加载程序留出空间。我更改了MemoryMap.xml文件:
<MemorySegment start="0x08020000" name="FLASH" size="0x80000" access="ReadOnly"/>和相应的flashplacement.xml文件:
<ProgramSection alignment="0x100" load="Yes" name=".vectors" start=" 0x8020000"/>启动debuging....Program运行良好,直到发生链接错误,从而通过调用HAL_NVIC_SystemReset触发系统重启。结果是一个挂起的应用程序,这不是当我的代码驻留在闪存的开始(0x0800 0000)的情况下,有人知道为什么会发生这种情况吗?
问候
/Kostas
发布于 2018-12-24 06:53:13
答案很简单。你不能只是移动内存的起始地址。您的micro将从与通常相同的地址获取堆栈指针值和重置处理程序例程地址。您需要已经刷新了这个引导加载程序(至少是向量表和重置处理程序,它们将设置新的向量表、设置应用程序堆栈指针并将控制传递给您的应用程序重置处理程序
https://stackoverflow.com/questions/53905789
复制相似问题