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 };