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

テクニカル・ノート 92924

アーキテクチャ:

ARM, RL78, RX, SH, STM8

コンポーネント:

linker

更新日:

2018/01/11 4:58

はじめに

このテクニカルノートは 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).zip , Example 2 (RX).zip , Example 2 (SH).zip) には、ROMとRAM両方の領域において、指定した順序でブロックを配置する例が含まれています。

詳細

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

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

申し訳ございませんが、弊社サイトではInternet Explorerをサポートしていません。サイトをより快適にご利用いただくために、Chrome、Edge、Firefoxなどの最新ブラウザをお使いいただきますようお願いいたします。