MDK启动文件堆栈空间手动指定地址方法和验证
【应用场景】
比如STM32H743/H750系列,他有多个RAM空间,这里我们将需要快速执行的堆栈空间分配到DTCM, 0x2000 0000,128KB容量末尾。程序主RAM分配到AXI SRAM, 0x2400 0000,512KB容量
【设置验证】
默认设置的情况下,堆栈空间是这样的,从地址0x240011C0开始,前1KB是heap,后面1KB是stack
为了方便看问题,我将堆栈都初始化为0x5A了。
为了方便展示问题,我们这里设置STACK大小和HEAP大小都配置为1KB,并设置STACK到DTCM末尾的1KB,即如下配置:
; Amount of memory (in bytes) allocated for Stack
; Tailor this value to your application needs
; <h> Stack Configuration
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
Stack_Size EQU 0x00000400
AREA STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem SPACE Stack_Size
__initial_sp EQU 0x2001FFFF
; <h> Heap Configuration
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
Heap_Size EQU 0x0000400
AREA HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem SPACE Heap_Size
__heap_limit
这个时候,可以看到,stack已经没有再占用AXI SRAM空间了