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

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

FAQ詳細情報

ID 10810790
FAQカテゴリ(大) リンカ
最終更新日 2015-03-09

質問内容

特定ソースコードの関数をまとめてRAM上に配置したいときは(自動)

回答内容

FAQ作成対象製品:EWARM  バージョン:v6.30.1以降

ある特定Cソースコードあるいはアセンブラコードの関数をRAM上に配置する方法はいくつかあります。
ここではtext.cの関数をすべてRAM上に展開します。

1.リンカ設定ファイルの編集

リンカ設定ファイル(.icf)をエディタで開き、次の3つの作業を行います。


(1)initializeの設定変更


      initialize by copy { readwrite };

とある個所を

  initialize by copy { readwrite, ro code object test.o };

    に書き換えます。

 

(2)コピー元ROM領域の指定

リンカ設定ファイルに定義済みの、ROM領域のリージョン名を調べます。

ここでは、"ROM_region"だったとします。

リンカ設定ファイルの最後に次の1行を追加します。

  place in ROM_region  {  ro code object test.o };

(3)コピー先RAM領域の指定

リンカ設定ファイルに定義済みの、RAM領域のリージョン名を調べます。

ここでは、"DRAM_region"だったとします。

リンカ設定ファイルの最後に次の1行を追加します。

place in DRAM_region  {  rw object test.o};

3.リンカマップの確認


プロジェクトオプションの「リンカ」カテゴリの「リスト」タブで

「リンカマップファイルの表示」にチェックを入れます。

メイクを実行しエラーがなければリンカマップが生成されています。

GUIのワークスペース中のOutputファイルグループを開き、

.mapの拡張子のファイルをダブルクリックするとリンカマップが表示されます。

ENTRY LISTの表示の中から、リンクしたソースコードの関数名を探し、

その関数がRAMのアドレスに配置されていることを確認します。

 
ソースごとにobjectを,(カンマ)区切りで追加することができます。

参考資料URL