内存地址重映射的选项_ARM芯片的地址重映射

这种机制是纯粹的高速硬件操作,

并不需要操作系统来完成。

操作系统只要提供内存转换表

就可以了,但是需要符合一定的格式。

ARM9

MMU

映射表分为两种,一级页表的变换和二级页表变换。两者的不同之处就是实现

的变换地址空间大小不同。一级页表变换支持

1 M

大小的存储空间的映射,而二级可以支

64

kB

4

kB

1

kB

大小地址空间的映射。在

LINUX

中最终使用了

1

M

一级页表和

4

kB

的二级页表(即

1M

段区和

4KB

页面)

内核中地址转换表建立过程

地址转换表建立是和内核的启动一起完成的,页表的建立也可以分为三个阶段:

第一阶段是发生在内核解压缩、自引导时,也就内核镜像

zimage

的文件头部分。相关

代码从某种意义上来讲不属于内核,它是

BSP

代码中的一部分,是需要根据不同的架构来

分别实现的。

通过平面映射的方式建立了

256M

空间节描述表。

但是,

这个映射表是临时的,

是为了提高内核解压缩时的速度而实现的。

在解压缩结束之后,

进入内核代码之前,

MMU

能就被关闭了,随之的映射表也被废弃不用。

decompress_kernel

函数实现内核的解压缩之后,那么内核启动的第一阶段工作就

完成了。接下来就准备启动真正的内核,但是内核启动时必须要先关闭

MMU

,以至于刚才的

第一阶段映射表不能使用了。

第二阶段是的页表创建是非常关键的。

同样也是使用汇编语言来实现。

在代码中,

有个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值