VS GDB 数据内存地址指定

首先在GCC链接是加入下面指令就可以输出map文件

--Map=rtthread-stm32.map
VS GDB 数据内存地址指定_第1张图片
Paste_Image.png

下面代码就是将 mem3base定位到内存my_malloc段

u8 mem3base[MEM3_MAX_SIZE] __attribute__ ((section (".ccm"), used));    //内部CCM内存池

malloc段的设置在 *.lds文件中

MEMORY
{
    FLASH (RX)   : ORIGIN = 0x08000000, LENGTH = 1M
    SRAM (RWX)   : ORIGIN = 0x20000000, LENGTH = 128K
    CCMRAM (RWX) : ORIGIN = 0x10000000, LENGTH = 64K
}
SECTIONS
{
    ...
        ...

    .ccm :
    {
        . = ALIGN(4);
        *(.ccm)
    } > CCMRAM
    
  ...
          ...
}

最后查看map文件,就可以看到mem3_base的地址在CCRAM区了。(CCRAM内存是单片机中的一块专用内存,只有CPU没访问,DMA等外设不能访问,访问速度比一般内存块)。

.ccm            0x10000000     0x6400
                0x10000000                . = ALIGN (0x4)
 *(.ccm)
 .ccm           0x10000000     0x6400 Debug/my_malloc.o
                0x10000000                mem3base

你可能感兴趣的:(VS GDB 数据内存地址指定)