免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2445 | 回复: 7

linux 初始化临时页表 1:1 mapping 问题,求助 [复制链接]

论坛徽章:
0
发表于 2012-04-01 16:07 |显示全部楼层
linux 再初始化时候会通过函数__create_page_tables, 创建一个1:1mapping的临时页表,也就是说此时VA=PA,那么当linux跳到0xc000xxxx的地址上的时候是如何保证还是能抓取到正确指令的呢?此时页表也并没有更新,如果PC=0xc000xxxx那么就是等于从PA的0xc000xxxx上取指令了?而指令不在0xc000xxxx上而在0x8000xxxx上应该啊(假设DDR的base address = 0x80000000好了)

求教各位大侠

论坛徽章:
0
发表于 2012-04-01 17:14 |显示全部楼层
linux 只是在head.S 中不光创建了一个过渡的1:1 Mapping, 而且还创建了一个PHYS_OFFSET 到PAGE_OFFSET(0xC0000000) 的Mapping.  在MMU 打开之前的代码都是汇编写的,可以做到PIC(位置无关带代码) ,MMU 打开后和初始映射关系建立之后,就可以按照程序的链接位置(0xc0008000)来执行了。

论坛徽章:
0
发表于 2012-04-01 18:04 |显示全部楼层

  1. pgd = pgd_alloc(&init_mm);
  2. if (!pgd)
  3. return -ENOMEM;

  4. if (PHYS_OFFSET != PAGE_OFFSET) {
  5. #ifndef CONFIG_HOTPLUG_CPU
  6.     identity_mapping_add(pgd, __pa(__init_begin), __pa(__init_end));
  7. #endif
  8.     identity_mapping_add(pgd, __pa(_stext), __pa(_etext));
  9.     identity_mapping_add(pgd, __pa(_sdata), __pa(_edata));
  10. }
复制代码
在arch/arm/kernel/smp.c中有这段code,可以按照楼上说的造出1:1 mapping的pagetable

论坛徽章:
1
拜羊年徽章
日期:2015-03-03 16:15:43
发表于 2012-04-02 00:13 |显示全部楼层
回复 1# cuibixiong_cu

这个建立临时页表的过程:(ARM)
1、为内核镜像的第一个MB建立直接映射
  结果:
  虚拟地址           物理地址
  0xA00000000     0xA0000000。

2、为内核镜像完整的建立从虚拟地址到物理地址的映射
  结果:
虚拟地址              物理地址
0xc0000000           0xA0000000
0xc0100000           0xA0100000
0xc0200000           0xA0200000
0xc0300000           0xA0300000

3. 接着进入__mmap_switched,打开mmu/cache, 页表就起作用。

论坛徽章:
0
发表于 2012-04-03 22:58 |显示全部楼层
打酱油了  楼主强人 内核执行时的地址都很清楚啊 楼上说得有道理 感觉不管有没有mmu 页表在建立之前 任何地址只要能寻址的都能使用

论坛徽章:
0
发表于 2012-04-06 22:51 |显示全部楼层
我写的这个文档可以参考。 有任何问题+q 752070534

ARM_Linux_Course_17_Kernel_Memory_Management.PDF

496.02 KB, 下载次数: 84

论坛徽章:
0
发表于 2012-04-07 22:25 |显示全部楼层
回复 6# moniskiller


    感觉这份文档很好啊,有没有后续的,可以开一个帖子啊,肯定火

论坛徽章:
0
发表于 2012-04-09 16:43 |显示全部楼层
可以加我 Q 752070534
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP