keil和IAR自动分配SDRAM空间设置使用
Keil:
修改.sct文件
添加
RW_RAM1 0xC0400000 UNINIT 0x00400000 { ; RW data
.ANY (SD_RAM1)
}
使用
#define LOCATION_ATTRIBUTE(name) __attribute__ ((section(name))) __attribute__ ((aligned(4)))
uint8_t sdram_buf[0x100000] __attribute__ ((section("SD_RAM1"),zero_init));
变量属性修饰符__attribute__((section(“name”),zero_init))用于将变量强制定义到name属性数据节中,zero_init表示将未初 始化的变量放到ZI数据节中。因为“NO_INIT”这显性命名的自定义节,具有UNINIT属性。
IAR:
修改.icf文件
使用:#pragma location="sdram_mem"
volatile __no_init uint8_t SdramArray1[0x3fff00];
#pragma location="sdram_mem"
volatile __no_init uint8_t SdramArray2[0x100];