这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » VxWorks+MPc8247+MMU+BAT+CACHE

共2条 1/1 1 跳转至

VxWorks+MPc8247+MMU+BAT+CACHE

菜鸟
2007-08-17 15:12:47     打赏

我们装置使用VxWorks+MPc8247。
装置上电后,把程序拷贝到SDRAM中执行。
我们内存管理MMU混合使用BAT模式与页表模式。在BAT模式和页表模式下,我这样定义我的存储器,包括SDRAM、NOR FLASH和NAND FLASH,还有MPC8247的内部RAM空间。在文件sysLib.c定义如下:
(1)BAT模式的数据结构抽象如下:
UINT32 sysBatDesc [2 * (_MMU_NUM_IBAT + _MMU_NUM_DBAT)] =
{
SDRAM,
NOR FLASH,
 。。。。。。
};

(2)页表模式
页表模式的数据结构抽象如下:
PHYS_MEM_DESC sysPhysMemDesc [] =
{
Internal Memory,
NAND FLASH,
CS2_BSADDR,
 。。。。。。
};


MMU会把有效地址通过pte或bat方式翻译为物理地址。
装置上电后,我把程序都搬到了SDRAM中。

就我的理解,阅读了关于cache和mmu的库函数,我发现VxWorks中关于cache的操作都是基于pte模式下的,也就是说如果把sdram映射成bat模式时,对sdram中的取指令和数据时,mmu并不经过cache,而是通过对bat寄存器的比较,直接得到物理地址,然后取指令和数据。

当然,如果我把sdram映射成pte模式时,CPU对sdram的操作,包括取指令和数据都必须先经过cache了。

我的理解对吗?




关键词: VxWorks+MPc8247+MMU+BAT+C    

菜鸟
2007-08-21 23:37:45     打赏
2楼
呵呵,我觉得理解没有问题,但是SDRAM真的不应该不缓存。除非你的系统很特别。
有一种很简单的依据来判定一个存储区能否使用缓存:看读写这个存储区是否存在状态机-也就是说每个读写传输会引起存储区的内容变化(比如IO端口),看是否有位宽限制。如果都没有,通常可以缓存,反之则不能缓存。

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]