コードライブラリをRAM領域に配置する
テクニカル・ノート 181208J
アーキテクチャ:
ARM
コンポーネント:
linker
更新日:
2018/12/18 9:26
はじめに
このテクニカルノートではコードライブラリをRAM領域に配置する方法について説明します。
ライブラリをRAMに配置するためには、リンカ設定ファイルを変更する作業を伴います。
解説
ライブラリをRAM実行させる方法についての手順は下記のとおりです。
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のアドレスに配置されていることを確認します。
まとめ
FAQ作成対象製品:Embedded Workbench for Arm バージョン:v6.30.1以降.
全ての製品名は、それぞれの所有者の商標または登録商標です