免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2630 | 回复: 3
打印 上一主题 下一主题

[内存管理] 请问arm kernel如何建立页表映射的 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-08-20 23:14 |只看该作者 |倒序浏览
本帖最后由 blake326 于 2012-08-20 23:19 编辑

bootloader把zImage的kernel(压缩过的二进制kernel)加载到特定位置执行。
那么zImage开始部分的解压缩代码将Image(未压缩的二进制kernel)加载到什么地方的呢。
假设vmlinux的 加载段地址(init section)是 0xC0008000的话。zImage会将Image解压到0XC0008000的内存吗。
好像这样才能方便的做页表映射。但是究竟怎样处理的,找不到相关处理的代码。

然后就是arm的页表貌似与x86区别还挺大的。不知道哪有通俗易懂的资料:)

论坛徽章:
0
2 [报告]
发表于 2012-08-21 11:08 |只看该作者
回复 1# blake326


    被解压并根据各个Section连续存放在物理地址的PHYS_OFFSET+0X8000地方(0~0x4000存放Bootloader传递到Kernel的参数,0x4000~0x8000存放主页表的PGD)。

论坛徽章:
0
3 [报告]
发表于 2012-08-21 13:20 |只看该作者
回复 2# omycle


    PHY_OFFSET 是多少呢?

论坛徽章:
0
4 [报告]
发表于 2012-08-21 14:13 |只看该作者
本帖最后由 omycle 于 2012-08-21 14:13 编辑

回复 3# blake326


    PHYS_OFFSET :wink:

这要看具体的SOC,我目前所用的SOC是8MB,即0x800000.

链接地址(可以认为Kernel 的部分的数值 等于 虚拟地址),要等到建立好页表,并开启MMU后才能有效使用。
在开启MMU之前使用的是 物理地址(可以认为是x86所采用的术语:实地址)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP