カスタマーサポートセンター

FAQ~よくある質問~ | FAQマスタ詳細表示

FAQ詳細情報

ID 10810338
FAQカテゴリ(大) 便利な使い方
最終更新日 2011-03-26

質問内容

ある変数を特定のRAMアドレスに配置する方法について教えてください。

回答内容

1) 一番簡単なのは、

__no_init unsiged char test[16] @0x001520;

と記述します。リンカ設定ファイルは通常手を入れる必要ありません。

 

2) セクション指定する場合は、

char test[16] @"MYSECTION";

 

と記述し、リンカ設定ファイルに以下の一行を追加します。

place at address mem:0x00001520 { section MYSECTION };

 

3) 記述例からお分かりのとおり、ソース上でアドレス指定した場合は、

初期化ができません。逆にセクション指定した場合は、初期化可能です。

 

4) @の含まれる構文は次の書き替えが可能です。

// __no_init unsiged char test[16] @0x001520; と同じ

#pragma location=0x001520

__no_init char test[16];

 

// char test[16] @"MYSECTION"; と同じ

#pragma location="MYSECTION"

char test[16];

 

// char test[16] @"MYSECTION"; と同じ

#define MYSEG _Pragma("location=\"MYSEGMENT\"")

MYSEG char test[16];

参考資料URL