tzy68931
驱动牛犊
驱动牛犊
  • 注册日期2002-10-28
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:5155回复:4

mmu和cache的问题

楼主#
更多 发布于:2002-10-28 16:03
有谁可以给我说说在vxworks中mmu的作用?另外在vxworks中cache是怎么管理的。和mmu有关系吗?
yaochidong
驱动牛犊
驱动牛犊
  • 注册日期2002-07-09
  • 最后登录2002-11-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-10-31 22:39
mmu的意思是内存管理单元,是MPU的一个部分,属于硬件概念,其主要职责是管理物理地址和虚拟地址和系统物理地址之间的映射关系,在实时操作系统中,一般都是用直接映射的关系,即虚拟地址和物理地址是一样的,其地址转换过程要依赖于内存中的一张表,这张表一般由提供BSP的公司提供,把BSP用在自己的单板上是还需要作修改一些段的读写属性。
CACHE是高速缓存分一级CACHE和二级CACHE,一级CACHE在MPU内部,二级CACHE由专门的同步内存与MPU通过专门连接CACHE的总线相连,使用CACHE时只需设置CPU内部与CACHE有关的寄存器就行了,与mmu没有关系
jihongdang
驱动牛犊
驱动牛犊
  • 注册日期2002-09-30
  • 最后登录2010-04-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-10-31 22:40
MMU:内存管理单元,在VxWorks中MMU表分成两部分:boot up table和final table。通常是为建立虚拟地址空间设计的,即MMU 虚拟(逻辑)地址和物理地址的映射。MMU用物理内存描述结构PHYS_MEM_DESC来创建到虚拟地址空间的映射。
cache:高速缓冲存储器,VxWorks中一旦MMU使能(enable),则cache受MMU的控制。体系框架cacheLib提供基本的cache管理。
MMU和cache在BSP文档中有详细的描述。
tzy68931
驱动牛犊
驱动牛犊
  • 注册日期2002-10-28
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-11-01 09:25
谢谢!
但是如果我的系统没有mmu,那么内存映射是怎样完成的?我的应用一使能mmu,vxworks就启动不起来了。可能是什么原因呢?
我的环境是: tornado 2.0 for ppc8260
fromnight
驱动牛犊
驱动牛犊
  • 注册日期2002-10-14
  • 最后登录2004-09-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-11-01 14:58
mmu的作用就是完成地址映射,设置存储单元的属性,如VM_STATE_WRITABLE_NOT,VM_STATE_CACHEABLE_NOT,用来避免CACHE与RAM的不同步。
CACHE的管理就是通过cacheLib中提供的routine来实现的。建议看看VxWorks Reference Manual:Libraries.

如果不用mmu,那么程序中的地址就是physical address.(实际上有mmu的情况下virtual address 一般也等于 physical address.)
你的情况可能是一些设置问题。比如说你选的是INCLUDE_MMU_BASIC还是INCLUDE_MMU_FULL?建议你define前者,undef后者,
并且#define USER_D_MMU_ENABLE,
    #define USER_I_MMU_ENABLE
然后在syslib.c中sysPhysMemDesc[]的定义中使所有的virtual address 等于 physical address再试试看。
xxxxx xxxxx x x x xxxx xxxx x x x x x x
游客

返回顶部