Renesas Synergy™

FAQ 1008267 : フラッシュ/外付けROMの再リンク機能の実現のためには、どのような処理が必要ですか?

回答

以下の処理を行って、ブート領域側、フラッシュ領域側の2つの実行形式ファイルを作成することにより、 再リンク機能が実現されます。

 

  1. アセンブラ・ソースに、.ext_func疑似命令を記述します。
    .ext_func疑似命令で、対象となる関数(=実体がフラッシュ領域に存在し、 ブート領域から呼び出される関数)について、ID値を指定します。
    この際、記述漏れやソース間の矛盾が生じることを防ぐため、.ext_func記述は1つのファイルにまとめ、 ブート側、フラッシュ側を問わず、 全アセンブラ・ソースに.include疑似命令でインクルードすることを推奨します。

     

  2. ブート領域側、フラッシュ領域側それぞれに、リンク・ディレクティブを用意します。
    同じリンク・ディレクティブを使用してもかまいませんが、記述が煩雑になるため、 それぞれの領域用にリンク・ディレクティブを記述することを推奨します。

     

  3. フラッシュ領域側のオブジェクトをアセンブルする際、“-zf”オプションを指定します。

     

  4. オブジェクトをリンクする際、領域ごとに次のようにオプションを指定します。

     

    領域名 オプション指定形式
    ブート領域 -ext_table アドレス
    フラッシュ領域 -ext_table アドレス
    -zf ブート領域側オブジェクト名

    -ext_tableオプションにより、指定したアドレスに分岐テーブルが作成されます。
    ブート領域側での関数呼び出しは、いったん、分岐テーブルへ分岐し、 そこからフラッシュ領域内の関数へ分岐することで解決されます。
    なお、分岐テーブルのアドレスは、フラッシュ領域内のアドレスとします。
    -zfオプションでは、フラッシュ領域側で参照する、 ブート領域側の実行形式ファイル名(ROM化前のオブジェクト・ファイル)を指定します。



PMからのオプション設定時には、アセンブラオプションの設定ダイアログに-zfオプションはありません。
実行形式ファイル作成時には、リンカオプションの設定ダイアログで設定します。
アーカイブ・ファイル(ライブラリ)作成時には、アーカイバオプションの設定ダイアログで設定します。
どちらの場合も、内部的に、アセンブラに-zfオプションが渡されます。
-ext_tableオプションは、リンカオプションの設定ダイアログの"フラッシュ"にあります。
アーカイバのフラッシュ領域用オプションは、 アーカイバオプションの設定ダイアログの"オプション"にあります。

適用製品

V850用コンパイラパッケージ [CA850]
他にご質問がございましたら、リクエストを送信してください