我们装置使用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了。
我的理解对吗?