2 Replies Latest reply on May 25, 2020 2:33 AM by NoTa_4591161

    Community Translation - Modifying the Default Memory Map in FX3, CX3, FX3S, SD3, FX2G2, and SD2 - KBA229114

    NoTa_4591161

      Hi,

       

      I would like to translate KBA229114 into Japanese.

      Please confirm to my work.

       

      Thanks,

      Kenshow

        • 2. Re: Community Translation - Modifying the Default Memory Map in FX3, CX3, FX3S, SD3, FX2G2, and SD2 - KBA229114
          NoTa_4591161

          Hi Jenna-san,

           

          Japanese translation was over.
          Please check below.

           

          Original KBA:

          Modifying the Default Memory Map in FX3, CX3, FX3S, SD3, FX2G2, and SD2 - KBA229114

           

          Thanks.

          Kenshow

          ==============================

           

          タイトル: FX3、CX3、FX3S、SD3、FX2G2、およびSD2のデフォルトのメモリマップの変更 - KBA229114

           

          バージョン:**

           

          質問: FX3CX3FX3SSD3FX2G2、およびSD2のリンカスクリプトファイルを変更するにはどうすればよろしいでしょうか?

           

          回答: Cypress FX3ファミリチップは、256 KB512 KB2つのSRAMサイズで利用できます。各SRAMサイズのチップには、リンカスクリプトファイル(.ldファイル)を通じて提供される独自のメモリマッピングがあります。リンカスクリプトファイルに加えて、すべてのプロジェクトのプロジェクトディレクトリにcyfxtx.cファイルが必要です。cyfxtx.cファイルは、アプリケーション固有の例外ハンドラとメモリ割り当てルーチンを提供します。リンカスクリプトファイルは、Eclipse統合開発環境(IDE)のリンカステージで使用され、実行可能およびリンク可能な形式(.elf)ファイルを構築します。cyfxtx.c定義されたマクロは、ドライバーヒープとDMAバッファのメモリ領域を割り当てるために実行時に使用されます。

           

          デフォルトのリンカスクリプトファイル(.ldファイル)およびcyfxtx.cファイルで提供されるメモリマッピングが要件と競合する場合があります。 たとえば、212 KBのコード領域サイズが必要な場合でも、リンカスクリプトファイルではデフォルトのコードサイズが180 KBに設定されています。 このナレッジベースの記事(KBA)は、そのような問題に対処し、512 KB SRAMチップのリンカスクリプトファイルとcyfxtx.cファイルを変更する手順を提供します。 このKBAを参照して、256 KB SRAMチップを変更することもできます。

           

          デフォルトのリンカスクリプトファイル

           

          512 KB SRAMチップのデフォルトのリンカスクリプトファイル(fx3.ld)は、FX3 SDKのデフォルトパスであるC:\Program Files(x86)\Cypress\EZ-USB FX3 SDK\1.3\fw_build\fx3_fwにあります。

           

          リンカスクリプトファイルは、Tightly-Coupledメモリ(ITCM)セクションおよびシステムメモリとデータメモリにメモリを割り当てます。

           

          ITCMは、例外ベクターと割り込みサービスルーチン(ISR)コードを保持するための16 KBの専用スペースです。これは、ARM® CPUからITCMメモリ領域に読み書きすることは可能である間は、DMA転送のための転送先としてこのメモリ領域を使用することは不可能です。ITCM512 KBSRAMメモリ空間の一部ではないことに注意してください。

           

          システムメモリ空間は、アプリケーションコードを格納するために使用され、コード領域とも呼ばれます。

          データメモリ空間は、初期化されたデータとBSSデータ(初期化されていないグローバルデータ)を格納するために使用されます。

           

          512 KB SRAMのデフォルトメモリマップ

           

          1に、512 KB FX3ファミリチップのデフォルトのアプリケーションメモリマップを示します。512 KB SRAMのアドレスは0x40000000で始まり、0x4007FFFFで終わることに注意してください。

          1. 512 KB FX3ファミリチップのデフォルトメモリマップ

           

          ベースアドレス

          サイズ(KB

          ディスクリプタ領域

          0x40000000

          12

          コードエリア

          0x40003000

          180

          データエリア

          0x40030000

          32

          ドライバーエリア

          0x40038000

          32

          バッファ領域

          0x40040000

          224

          セカンドステージブートエリア

          0x40078000

          32

           

          :第2段階のブート領域はオプションです(アプリケーションが永続的なメモリ内ブートローダーを使用する場合にのみ必要です)。このブート領域が使用されていない場合、cyfxtx.cCY_U3P_SYS_MEM_TOP0x40080000に変更することにより、このセグメント用に予約されている32 KBをバッファ領域とマージできます。

          上記のメモリマッピングは、すべてのFX3ファミリサンプルプロジェクトのcyfxtx.cファイルに記載されてます。

           

          リンカスクリプトファイルとcyfxtx.cファイルの変更

           

          ユーザーアプリケーションに次の要件があるとします。

          • コードサイズ212 KB
          • 224 KBDMAバッファスペースを維持する

           

          DMAバッファサイズを224 KBに維持しながらコードサイズを32 KB増やすには、第2ステージのブートローダー領域の割り当てを解除する必要があります。

           

          要件に従ってメモリスペースを調整するには、リンカスクリプトファイルのデフォルトのメモリマッピングと、cyfxtx.cファイルで定義されたMACROSを変更します。

          リンカスクリプトファイルを変更するには、次の手順に従います。

           

          1. SYS_MEMスペースの長さを0x35000212 KBに相当)に変更します。

           

          SYS_MEM : ORIGIN = 0x40003000    LENGTH = 0x35000

           

          2. DATAスペースのORIGIN0x40038000に調整します(つまり、0x40003000 + 0x35000

           

          DATA  : ORIGIN = 0x40038000    LENGTH = 0x8000

           

          リンカスクリプトファイルを変更した後、cyfxtx.cファイルのMACROSを変更します。

           

          1. ヒープベースを0x40040000に変更します

           

          #define CY_U3P_MEM_HEAP_BASE0x40040000

           

          2. SYS_MEM_TOP0x40080000に変更します

           

          #define CY_U3P_SYS_MEM_TOP0x40080000

           

          RAMの最後の32 KBは、第2段階のブート操作用に予約されていることに注意してください。SYS_MEM_TOP値は0x40080000に変更されています。これは、アプリケーションに第2ステージのブート領域が必要ないためです。

           

          2では、デフォルトのメモリマップと変更されたメモリマップを比較しています。

           

          2. デフォルトのメモリマップと変更されたメモリマップの比較

           

          デフォルトのメモリマップ

          変更されたメモリマップ

          ベースアドレス

          サイズ(KB

          ベースアドレス

          サイズ(KB

          ディスクリプタ領域

          0x40000000

          12

          0x40000000

          12

          コードエリア

          0x40003000

          180

          0x40003000

          212

          データエリア

          0x40030000

          32

          0x40038000

          32

          ドライバーエリア

          0x40038000

          32

          0x40040000

          32

          バッファ領域

          0x40040000

          224

          0x40048000

          224

          セカンドステージブートエリア

          0x40078000

          32

          0x40080000

          0

           

          変更されたリンカスクリプトファイルとcyfxtx.cファイルは、参照用にこのKBAに添付されています。

           

          ==============================

          25-May-2020

          Kenshow