Renesas Synergy™

FAQ 105941 : プログラムのセクションを複数に分割するには、どうすればよいでしょうか?

Q: 質問

プログラムのセクションを複数に分割するには、どうすればよいでしょうか?現在、001000H~00F00FHと010000H~01EFFFFHに配置されているプログラムを130000Hにもプログラムを配置したいのですが。


A: 回答

「一つのセクションを離れた複数の領域にまたがって配置すること」 は不可能ですが、「個々の関数を異なるセクションに配置すること」は可能です。特定の関数群のみを特定のセクションに配置、かつそのセクションを .orgで 13000hに配置することができます。

[手順]

  1. 13000h(外部 ROM)に配置したい関数群のみ、別のファイルにまとめます。別ファイルが一個のファイルである必要はありません。
  2. 13000h(外部 ROM)に配置したい関数を格納したファイルの先頭に 「#pragma SECTION program mysection(変更後のセクション名)」 を記述します (任意のセクション名を指定できます)。
    * これによりプログラムのセクションが mysection_N, mysection_Fに変更されます。
    * この操作で変更されるのは programセクションのみです。データについては、別途、同様の操作を行なう必要があります。
  3. section.inc 中に、mysection_N, mysection_Fのアドレスを追加してください。
    * 標準ライブラリは program_Fセクションに配置されます。最終的なマップファイルで、program_N,program_Fセクションにデータが完全に残っていないことを確認するまでは、デフォルトのセクションを残しておくことをおすすめします。

    [前提事項]
    • 既定セクション名の命名規則詳細は、ユーザーズマニュアル 「NC77のメモリ配置」 をご覧ください。
    • デフォルトでは、near指定した関数は program_N, far指定した関数は program_Fセクションに配置されます。
    • #pragma SECTION program mysection と記述すると、near指定した関数は mysection_N,far指定した関数はmysection_Fセクションに配置されます。

 

適用製品

77xxシリーズ用Cコンパイラパッケージ [M3T-NC77WA]
他にご質問がございましたら、リクエストを送信してください