QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1294|回复: 11

求教:MMU到底做了什么

[复制链接]
发表于 2004-11-16 12:31:14 | 显示全部楼层 |阅读模式
小弟最近非常困惑,关于MMU作的事很奇怪

1:在x86上, MMU做的事应该是 把段形式地址 换成 线性地址,再把线性地址换成 物理地址吧
那在 其他的 CPU上, 是不是都需要有个 页式管理的硬件控制方式,MMU实现的就是 把 虚拟地址通过页目录,页表 转换成物理地址?

2:我们常见统一编址中的
          ROM 0x0000000-0x00001000
                RAM  0xa0000000-.....
                USB: 0x1000 0000
                GPIO: 0x??? ?
这种地址,是物理地址还是 经过 MMU转换过的虚拟地址呢?

3: linux内核 的地址空间 和 普通进程的地址空间有什么区别?同学说内核的地址空间中地址不需要MMU进行地址转换就可以简单的找到物理地址,是这样的吗?
发表于 2004-11-19 14:51:40 | 显示全部楼层
关于MMU我也有些问题,如果要写应用程序的话(不跑系统的情况下),操作一些寄存器是应该直接对它的物理地址操作呢,还是操作MMU的虚拟地址。
顶是去别沉了:)
回复

使用道具 举报

发表于 2004-11-22 22:35:56 | 显示全部楼层
ding
回复

使用道具 举报

发表于 2004-11-23 14:07:27 | 显示全部楼层
2.虚拟地址
内核地址空间和用户地址空间在mem中的范围不同
回复

使用道具 举报

发表于 2004-11-29 15:00:30 | 显示全部楼层
我是想知道没有系统的时候,怎么操作硬件
那如果我要对一个实际存在的寄存器赋值,我是对它的实际地方操作,还是对它的虚拟地址操作呢?
回复

使用道具 举报

发表于 2004-11-29 22:51:21 | 显示全部楼层
还是看技术手册吧,很复杂的.
www.atmel.com/dyn/resources/ prod_documents/ARM_920T_TRM.pdf
53到81页整整一章的内容.
我也在看有什么心得大家可以交流一下.
回复

使用道具 举报

发表于 2004-12-1 08:17:40 | 显示全部楼层
你给的那个链接好像关了,我进不去。
那是篇讲ARM_920T体系结构的手册?
回复

使用道具 举报

发表于 2004-12-1 13:45:07 | 显示全部楼层
说不定ARM的网站也有, 我想不会关的是Atmel公司的网站啊,
不过Atmel的确很慢, 我都跟他们的反应过了.
这是我看到过的最详尽介绍MMU的技术文档.
再不行,我就在上传到我们的公司网站你去下载好了.
回复

使用道具 举报

发表于 2004-12-1 16:44:57 | 显示全部楼层
如果可以的话,能传到我的信箱里吗?
[email protected]
Atmel的网站好难登啊。。
回复

使用道具 举报

发表于 2004-12-1 17:43:36 | 显示全部楼层
你可去ARM的网站下载,

http://www.arm.com/documentation/ARMProcessor_Cores/index.html
回复

使用道具 举报

发表于 2004-12-8 20:01:23 | 显示全部楼层

Re: 求教:MMU到底做了什么

[quote:1ab5874a91="shilirong"]小弟最近非常困惑,关于MMU作的事很奇怪

1:在x86上, MMU做的事应该是 把段形式地址 换成 线性地址,再把线性地址换成 物理地址吧
那在 其他的 CPU上, 是不是都需要有个 页式管理的硬件控制方式,MMU实现的就是 把 虚拟地址通过页目录,页表 转换成物理地址?
对,mmu需要硬件支持的。

2:我们常见统一编址中的
          ROM 0x0000000-0x00001000
                RAM  0xa0000000-.....
                USB: 0x1000 0000
                GPIO: 0x??? ?
这种地址,是物理地址还是 经过 MMU转换过的虚拟地址呢?
是虚拟地址。
3: linux内核 的地址空间 和 普通进程的地址空间有什么区别?同学说内核的地址空间中地址不需要MMU进行地址转换就可以简单的找到物理地址,是这样的吗?[/quote]
核心地址是物理地址+0xc0000000。所谓的虚拟地址是对用户空间说的。
回复

使用道具 举报

发表于 2004-12-9 13:27:53 | 显示全部楼层
1:
x86上的内存管理机制,我也曾经试图了解过, 但是一般的文档根本说不清楚.
下了INTEL  的 DATASHEET 有800多页, 由于没有打算在x86下面搞东西,
也就懒得看了.
ARM上也是够复杂的, 有一大堆的控制寄存器在协同工作,另外还和 Icatch,
Dcatch 密切相关, 根本没法在这里说清楚, 我也正在研究和测试MMU的控制代码,
也许将来专门写篇文章来谈论这个问题吧,你有兴趣也可以参与共同研究.

2:
哪些当然是物理地址,

3:
LINUX的地址空间的管理我还不是很清楚呢, 刚刚决定转到LINUX,
不过, CPU的MMU使能后(对ARM而言是CP15寄存器的 M\A\R\S 等被置位),
一切的地址都是虚拟地址了.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-22 13:00 , Processed in 0.128078 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表