新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > ADS下bootloader之MMU研究

ADS下bootloader之MMU研究

作者:时间:2011-05-09来源:网络收藏






这是一个的虚拟地址向物理地址映射的函数。通过上边的调用可以看到物理地址和虚拟地址的地址是相同的,那为什么还要开呢,不是多此一举吗,Dcache的开启必须在开启后才能开启,Icache不受MMU影响。开启Cache对系统性能会有很大提升。所以,哈哈。这里_MMUTT_STARTADDRESS是转换表的基址,因为没有使用复杂的操作系统,所以只使用了一级页表,每个页表项对应的是一个1MB的段。pTT=(U32 *)_MMUTT_STARTADDRESS+(vaddrStart>>20);相当于获得相应的页表项。看一下下图就会明白。nSec=(vaddrEnd>>20)-(vaddrStart>>20);这句是计算有几个段。for(i=0;i<=nSec;i++)*pTT++=attr |(((paddrStart>>20)+i)<<20);分别映射每段。Attr是域。


void MMU_SetMTT(int vaddrStart,int vaddrEnd,int paddrStart,int attr)
{
volatile U32 *pTT;
volatile int i,nSec;
pTT=(U32 *)_MMUTT_STARTADDRESS+(vaddrStart>>20);
nSec=(vaddrEnd>>20)-(vaddrStart>>20);
for(i=0;i<=nSec;i++)*pTT++=attr |(((paddrStart>>20)+i)<<20);
}










这里就不列出那些被调用的汇编代码,这个是飞凌的boot,网上好多人说没开MMU,真是误人子弟啊。

本文引用地址:http://www.eepw.com.cn/article/150787.htm
上一页 1 2 下一页

关键词: 研究 MMU bootloader ADS

评论


相关推荐

技术专区

关闭