查看: 859|回复: 0

LPC1768 MCUXpresso IDE环境下使用完整64K内存的方法

[复制链接]
  • TA的每日心情
    擦汗
    前天 18:23
  • 签到天数: 590 天

    [LV.9]以坛为家II

    31

    主题

    1344

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3575
    最后登录
    2024-4-22
    发表于 2021-5-26 15:52:58 | 显示全部楼层 |阅读模式
    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 = .;

    ————————————————
    版权声明:本文为CSDN博主「一只爱做笔记的码农」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/tpoem/article/details/98376697

    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-24 01:31 , Processed in 0.103230 second(s), 18 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表