isymexport を使用して、シンボルをプロジェクトから他のプロジェクトにエキスポートする
テクニカル・ノート 95375
アーキテクチャ:
ARM
コンポーネント:
linker
更新日:
2017/12/13 8:15
はじめに
constデータを(たとえば)外部フラッシュに配置し、後で別のプロジェクトのデータを使用したいとします。 このテクニカルノートで説明されている方法を使用すると、constデータのシンボル名を使用することができます(つまり、絶対アドレス配置されたシンボルを使用したり、アクセスするためにそのアドレスを使用する必要はありません)。 また、constデータをフラッシュするために再ダウンロードして、プロジェクトをリビルドする必要もありません。
解決方法
IAR Absolute Symbol Exporter "isymexport" を使用します。 ステップバイステップの手順を以下に示します:
A1. const data library 用のプロジェクトを作成します。
A2. ターゲットデバイスを設定します。 (例えば Cortex-M3)
A3. アプリケーションと別のアドレス範囲を使用するようにリンカ設定します。
A4. 一般オプション -> ライブラリ設定 -> ライブラリ: なし を選択
A5. リンカ -> ライブラリ オプションでデフォルトのプログラムエントリに既存のシンボルを設定します。
A6. ビルドアクション -> ポストビルドコマンドラインに ライブラリシンボルのエクスポートを追加します:
$TOOLKIT_DIR$\bin\isymexport.exe "$TARGET_PATH$" "$PROJ_DIR$\const_lib.symbols" --edit "$PROJ_DIR$\const_data_lib.edit"
B1. アプリケーション用のプロジェクトを作成します。
B2. ターゲットデバイスを設定します。 (例えば Cortex-M3)
B3. ライブラリと別のアドレス範囲を使用するようにリンカ設定します。
B4. オプション -> リンカ -> ライブラリ -> 追加ライブラリ にエクスポートしたライブラリシンボルを追加します:
$PROJ_DIR$\const_lib.symbols
C1. constデータが格納されているフラッシュがIAR Embedded Workbench for ARM フラッシュローダでサポートされている場合、オプション -> デバッガ -> イメージ -> 追加のイメージのダウンロード -> パス に出力ファイルを追加することにより、constデータライブラリをターゲットデバイスにダウンロード(少なくとも1回は必要)することができます:
$PROJ_DIR$\Debug\Exe\const_lib.out
解説
- サンプルプロジェクト: Example project (ARM 8.11).
- 以下は設定が必要なプロジェクトオプションのスクリーンショットです
- ライブラリでは、constデータ変数に__rootとマークし、リンカにデータを保持させます。
- シンボルは "const_lib.symbols"ファイルに保存されます。 使用される厳密な名前/拡張子はないことに注意してください。".symbols"は例です。
全ての製品名は、それぞれの所有者の商標または登録商標です