首先在GCC链接是加入下面指令就可以输出map文件
--Map=rtthread-stm32.map

下面代码就是将 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
网友评论