LPC1768 MCUXpresso IDE环境下使用完整64K内存的方法
MCUXpresso IDE是NXP公司免费提供的一款针对自家平台的IDE简单来说就是 Eclipses 外加GCC编译器和自家芯片平台的IDE在这种平台下,也是默认情况下只能用32KB的SRAM,想用满64KB需要额外修改链接文件以这个链接文件.ld文件的一部分为例简单来说,就是一个萝卜一个坑,移动了就要把原来除外,不要漏bss区,data区都要做具体移动哪一个...
·
MCUXpresso IDE是NXP公司免费提供的一款针对自家平台的IDE
简单来说就是 Eclipses 外加GCC编译器和自家芯片平台的IDE
在这种平台下,也是默认情况下只能用32KB的SRAM,想用满64KB需要额外修改链接文件
以这个链接文件.ld文件的一部分为例
简单来说,就是一个萝卜一个坑,移动了就要把原来除外,不要漏
bss区,data区都要做
具体移动哪一个,看.map文件,哪个大移动哪一个,合理分配均衡就好
.data_RAM2 : ALIGN(4)
{
FILL(0xff)
PROVIDE(__start_data_RAM2 = .) ;
*(.ramfunc.$RAM2)
*(.ramfunc.$RamAHB32)/* emac.o memp.o等是你希望放到这个内存段的.data里 */
*emac.o(.data*)
*memp.o(.data*)
*lpc17xx_can.o(.data*)
*(.data.$RAM2*)
*(.data.$RamAHB32*)
. = ALIGN(4) ;
PROVIDE(__end_data_RAM2 = .) ;
} > RamAHB32 AT>MFlash512
/* MAIN DATA SECTION */
.uninit_RESERVED : ALIGN(4)
{
KEEP(*(.bss.$RESERVED*))
. = ALIGN(4) ;
_end_uninit_RESERVED = .;
} > RamLoc32
/* Main DATA section (RamLoc32) */
.data : ALIGN(4)
{
FILL(0xff)
_data = . ;
*(vtable)
*(.ramfunc*)
/* emac.o memp.o等是你刚刚放到别的内存段.data里,这里就需要将它们除外 */
*(EXCLUDE_FILE (*emac.o *memp.o *lpc17xx_can.o).data*)
. = ALIGN(4) ;
_edata = . ;
} > RamLoc32 AT>MFlash512
/* BSS section for RamAHB32 */
.bss_RAM2 : ALIGN(4)
{
PROVIDE(__start_bss_RAM2 = .) ;
/* emac.o memp.o等是你希望放到这个内存段的.bss里
*emac.o(.bss*)
*memp.o(.bss*)
*lpc17xx_can.o(.bss*)
*(.bss.$RAM2*)
*(.bss.$RamAHB32*)
. = ALIGN (. != 0 ? 4 : 1) ; /* avoid empty segment */
PROVIDE(__end_bss_RAM2 = .) ;
} > RamAHB32
/* MAIN BSS SECTION */
.bss : ALIGN(4)
{
_bss = .;
/* emac.o memp.o等是你刚刚放到别的内存段的.bss里 ,这里要将他们除外*/
*(EXCLUDE_FILE (*emac.o *memp.o *lpc17xx_can.o).bss*)
*(COMMON)
. = ALIGN(4) ;
_ebss = .;
PROVIDE(end = .);
} > RamLoc32
/* NOINIT section for RamAHB32 */
.noinit_RAM2 (NOLOAD) : ALIGN(4)
{
*(.noinit.$RAM2*)
*(.noinit.$RamAHB32*)
. = ALIGN(4) ;
} > RamAHB32
/* DEFAULT NOINIT SECTION */
.noinit (NOLOAD): ALIGN(4)
{
_noinit = .;
*(.noinit*)
. = ALIGN(4) ;
_end_noinit = .;
} > RamLoc32
更多推荐
已为社区贡献1条内容
所有评论(0)