打印

熟悉MMU的朋友给个参考

[复制链接]
1608|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xieqin|  楼主 | 2007-9-24 16:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以前一直没有机会去真正接触MMU. 现在接触它遇到了一个代码实现上的问题,请朋友们帮个忙.

MMU初始化的时候,指定虚拟地址与物理地址的映射关系. 那么我在初始化之后,想修改某一段虚拟地址的映射,应该怎样实现呢?

举我的例子:
MMU初始化时有这么一段:
MMU_SetMTT( 0x00000000, 0x00100000, 0x30000000, RW_CB );  
MMU_SetMTT( 0x30000000, 0x30100000, 0          , RW_NCNB ); 
当程序运行一段时间后,
我想把0x30000000~0x301fffff映射到0x40000000, 但这期间希望0x00000000~0x001fffff这段虚拟地址空间要不受到任何影响.

如何实现这段代码?

相关帖子

沙发
阿南| | 2007-9-24 19:25 | 只看该作者

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

使用特权

评论回复
板凳
xieqin|  楼主 | 2007-9-25 08:32 | 只看该作者

这个不分linux还是wince吧

不知道这样行不行,昨晚没来得及试验一下
void MMU_ChangeMTT(UINT32 vaddrStart,UINT32 vaddrEnd,UINT32 paddrStart,UINT32 attr)
{
  int cpu_sr;
  cpu_sr = DisableInts(); 
  MMU_SetMTT( vaddrStart, vaddrEnd, paddrStart, attr );
  MMU_DisableDCache(); 
  MMU_InvalidateTLB(); 
  MMU_EnableDCache();
  RestoreInts( cpu_sr ); 
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

140

帖子

0

粉丝