u32 testsram[250000] __attribute__((at(0X68000000)));

来源:互联网 发布:淘宝客服自动分流不均 编辑:程序博客网 时间:2024/06/08 12:48

定义一个数组,每个数占4个字节,数组包含250000个值,采用绝对地址定义,数组的起始地址在0x68000000。

U32表示一个数占4个字节(B),这个数组一共包涵250000个数,也就是说这个数组的大小为4*250000=1*10^7=100 0000=100万B=1000KB=1MB,这个数组比我们实际用的SRAM较小,1M=1024KB,小了24KB。

attribute((at(address)))
该变量属性可以指定变量的绝对地址。
变量被放置在自己的节中,且包含变量的节会被编译器给予一个适当的类型:
„ 只读变量被放置在RO类型的节中;
„ 已初始化的读写变量被放置在RW类型的节中。
特别的,显式地初始化为0的变量被放置在RW节而不是ZI节中。这些变量并不参与编译器从ZI到RW的优化。
„ 未初始化的变量被放置在ZI类型的节中。
注意
GNU编译器不支持该变量属性。
语法
attribute((at(address)))
其中:
address
是变量的所需地址( desired address)。
__at 关键字紧随变量名出现。
限制
链接器并不总是允许放置由at 变量属性产生的节。
错误
如果不能在指定的地址放置一个节,链接器会给出一个错误信息。
示例
const int x1 attribute((at(0x10000))) = 10; /* RO / int x2 attribute((at(0x12000))) = 10; / RW */int

原创粉丝点击