仮想アドレス | 説明 |
---|---|
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しかないため、 割り込みや例外を一切起動しない初期化ルーチンを配置するのが精一杯でしょう。