内存地址如下: cnt 0x20008000 Data 1 main.o(.ARM.__AT_0x20008000)
bTest1 0x20008003 Data 1024 main.o(.ARM.__AT_0x20008003)
bTest2 0x68000000 Data 8192 main.o(.ARM.__AT_0x68000000)
注意点:
(1)在外部SRAM初始化之前不要去调用定义在外部SRAM地址处的变量。
(2)针对不同的ARM编译器,定义语句不同:
a、针对AC5(ARMCC Compiler version 5.x)
uint8_t cnt __attribute__((at(0x20008000)));
b、 针对AC6(ARM Compiler 6 (又名ARMCLANG))
uint8_t cnt __attribute__((section(".ARM.__at_0x20008000")));
(3)指定函数的存放地址
对于变量,在其后边加修饰;而对于函数,在声明处加修饰,注意,是在声明处,不是在函数定义处!!!变量指定的地址只能位于RAM区,常量和代码只能位于Flash区。 |