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

 

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐