我已将 STM32F4 项目从 Keil uVision5 移植到 Eclipse(GNU MCU 插件)。
在我的 Keil uVision5 项目中,我曾经使用第 7 块 (0x080E0000) 作为我的引导代码(我使用STM32 ST-LINK Utility工具验证我的引导代码确实位于第 7 块),我曾经使用 Keil uVision5 非常容易地配置它界面如下图:
如果我没记错的话,在我的 Keil uVision 项目(其内存配置如上所示)中,MCU 从第 0 块 (0x08000000) 启动,然后立即跳转到第 7 块 (0x080E0000) 以执行我的代码。如果我错了,请告诉我。
我的问题在于我的 Eclipse 项目。您可能已经知道,我们使用名为 mem.ld 的链接描述文件配置内存映射。我尝试使用 mem.ld 模仿相同的行为,但我想我失败了。每当我刷新 Eclipse 生成的可执行文件时,我的代码都不会运行。此外,我找不到在 mem.ld 文件中指示启动区域的方法。下面是我在 mem.ld 文件中的内存配置:
MEMORY
{
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K
CCMRAM (xrw) : ORIGIN = 0x10000000, LENGTH = 64K
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 16K
FLASHB1 (rx) : ORIGIN = 0x080E0000, LENGTH = 640K
EXTMEMB0 (rx) : ORIGIN = 0x00000000, LENGTH = 0
EXTMEMB1 (rx) : ORIGIN = 0x00000000, LENGTH = 0
EXTMEMB2 (rx) : ORIGIN = 0x00000000, LENGTH = 0
EXTMEMB3 (rx) : ORIGIN = 0x00000000, LENGTH = 0
MEMORY_ARRAY (xrw) : ORIGIN = 0x20002000, LENGTH = 32
}
你能帮我用 mem.ld 文件模仿 Keil uVision5 的相同行为吗?我在 mem.ld 配置中犯了什么错误?正确的配置应该是什么?
提前非常感谢。