
マイコンに限った話ではないかとは思いますが、現在マイコンプログラムの勉強をしておりますが、マイコンのデータシートのメモリマップを見ると先頭番地からフラッシュメモリのマッピングがあり、その次に各種レジスタやRAMのマッピングがなされています。
(1)このメモリマップというものは論理アドレスと物理アドレスの対応表のようなものだと解釈しておりますが、この対応表自体はRAMの一部に格納されているのでしょうか?
(2)例えばフラッシュメモリの物理アドレスが00~FFまであり、RAMの物理アドレスも00~FFだった場合で且つ
フラッシュメモリの後ろにRAMのマップを作る場合、メモリマップの中の論理アドレスは00~2FFまでで物理アドレスはフラッシュメモリの部分は00~FF,RAMのブツリアドレスも00~FFになるという理解で良いですか?
ひょっとするとかなり見当違いをしている質問かもしれません。
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
うーん、なんかピンとこないですね。
何か勘違いしてるかも。
1)一般的にメモリマップとは、どこからどこまでのアドレスにどんなハードウェアが接続されているかとか何に使われているか。の図です。
000000-00ffff:フラッシュメモリ
010000-010fff:レジスタ
011000-0fffff:メインメモリ
という感じなはずです。
メインメモリで、ここからここはこれ、という図も「メモリマップ」です。
区別するなら「メインメモリのメモリマップ」です。
2)1)で書いたメモリマップ内00000-fffffで、レジスタの先頭は10000から始まります。
そのレジスタだけに注目した場合、相対的な位置は000-fffの範囲になります。
この相対的な位置のことを「論理アドレス」と言っているのでしょうか。
「論理アドレス」「物理アドレス」とは仮想記憶を使う場合に使用する用語です。
バンク切替などを行わない場合、この言葉は使いません。
固定のメモリマップの場合、単に「アドレス」というだけです。
あえていうなら「相対アドレス」ですが、かえってややこしくなるので普通は使いません。
どうもありがとうございます。
仮想記憶の物理アドレスはメモリマップ(メインメモリではないメモリマップ)とどういう関係にあるのでしょうか?
>1)一般的にメモリマップとは、どこからどこまでの>アドレスにどんなハードウェアが接続されているかと>か何に使われているか。の図です。
>000000-00ffff:フラッシュメモリ
>010000-010fff:レジスタ
>011000-0fffff:メインメモリ
>という感じなはずです。
例えば上記のメモリマップで000000にアクセスがあった場合フラッシュメモリにアクセスするまでにどのような道筋を通るのでしょうか?
お時間あればお願いします。
No.2
- 回答日時:
普通、物理アドレス・論理アドレスというと、仮想記憶とかもっと上位の概念を指すことが多いような気がするけど。
。(1)普通は、ハードでアドレスデコーダーを作る場合が多いとは思います。デコーダーにI/O命令を送ると変更できたりする場合も多いと思います。
対応表自体をRAMにいれるという設計も可能でしょうが。
(2)これは、言わんとしていることは多分あってるんでしょうが、使われてる用語(メモリマップ・物理アドレス・論理アドレス等)に違和感がありますね。
どうもありがとうございます。
仮想記憶と勘違いをしていたみたいです。
>普通は、ハードでアドレスデコーダーを作る場合が多いとは思います。
ということは対応表のようなものがアドレスデコーダーに保存されているということになるんでしょうか?
お時間ありましたらお願いします。
No.1
- 回答日時:
>ひょっとするとかなり見当違いをしている質問かもしれません。
(~ヘ~;)ウーン
そんな気がします、だって、何を仰りたいのか、何の事を書いているのかさっぱり解りませんので。
物理アドレスとか論理アドレスとかってなんの事でしょう?ひょっとしてバンク切替えの事言ってるのかなぁ?とか。
それとも連続しているメモリチップをアドレスデコーダであっちゃこっちゃに振り撒く事言っているのかなぁとか想像はつきません。
ちなみにこの2例はいずれも物理的な仕組みです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
AIXでのプロセス使用メモリの最...
-
エクセルVBA 大容量CSVファイル...
-
メモリが不足しています(VBA)
-
「ヒープサイズの設定」て何?
-
メモリを解放しないとどうなる?
-
VBAの配列サイズとメモリに関して
-
C言語で、メモリを解放しないで...
-
VB.netでUSBメモリの固有I...
-
C言語で再帰的処理が出来ない理由
-
シェル(perl)が使用するメモリ...
-
メモリのセグメント違反の解決...
-
ちなみに、for (i = 0; str[i] ...
-
「memcpy」と「strcpy」について
-
移動可能メモリ
-
メモリ不足
-
Connection、ResultSet、、Stat...
-
ファイルマッピング関数で失敗
-
Macターミナルで実行中のプログ...
-
TCP/IP通信時のサーバーからの受信
-
Excel(VBA)でSetTimer関数を使...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
メモリが不足しています(VBA)
-
VBAの配列サイズとメモリに関して
-
C言語で、メモリを解放しないで...
-
エクセルVBA 大容量CSVファイル...
-
メモリのセグメント違反の解決...
-
エクセルのメモリ使用状況/Appl...
-
「ヒープサイズの設定」て何?
-
【C言語】再帰が時間がかかる...
-
バッチファイルでの実行EXEのメ...
-
ReadEventLogについて
-
メモリを解放しないとどうなる?
-
LoadLibraryしたらFreeLibrary
-
C言語における再帰呼び出しの...
-
EXCEL-VBAにてADOのレコードセ...
-
メモリ不足
-
クリスタルレポートでメモリ不...
-
Bitmapを重ね合わせる方法
-
これて逆じゃないですか?
-
ルネサスマイコン(R8C) ビルド...
-
closeとメモリの開放について
おすすめ情報