10.64 __attribute__((at(address))) 変数属性

この変数属性を使用すると、変数の絶対アドレスを指定できます。

構文

__attribute__((at( address )))
各項目には以下の意味があります。
address
必要な変数アドレスを指定します。

使用法

変数はそのセクションに置かれ、変数を含んでいるセクションは、コンパイラによって適切な型が与えられます。
  • 読み出し専用変数は、RO 型のセクションに置かれます。
  • 初期化された読み出し書き込み変数は、RW 型のセクションに置かれます。
    明示的にゼロに初期化された変数は、以下の場所に配置されます。
    • ZI 型のセクション(RVCT 4.0 以降)。
    • ZI ではなく RW 型のセクション(RVCT 3.1 以前)。このような変数は、コンパイラの ZI から RW 最適化の対象にはなりません。
  • 初期化されない変数は、ZI 型のセクションに置かれます。

GNU コンパイラはこの変数属性をサポートしません。

制約条件

リンカは、at 変数属性によって生成されたセクションを常に配置できるわけではありません。
コンパイラで、at 属性を不完全型での宣言に使用するとエラーが発生します。

エラー

指定されたアドレスにセッションを配置することができない場合、リンカはエラーメッセージを発行します。

const int x1 __attribute__((at(0x10000))) = 10; /* RO */
int x2 __attribute__((at(0x12000))) = 10; /* RW */
int x3 __attribute__((at(0x14000))) = 0; /* RVCT 3.1 and earlier: RW.
                                          * RVCT 4.0 and later: ZI. */
int x4 __attribute__((at(0x16000))); /* ZI */
関連情報
__at セクションの特定アドレスへの配置
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.