Keil Logo

MAP

構文 説明
MAP 現在のメモリマップを表示します。
MAP start, end READ WRITE EXEC VNM 指定したメモリ範囲 (start-end) のアクセスを指定したとおりにマップします。
MAP start, end CLEAR マップされたメモリ範囲をクリアします。

µVision4 でデバッグするターゲットプログラムは、メモリにアクセスし、メモリを使用します。µVision4 では、ターゲットプログラムのシンボル情報を使用して、ほとんどのアプリケーションのメモリマップを自動設定します。MAP コマンドにより、µVision4 で自動的に検出されないプログラムで使用するメモリ領域を指定できます。

ターゲットプログラムを実行すると、µVision4 は各メモリアクセスがメモリマップ外ではないかどうかをチェックします。無効なアクセスが行われた場合、µVision4 はアクセス違反エラーをレポートします。これにより、プログラムのメモリ問題を特定して修正することができます。

  • プログラムでメモリにマップされた I/O デバイスを使用するか、ポインタによりメモリに動的にアクセスする場合、メモリマップの変更が必要になる可能性があります。

MAP コマンドで、アドレス範囲とその範囲に対して許可されるアクセスを指定します。読み出し(READ)、書き込み(WRITE)、および実行(EXEC)アクセス(または任意の組み合わせ)を指定できます。メモリマップでは、1 バイトの粒度がサポートされています。

VNM オプションは、指定したメモリ範囲をノイマン型メモリとして指定します。VMN をアドレス範囲と共に指定すると、µVision4 は外部データメモリ(XDATA)とコードメモリをオーバーラップさせます。外部データメモリへの書き込みアクセスによってもコードメモリが変更されます。VNM と共に指定されたメモリ範囲は、コード領域の範囲ではないか、64K 境界を越えない可能性があります。アドレス範囲には、外部データ領域を指定する必要があります。

MAP コマンドに他のパラメータを指定しないと、ターゲットプログラムの現在のメモリマップが表示されます。これによりメモリマップの設定をチェックできます。

CLEAR オプションにより、MAP コマンドで以前に指定されているアドレス範囲を削除できます。

µVision4 のロード時に、次のメモリマップが定義されます。

CPU アドレス範囲 アクセス
8051 ファミリ 0x000000-0x00FFFF (DATA) READ WRITE
  0x010000-0x01FFFF (XDATA) READ WRITE
  0xFF0000-0xFFFFFF (CODE) EXEC READ
251 ファミリ 0x000000-0x00FFFF (DATA) READ WRITE
  0x010000-0x01FFFF (XDATA) READ WRITE
  0xFF0000-0xFFFFFF (CODE) EXEC READ
166 ファミリ 0x000000-0x00FFFF EXEC READ WRITE

µVision4 は最大 16MB のメモリをサポートしています。このメモリは、それぞれ 64K の 256 セグメントに分けられています。以下の表にリストされた数値のセグメントには、µVision4 によってデフォルトの 8051 および 251 のメモリ空間が割り当てられています。

セグメント値 メモリ空間
0x00 MCS® 51 DATA セグメント、0x00:0x0000—0x00:0x00FF。
MCS® 251 EDATA セグメント、0x00:0x0000-0x00:0xFFFF。
0x01 MCS® 51 および MCS® 251 XDATA セグメント 0x01:0x0000-0x01:0xFFFF。
0x80-0x9F MCS® 51 および MCS® 251 コードバンク 0 ~コードバンク 31。
0x80 コードバンク 0、0x81 コードバンク 1 など。
0xFE MCS® 51 および MCS® 251 PDATA セグメント 0xFE:0x0000-0xFE:0x00FF。
0xFF MCS® 51 および MCS® 251 CODE セグメント 0xFF:0x0000-0xFF:0xFFFF。

µVision4 は最大 16MB のターゲットプログラムメモリをサポートしていますが、必要なメモリ領域のみをマップする必要があります。µVision4 では、メモリマップに各ブロックの 2 つのコピーを割り当てる必要があります。1 つ目のコピーは、読み出し、書き込み、および実行に使用するデータを保持します。2 つ目のコピーは、アクセスパーミッションや、コードカバレッジとパフォーマンス解析のための情報といった特定の属性を保持します。このため、大容量のメモリをマップした場合には、ディスクスワッピングが必要になり、µVision4 の実行速度が遅くなることがあります。

RESET MAP コマンドを指定すると、マップされているすべてのセグメントがクリアされ、上のデフォルトマッピングが復元されます。詳細については、「RESET」を参照して下さい。

さらに、[メモリマップ](Memory Map)ダイアログを使用してメモリマッピングを確認および変更することができます。このダイアログはメインメニューの[デバッグ](Debug)→[メモリマップ...](Memory Map...)から開きます。

  • 8051 互換デバイスに 256 バイト未満の XDATA をマップすると、問題が発生する場合があります。8051 では、MOVX @Ri 命令を使用して 256 バイトの XDATA への高速アクセス手段をサポートしています。256 バイト以上の XDATA をマップすると、µVision4 は P2 および P0 の内容を使用して全 16 ビットアドレスを解決します。256 バイト未満の XDATA をマップすると、µVision4 は P0 の内容のみを使用し、P2 が無視されます。したがって、XDATA メモリはセグメントの先頭から開始する必要があります(デフォルトでは 0x01:0x0000 から 0x01:0x00FF まで)。
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.