- ベストアンサー
マイコンのメモリマップについて
マイコンに限った話ではないかとは思いますが、現在マイコンプログラムの勉強をしておりますが、マイコンのデータシートのメモリマップを見ると先頭番地からフラッシュメモリのマッピングがあり、その次に各種レジスタやRAMのマッピングがなされています。 (1)このメモリマップというものは論理アドレスと物理アドレスの対応表のようなものだと解釈しておりますが、この対応表自体はRAMの一部に格納されているのでしょうか? (2)例えばフラッシュメモリの物理アドレスが00~FFまであり、RAMの物理アドレスも00~FFだった場合で且つ フラッシュメモリの後ろにRAMのマップを作る場合、メモリマップの中の論理アドレスは00~2FFまでで物理アドレスはフラッシュメモリの部分は00~FF,RAMのブツリアドレスも00~FFになるという理解で良いですか? ひょっとするとかなり見当違いをしている質問かもしれません。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
うーん、なんかピンとこないですね。 何か勘違いしてるかも。 1)一般的にメモリマップとは、どこからどこまでのアドレスにどんなハードウェアが接続されているかとか何に使われているか。の図です。 000000-00ffff:フラッシュメモリ 010000-010fff:レジスタ 011000-0fffff:メインメモリ という感じなはずです。 メインメモリで、ここからここはこれ、という図も「メモリマップ」です。 区別するなら「メインメモリのメモリマップ」です。 2)1)で書いたメモリマップ内00000-fffffで、レジスタの先頭は10000から始まります。 そのレジスタだけに注目した場合、相対的な位置は000-fffの範囲になります。 この相対的な位置のことを「論理アドレス」と言っているのでしょうか。 「論理アドレス」「物理アドレス」とは仮想記憶を使う場合に使用する用語です。 バンク切替などを行わない場合、この言葉は使いません。 固定のメモリマップの場合、単に「アドレス」というだけです。 あえていうなら「相対アドレス」ですが、かえってややこしくなるので普通は使いません。
その他の回答 (3)
- K-1
- ベストアンサー率21% (832/3844)
- rabbit_cat
- ベストアンサー率40% (829/2062)
普通、物理アドレス・論理アドレスというと、仮想記憶とかもっと上位の概念を指すことが多いような気がするけど。。 (1)普通は、ハードでアドレスデコーダーを作る場合が多いとは思います。デコーダーにI/O命令を送ると変更できたりする場合も多いと思います。 対応表自体をRAMにいれるという設計も可能でしょうが。 (2)これは、言わんとしていることは多分あってるんでしょうが、使われてる用語(メモリマップ・物理アドレス・論理アドレス等)に違和感がありますね。
お礼
どうもありがとうございます。 仮想記憶と勘違いをしていたみたいです。 >普通は、ハードでアドレスデコーダーを作る場合が多いとは思います。 ということは対応表のようなものがアドレスデコーダーに保存されているということになるんでしょうか? お時間ありましたらお願いします。
- marimo_cx
- ベストアンサー率25% (873/3452)
>ひょっとするとかなり見当違いをしている質問かもしれません。 (~ヘ~;)ウーン そんな気がします、だって、何を仰りたいのか、何の事を書いているのかさっぱり解りませんので。 物理アドレスとか論理アドレスとかってなんの事でしょう?ひょっとしてバンク切替えの事言ってるのかなぁ?とか。 それとも連続しているメモリチップをアドレスデコーダであっちゃこっちゃに振り撒く事言っているのかなぁとか想像はつきません。 ちなみにこの2例はいずれも物理的な仕組みです。
お礼
どうもありがとうございます。 やはりどこかで勘違いをしているみたいです。 もう少し調べてみます。
お礼
どうもありがとうございます。 仮想記憶の物理アドレスはメモリマップ(メインメモリではないメモリマップ)とどういう関係にあるのでしょうか? >1)一般的にメモリマップとは、どこからどこまでの>アドレスにどんなハードウェアが接続されているかと>か何に使われているか。の図です。 >000000-00ffff:フラッシュメモリ >010000-010fff:レジスタ >011000-0fffff:メインメモリ >という感じなはずです。 例えば上記のメモリマップで000000にアクセスがあった場合フラッシュメモリにアクセスするまでにどのような道筋を通るのでしょうか? お時間あればお願いします。