TI中文支持网
TI专业的中文技术问题搜集分享网站

关于一级页表

初学ARM,对页表的概念理解不好,想请教下:

页表的作用是将MVA转换成Physical Address。

我的疑问是:

1. MVA是在程序中所用到的地址么?如标号。

 这样编程时就不用关心具体的Physical Address,只要在初始化时,编制好页表,解释出一定的映射关系就可以了吧?

2. 一级页表的基地址是Physical Address还是MVA?

3. 对于一级页表的建立:

比如我想把MVA的0x0映射到Physical Address的0x2400 0000,映射空间大小为1MB,如下操作正确么?

LDR $desc,=(MMU_STD_ACCESS + MMU_C + MMU_B)LDR $indx,=0x2400 0000

AND $indx,$indx,$desc

LDR $base,=(一级页表基地址)

STR $indx,[$base],#4

Yaoming Qin:

这东西我搞过一点点,写过一些汇编,不过一般没有这个需求,对于Linux,wince,这部分都在kernel里面做好了,一般客户是不用动的,请问你做这个的目的是什么

Denny%20Yang99373:

页表主要是操作系统用的,内存管理的一部分,要是不用OS,完全可以不管

就是用OS也不用自己创建,接口都是实现好的

我记得一级页表地址好像是物理地址,写在CP15某个寄存器里的

至于怎么建立页表可以看看LINUX下ioremap的底层实现

Yaoming Qin:

回复 Denny%20Yang99373:

如果不用OS,页表也是要设置的,因为MMU会根据页表来设置相应内存的cache和write buffer的属性,只是对于非OS或者具体点非高级OS的系统,一般MMU只会有一类映射,而不会像Linux那样,每个进程都有自己的虚拟内存空间。

赞(0)
未经允许不得转载:TI中文支持网 » 关于一级页表
分享到: 更多 (0)