KPIT GNU Tools (21) GNUSH v1202 SH7450 をシミュレート (3)2012年08月04日 11時27分58秒

SH7450 Address Error
シミュレータで Address Error になってしまう件、ドキュメントを読んでみると次の条件で起こると書いてある。
1.RAMCR.RMD="0"のとき、ユーザモードで内蔵メモリ領域へアクセス
2.ユーザモードで領域H'FC00 0000~H'FFFF FFFFにアクセス
ということは RAMCR を設定しなければならないがアクセスするとアドレスエラーになる。

困ったと思ってさらに探していると SuperH RISC engineファミリ用シミュレータデバッガのドキュメントに
「内蔵メモリ制御レジスタ (RAMCR) の設定を変更することなく、拡張機能付きSH-4A用シミュレータデバッガで、URAM領域へアクセスできるようになりました。なおこのため、RAMCRの設定変更によってURAM領域へのアクセス可否を切り替えることはできなくなりました。」
と書いてある。つまり何もしなくてよいということだ。
すぐに試してみた。
やっぱりだめだ Address Error になる。
いろいろ試していて分かったことはリセット後メモリウインドウから手動でFF000074へ00000200を書き込むと Address Error は出なくなる。 これで一件落着と言いたいところだが本番ではどうするのだ?

さらに調査...
①ユーザモードではメモリ割り付けレジスタはアドレス変換によるアクセスで参照できます。
おお アドレス変換か。
②P4 領域は、ストアキューと内蔵メモリ領域を除いてTLB を用いたアドレス変換ができません。
え!できないの?
③TLBを用いて物理アドレス空間のエリア7 をアクセスする場合のみ、エリア7 のH'1C00 0000~H'1FFF FFFFまでの領域が予約領域ではなくなり、仮想アドレス空間のP4 領域に含まれる制御レジスタ領域と等価になります。
ああ!やっぱりできるの?
④P4 領域アドレスは、仮想アドレス空間のP4 領域を用いた場合のものです。P4 領域アドレスの32 ビットアドレスで上位3 ビットを"0"にしたものがエリア7 アドレスとなります。エリア7 アドレスは、TLB を用いて物理アドレス空間のエリア7 からアクセスするものです。
で、どうすればいいの?

疲れた。sh4a ってむずかしい。今日はここまでにしておこう。

環境:High-performance Embedded Workshop Version 4.09.00.007
    KPIT GNUSH v12.02 Windows Tool Chain (ELF)

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※投稿には管理者が設定した質問に答える必要があります。

名前:
メールアドレス:
URL:
次の質問に答えてください:
このブログのタイトルは?(syslab と記入してください)

コメント:

トラックバック

このエントリのトラックバックURL: http://syslab.asablo.jp/blog/2012/08/04/6531515/tb