免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 511244213
打印 上一主题 下一主题

[C] MMU内存管理,页表的创建,有个问题不懂,求大神解答,谢谢! [复制链接]

论坛徽章:
0
11 [报告]
发表于 2013-11-02 00:49 |只看该作者
本帖最后由 511244213 于 2013-11-02 00:51 编辑

回复 10# 塑料袋
首先感谢大神的帮助~~,谢谢。
这个程序是通过GPIO寄存器来设置的,GPIO寄存器GPFCON的物理地址是0x56000000,然后将一个虚拟地址映射到了到这个物理地址上面,然后通过操作虚拟地址来操作这个物理地址,其实主要目的还是让我们体会下MMU的作用及其是怎么实现的,当然这个程序写的很简单,这个程序的其他地方我都懂,但是我就是没看懂它在哪个地方将页大小设置为1M?

   

论坛徽章:
4
戌狗
日期:2013-08-15 18:22:43技术图书徽章
日期:2013-08-21 13:48:45巨蟹座
日期:2013-09-26 17:06:39处女座
日期:2013-12-25 11:26:10
12 [报告]
发表于 2013-11-02 00:59 |只看该作者
回复 11# 511244213

这个程序即使真的能操作GPIO,那么GPIO的行为也将与你期望的不一致。

一般寄存器按arm9的话说就需要no cache,no writebuffer; 按cortex的话说就需要strong order.


   

论坛徽章:
0
13 [报告]
发表于 2013-11-02 11:00 |只看该作者
回复 12# 塑料袋 大神真厉害,那个程序确实跟预期的不一样,本来在代码里面是设置让LED闪烁,但是程序运行的时候LED是一直亮着的,我找了好久不知道原因。。。但是程序中已经设置了no cache   no buffer
__asm__(
    "mov    r0, #0\n"
    "mcr    p15, 0, r0, c7, c7, 0\n"    /* 使无效ICaches和DCaches */
   
    "mcr    p15, 0, r0, c7, c10, 4\n"   /* drain write buffer on v4 */
    "mcr    p15, 0, r0, c8, c7, 0\n"    /* 使无效指令、数据TLB */
     .....

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
14 [报告]
发表于 2013-11-02 12:25 |只看该作者
指令指针寄存器可以只是个形式约定。

论坛徽章:
4
戌狗
日期:2013-08-15 18:22:43技术图书徽章
日期:2013-08-21 13:48:45巨蟹座
日期:2013-09-26 17:06:39处女座
日期:2013-12-25 11:26:10
15 [报告]
发表于 2013-11-02 21:56 |只看该作者
"mcr    p15, 0, r0, c7, c7, 0\n"    /* 使无效ICaches和DCaches */

我没查看ARM9的手册,但是这句话的语义到底是哪一个:
1) invalidate cache : cache已有内容作废,后续将追加新内容
2) disable cache     : cache始终不使用

看代码的意思,你这句话的作用应该是前者

论坛徽章:
0
16 [报告]
发表于 2013-11-03 10:36 |只看该作者
回复 15# 塑料袋 应该是后者,因为之前MMU都没有开启,与MMU相关的寄存器就不会用到吧,所以缓冲寄存器中应该没有内容才是吧


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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP