熟悉MMU的朋友给个参考

[复制链接]
2373|2
 楼主| xieqin 发表于 2007-9-24 16:32 | 显示全部楼层 |阅读模式
以前一直没有机会去真正接触MMU.&nbsp;现在接触它遇到了一个代码实现上的问题,请朋友们帮个忙.<br /><br />MMU初始化的时候,指定虚拟地址与物理地址的映射关系.&nbsp;那么我在初始化之后,想修改某一段虚拟地址的映射,应该怎样实现呢?<br /><br />举我的例子:<br />MMU初始化时有这么一段:<br />MMU_SetMTT(&nbsp;0x00000000,&nbsp;0x00100000,&nbsp;0x30000000,&nbsp;RW_CB&nbsp;);&nbsp;&nbsp;<br />MMU_SetMTT(&nbsp;0x30000000,&nbsp;0x30100000,&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,&nbsp;RW_NCNB&nbsp;);&nbsp;<br />当程序运行一段时间后,<br />我想把0x30000000~0x301fffff映射到0x40000000,&nbsp;但这期间希望0x00000000~0x001fffff这段虚拟地址空间要不受到任何影响.<br /><br />如何实现这段代码?
阿南 发表于 2007-9-24 19:25 | 显示全部楼层

呵呵,为什么要修改?楼主这是在Linux下还是其它?

  
 楼主| xieqin 发表于 2007-9-25 08:32 | 显示全部楼层

这个不分linux还是wince吧

不知道这样行不行,昨晚没来得及试验一下<br />void&nbsp;MMU_ChangeMTT(UINT32&nbsp;vaddrStart,UINT32&nbsp;vaddrEnd,UINT32&nbsp;paddrStart,UINT32&nbsp;attr)<br />{<br />&nbsp;&nbsp;int&nbsp;cpu_sr;<br />&nbsp;&nbsp;cpu_sr&nbsp;=&nbsp;DisableInts();&nbsp;<br />&nbsp;&nbsp;MMU_SetMTT(&nbsp;vaddrStart,&nbsp;vaddrEnd,&nbsp;paddrStart,&nbsp;attr&nbsp;);<br />&nbsp;&nbsp;MMU_DisableDCache();&nbsp;<br />&nbsp;&nbsp;MMU_InvalidateTLB();&nbsp;<br />&nbsp;&nbsp;MMU_EnableDCache();<br />&nbsp;&nbsp;RestoreInts(&nbsp;cpu_sr&nbsp;);&nbsp;<br />}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

140

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部