- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I would like to translate KBA229114 into Japanese.
Please confirm to my work.
Thanks,
Kenshow
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello, Kenshow-san
Confirm to work this KBA.
Thanks,
Jenna
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
==============================
タイトル: FX3、CX3、FX3S、SD3、FX2G2、およびSD2のデフォルトのメモリマップの変更 - KBA229114
バージョン:**
質問: FX3、CX3、FX3S、SD3、FX2G2、およびSD2のリンカスクリプトファイルを変更するにはどうすればよろしいでしょうか?
回答: Cypress FX3ファミリチップは、256 KBと512 KBの2つの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転送のための転送先としてこのメモリ領域を使用することは不可能です。ITCMは512 KBのSRAMメモリ空間の一部ではないことに注意してください。
システムメモリ空間は、アプリケーションコードを格納するために使用され、コード領域とも呼ばれます。
データメモリ空間は、初期化されたデータと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.cでCY_U3P_SYS_MEM_TOPを0x40080000に変更することにより、このセグメント用に予約されている32 KBをバッファ領域とマージできます。
上記のメモリマッピングは、すべてのFX3ファミリサンプルプロジェクトのcyfxtx.cファイルに記載されています。
リンカスクリプトファイルとcyfxtx.cファイルの変更
ユーザーアプリケーションに次の要件があるとします。
- コードサイズ212 KB
- 224 KBのDMAバッファスペースを維持する
DMAバッファサイズを224 KBに維持しながらコードサイズを32 KB増やすには、第2ステージのブートローダー領域の割り当てを解除する必要があります。
要件に従ってメモリスペースを調整するには、リンカスクリプトファイルのデフォルトのメモリマッピングと、cyfxtx.cファイルで定義されたMACROSを変更します。
リンカスクリプトファイルを変更するには、次の手順に従います。
1. SYS_MEMスペースの長さを0x35000(212 KBに相当)に変更します。
SYS_MEM : ORIGIN = 0x40003000 LENGTH = 0x35000
2. DATAスペースのORIGINを0x40038000に調整します(つまり、0x40003000 + 0x35000)
DATA : ORIGIN = 0x40038000 LENGTH = 0x8000
リンカスクリプトファイルを変更した後、cyfxtx.cファイルのMACROSを変更します。
1. ヒープベースを0x40040000に変更します
#define CY_U3P_MEM_HEAP_BASE(0x40040000)
2. SYS_MEM_TOPを0x40080000に変更します
#define CY_U3P_SYS_MEM_TOP(0x40080000)
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