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

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

FAQ詳細情報

ID 10810870
FAQカテゴリ(大) リンカ
最終更新日 2015-12-13

質問内容

TN92924: ブロックを指定された順序でリンクする

回答内容

ターゲット:  ARM, RL78, RX, SH, STM8 
コンポーネント  リンカ 
公開 2014/05/13 15:21 

 

概要
このテクニカルノートは IAR ILINK Linker リンカの出力を特定の順番にする方法を解説します。

 

背景
セクションやブロックをリンクするとその順番が不定となります。(これはILINKの仕様です)

 

解決策
リンカー ディレクティブの define block は、fixed order パラメータでブロックの中身を固定順序にすることで、補完することができます。

 

例 1
しばしば (.icf ファイル) 内の RAM に配置ディレクティブはようになります。

place in RAM_region { readwrite,
 block CSTACK, block SVC_STACK, block IRQ_STACK, block FIQ_STACK,
 block UND_STACK, block ABT_STACK, block HEAP };

 

固定順序にしたい場合は、上のディレクティブを以下の2つのディレクティブに置き換えます:>

define block FIXED_ORDER_RAM with fixed order { block CSTACK, 
 block SVC_STACK, block IRQ_STACK, block FIQ_STACK,
 block UND_STACK, block ABT_STACK, block HEAP};

place in RAM_region { readwrite, last block FIXED_ORDER_RAM };

 

例 2
サンプルプロジェクト(Example 2(ARM) .zipExample 2(RX) .zipExample 2 (SH) .zip) に示すプロジェクトには、ROM と RAM の両方の領域で指定した順序で、ブロックを配置するビルド可能な例が含まれています。

 

詳細
define block ディレクティブは、C/C++ 開発ガイドの「セクション取扱い」の章に記載されています。

 

全ての製品の名前は、それぞれの所有者の商標または登録商標です。


参考資料URL