KPIT GNU Tools (21) GNUSH v1202 SH7450 をシミュレート (4)2012年08月05日 14時36分01秒

メモリ割り付けレジスタへのアクセスは TLB を使うということが分かった。さらに読み進むと
①MMUCRの設定に従ってUTLB、ITLBを制御してアドレス変換を行います。
②TLBエントリの登録、削除、読み出し。UTLBエントリの登録にはLDTLB命令を用いる方法と、メモリ割り付けUTLBに直接書き込む方法があります。
③UTLB のアドレスアレイはP4 領域のH'F600 0000~H'F60F FFFF に割り付けられています。
④UTLB のデータアレイはP4 領域のH'F700 0000~H'F70F FFFF に割り付けられています。

まず、メモリ割り付けUTLBに直接書き込む方法を試してみよう。
だめだ。H'F600 0000 にアクセスしたとたん Address Error になる。

さて、困った。
今度は特権モードについて調べてみる。
①。特権モードではP0 領域からP4 領域の4G バイトの空間をアクセスすることが可能です。
②ユーザモードと特権モードは、ステータスレジスタの処理モードビット(MD)で切り替えます。
何だ一番簡単なのは特権モードを使うことだったのか。というわけで今度は特権モードで試す。
reset_program.asm のどこに追加しようかと眺めていると、なんと _start の直後ユーザーモードにするコードが書いてある。アクセスできなくて当たり前だ。
これを main をコールする直前の位置に移動する。
そして、コンパイル・ダウンロード・実行。

メモリ割り付けレジスタにアクセスできる。
内蔵メモリ(OL/IL)にアクセスできる。
やっと関数 main までたどり着いた。
しかし、ユーザモードからアクセスする場合はどうするの?
という疑問が残る。

環境: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/05/6532431/tb