FAQ~よくある質問~ | FAQマスタ詳細表示
FAQ詳細情報
ID | 10810736 |
---|---|
FAQカテゴリ(大) | リンカ |
最終更新日 | 2019-12-03 |
質問内容
ライブラリをRAMに配置したい
回答内容
FAQ作成対象製品:EWARM バージョン:v6.30.1以降
リンカ設定ファイルを変更する作業を伴います。
もし、リンカ設定の作業が初めての場合には、下記のURLにありますILNKガイドにて、リンカ設定の概要を理解頂くことから始めることをお勧めいたします。
https://www.iar.com/globalassets/2/ew_ilinkguide.jpn_20131006.pdf
以下、本題の、ライブラリをSRAM実行させる方法についての手順です。
1.ライブラリの登録
SRAM実行に限らずライブラリをリンクさせたい場合には必要な作業です。
ライブラリをリンクしたいプロジェクトにて、
GUIの上部メニューから、プロジェクト→ファイル追加 を選択し、
追加したいライブラリファイルを指定してください。
(拡張子のフィルタが入っている場合には「すべてのファイル」に変更してください)
2.リンカ設定ファイルのコピー
プロジェクトオプションの「リンカ」カテゴリの「設定」タブで
デフォルトのリンカ設定ファイルが表示されています。
変更するにあたりこれをコピーします。
「デフォルトのオーバーライド」にチェックを入れ、「編集」ボタンを押して、
何も変更せず「保存」を押してください。
リンカ設定ファイルのコピー先を指定してOKを押してください。
3.リンカ設定ファイルの編集
2.でコピーしたリンカ設定ファイルをエディタで開き、次の3つの作業を行います。
ここでは、RAMに置きたいライブラリを"lib1.a"とします。
(1)initializeの設定変更
initialize by copy { readwrite };
とある個所を
initialize by copy { readwrite, ro code object lib1.a };
に書き換えます。
(2)コピー元ROM領域の指定
リンカ設定ファイルに定義済みの、ROM領域のリージョン名を調べます。
ここでは、"ROM_region"だったとします。
リンカ設定ファイルの最後に次の1行を追加します。
place in ROM_region { ro code object lib1.a };
(3)コピー先RAM領域の指定
リンカ設定ファイルに定義済みの、RAM領域のリージョン名を調べます。
ここでは、"DRAM_region"だったとします。
リンカ設定ファイルの最後に次の1行を追加します。
place in DRAM_region { rw object lib1.a };
4.リンカマップの確認
プロジェクトオプションの「リンカ」カテゴリの「リスト」タブで
「リンカマップファイルの表示」にチェックを入れます。
メイクを実行しエラーがなければリンカマップが生成されています。
GUIのワークスペース中のOutputファイルグループを開き、
.mapの拡張子のファイルをダブルクリックするとリンカマップが表示されます。
ENTRY LISTの表示の中から、リンクしたライブラリの関数名を探し、
その関数がRAMのアドレスに配置されていることを確認します。
以上