STM32
直播中

安德森大

9年用户 1365经验值
擅长:接口/总线/驱动
私信 关注
[问答]

STM32CubeMX生成的makefile如何更改程序烧录地址?

现在程序需要烧录到0x8008000的地址
如何更改makefile 和 STM32F103C8Tx_FLASH.ld文件 ,可以让程序正常的运行?

回帖(1)

ningkui

2024-6-3 14:14:04
要更改STM32CubeMX生成的makefile中的程序烧录地址,您需要按照以下步骤操作:

1. 打开STM32CubeMX生成的makefile文件。通常,这个文件位于项目的根目录下,名为"Makefile"。

2. 在makefile文件中,找到以下行:

```
# Linker script
LD_SCRIPT = STM32F103C8Tx_FLASH.ld
```

3. 打开STM32F103C8Tx_FLASH.ld链接脚本文件。这个文件通常位于项目的"Src"文件夹中。

4. 在STM32F103C8Tx_FLASH.ld文件中,找到以下行:

```
_estack = ORIGIN(STACK);
```

5. 在上述行的下方,添加一个新的内存定义,如下所示:

```
MEMORY
{
  /* ... 其他内存定义 ... */

  /* 添加新的内存定义 */
  custom_flash (rx) : ORIGIN = 0x8008000, LENGTH = 0x00000000
}
```

这里,我们将新的烧录地址设置为0x8008000,并将其命名为"custom_flash"。您可以根据需要调整LENGTH值。

6. 在STM32F103C8Tx_FLASH.ld文件中,找到以下行:

```
/* ... 其他内存定义 ... */
```

7. 在上述行的下方,添加一个新的内存定义,如下所示:

```
_estack = ORIGIN(STACK);
```

8. 在STM32F103C8Tx_FLASH.ld文件中,找到以下行:

```
/* ... 其他内存定义 ... */
```

9. 在上述行的下方,添加一个新的内存定义,如下所示:

```
/* 添加新的内存定义 */
REGION_ALIAS("custom_flash", custom_flash);
```

10. 在STM32F103C8Tx_FLASH.ld文件中,找到以下行:

```
/* ... 其他内存定义 ... */
```

11. 在上述行的下方,添加一个新的内存定义,如下所示:

```
/* 添加新的内存定义 */
REGION_TEXT(custom_flash, custom_flash, 0x8008000);
```

12. 保存STM32F103C8Tx_FLASH.ld文件的更改。

13. 返回到makefile文件,找到以下行:

```
# Linker script
LD_SCRIPT = STM32F103C8Tx_FLASH.ld
```

14. 确保LD_SCRIPT变量的值已更新为新的链接脚本文件名(如果已更改)。

15. 保存makefile文件的更改。

现在,您已经成功更改了程序烧录地址。在烧录程序时,它将烧录到0x8008000地址。请确保您的程序已正确配置以从该地址启动。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分