MMU在VxWorks中的实现

来源:互联网 发布:易度网络是做什么的 编辑:程序博客网 时间:2024/05/14 05:30

MMU在VxWorks中的实现
1.内存管理单元MMU
VxWorks提供两级虚内存支持:与VxWorks捆绑在一起的基本级和需要可选产品VxVMI的完全级。

1.1指令和数据MMU
PowerPC MMU允许指令和数据MMU被分别允许或禁止。在SELECT_MMU下的属性窗口的参数表中的参数USER_I_MMU_ENABLE和 USER_D_MMU_ENABLE缺省是被允许的。为了允许/禁止一个或两个MMU,选择合适的参数并设置/删除TRUE。

1.2 60X内存映射
PowerPC 603和604的MMU两种模式的内存映射。第一种是BAT模式,它允许在大小从128KB到256MB的内存块映射进一个BAT寄存器。第二种是段模式,它可以将内存映射为4KB的页。Tornado支持这两种内存模式。

1.2.1 603/604的块地址变换模式
一个BAT寄存器的大小是两个32位的值。对于PowerPC 603和604,有八个BAT寄存器实现:四个用于指令MMU,四个用于数据MMU。

在sysLib.c中定义的sysBatDesc[]处理BAT寄存器配置。寄存器由MMU库中的初始化软件设置。缺省这些寄存器被清零。

用于填充数组sysBatDesc[]的所有配置常量在适合于PowerPC 603和604的目录installDir/target/h/arch/ppc/mmu603Lib.h中被定义。

1.2.2 603/604的段模式
这种模式指定每一内存页的配置。整个物理内存由sysLib.c中定义的数据结构数组sysPhysMemDesc[]描叙。这个数组由每一页或每一组页的配置常量组成。所有的配置常量在表7-1中定义。虚内存接口对PowerPC虚内存页是有用的。

使用在表7-1中列出的用于每一页或每一组页的常量VM_STATE_CACHEABLE来设置cache为copy-back模式。

除VM_STATE_CACHEABLE之外,还支持以下常量:

VM_STATE_CACHEABLE_WRITETHROUGH
VM_STATE_MEM_COHERENCY
VM_STATE_MEM_COHERENCY_NOT
VM_STATE_GUARDED
VM_STATE_GUARDED_NOT
第一个常量设置页描叙符cache模式域为可cache的write-through模式。Cache的一致性和保护模式由其他常量控制。

页表大小依赖被映射的总的内存。被映射的内存越大,页表越大。在MMU库初始化期间,被映射的内存的总大小被计算,这允许动态决定页表大小。下表显示待映射的内存的总数和页表大小之间的对应关系。

表 9-4: 待映射的内存的总数和页表大小之间的对应关系

8 MB or less 64 KB
16 MB 128 KB
32 MB 56 KB
64 MB 512 KB
128 MB 1 MB
256 MB 2 MB
512 MB 4 MB
1 GB 8 MB
2 GB 16 MB
4 GB 32 MB
--------------------------------------------------------------------------------


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lurker0ster/archive/2007/05/10/1603683.aspx