IAR链接脚本添加外部ram空间

场景1:

外部ram单独使用,不和内部ram混杂在一起使用(比如系统变量及函数均在内部ram执行,只是人为将部分大变量放到外部ram空间运行)

/* 定义扩展RAM地址 */
define symbol __ICFEDIT_region_EXRAM_start__    = 0xxxxxxx;
define symbol __ICFEDIT_region_EXRAM_end__      = 0xxxxxxx;
define region EXRWMEM_region = mem:[from __ICFEDIT_region_EXRAM_start__ to __ICFEDIT_region_EXRAM_end__];
place in EXRWMEM_region { readwrite data section EXRAM };
define exported symbol EXRAM_BASE_ADDR = __ICFEDIT_region_EXRAM_start__; //导出EXRAM_BASE_ADDR 

/*定义内部RAM*/
define region RWMEM = mem:[from 0XXXXXX to 0XXXXXXXX];
place in RWMEM { block HEAP, readwrite, section .noinit };

 

外部内存使用:

#pragma location = "EXRAM"
uint8_t testdata = 0x00;

 

场景二: 内部外部ram同时使用

/* 定义扩展RAM地址 */
define symbol __ICFEDIT_region_EXRAM_start__    = 0xxxxxxx;
define symbol __ICFEDIT_region_EXRAM_end__      = 0xxxxxxx;

/*定义内部RAM*/

define symbol __ICFEDIT_region_RAM_start__    = 0xxxxxxx;
define symbol __ICFEDIT_region_RAM_end__      = 0xxxxxxx;

define region RWMEM = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__ ]|mem:[from __ICFEDIT_region_EXRAM_start__ to __ICFEDIT_region_EXRAM_end__ ];
place in RWMEM { block HEAP, readwrite, section .noinit };

 

posted @ 2020-10-15 10:56  迷途小菜鸟  阅读(702)  评论(0编辑  收藏  举报