クレア工房 | 電子工作 | PIC32

PIC32のメモリマップ

原則

原則となるメモリマップ

仮想アドレス 説明
0x0000_0000~0x7FFF_FFFF KUSEGと呼ばれます。 ユーザランドとなるコードを配置する場合に利用されます。 PIC32MXでは、通常、このアドレス空間にメモリは配置されません。 しかしながら、バスマトリックスを制御することでメモリを配置することができます。
0x8000_0000~0x9FFF_FFFF KSEG0と呼ばれます。 キャッシュが有効なセクションです。 主要なプログラムを配置します。
0xA000_0000~0xBFFF_FFFF KSEG1と呼ばれます。 キャッシュが無効となるセクションです。 周辺回路の制御レジスタが配置されます。
0xC000_0000~0xDFFF_FFFF KSEG2と呼ばれます。 使用しません。
0xE000_0000~0xFFFF_FFFF KSEG3と呼ばれます。 デバッグ時に使用することがありますが、原則としては使用しません。

現実的なメモリマップ

仮想アドレス 物理アドレス 説明
0x8000_0000 0x0000_0000 メインとなるワーキングメモリ(SRAM)のベースアドレス。
0x9D00_0000 0x1D00_0000 メインとなるフラッシュメモリのベースアドレス。
0x9FC0_0000 0x1FC0_0000 ブート用となるフラッシュメモリのベースアドレス。
0xA000_0000 0x0000_0000 キャッシュされない扱いを受ける、ワーキングメモリ(SRAM)のベースアドレス。 物理的な実態はKSEG0もKSEG1も同一であり、エイリアスの関係にあります。
0xBD00_0000 0x1D00_0000 キャッシュされない扱いを受ける、メインとなるフラッシュメモリのベースアドレス。 物理的な実態はKSEG0もKSEG1も同一であり、エイリアスの関係にあります。
0xBF80_0000 0x1F80_0000 周辺回路用の制御レジスタが配置されるベースアドレス。
0xBFC0_0000 0x1FC0_0000 キャッシュされない扱いを受ける、ブート用となるフラッシュメモリのベースアドレス。 物理的な実態はKSEG0もKSEG1も同一であり、エイリアスの関係にあります。 リセット例外においてはここからプログラムの実行が始まりますので、 ここには何らかのメモリを配置しなければなりません。
0xFF20_0000 - DMSEGとも呼ばれ、デバッグモジュールがオフチップのメモリをJTAG経由でマッピングします。 デバッグが許可されたCPUがこの範囲をアクセスするとstallしてJTAGからの操作を待機します。

配置戦略

PIC32MXは最初に内蔵の8MHz RC発振器をクロックとして起動しますので、 初期化ルーチンの処理速度を追求する意味はあまりないと考えられます。 ブート領域にべたっと初期化コードを書いて差し支えないものと考えています。

上位メニューではブート領域に自己書き換えモジュールを組み込む余裕があります。 PIC32MX2xxでは3KBしかないため、 割り込みや例外を一切起動しない初期化ルーチンを配置するのが精一杯でしょう。


This is copyrighted material. all rights reserved.