什么是地址映射?

地址映射由计算机系统中的哪一个部分实现?... 地址映射由计算机系统中的哪一个部分实现? 展开
 我来答
匿名用户
2013-09-12
展开全部
地址映射  为了保证CPU执行指令时可正确访问存储单元,需将用户程序中的逻辑地址转换为运行时由机器直接寻址的物理地址,这一过程称为地址映射
  地址映射原理及实现:
  1、 地址映射结构
  在Tornado\target\h\vmLib.h文件中
  typedef struct phys_mem_desc
  {
  void *virtualAddr;
  void *physicalAddr;
  UINT len;
  UINT initialStateMask; /* mask parameter to vmStateSet */
  UINT initialState; /* state parameter to vmStateSet */
  } PHYS_MEM_DESC;
  virtualAddr:你要映射的虚拟地址
  physicalAddr:硬件设计时定义的实际物理地址
  len;要进行映射的地址长度
  initialStateMask:可以初始化的地址状态:
  有如下状态:
  #define VM_STATE_MASK_VALID 0x03
  #define VM_STATE_MASK_WRITABLE 0x0c
  #define VM_STATE_MASK_CACHEABLE 0x30
  #define VM_STATE_MASK_MEM_COHERENCY 0x40
  #define VM_STATE_MASK_GUARDED 0x80
  不同的CPU芯片类型还有其特殊状态
  initialState:实际初始化的地址状态:
  有如下状态:
  #define VM_STATE_VALID 0x01
  #define VM_STATE_VALID_NOT 0x00
  #define VM_STATE_WRITABLE 0x04
  #define VM_STATE_WRITABLE_NOT 0x00
  #define VM_STATE_CACHEABLE 0x10
  #define VM_STATE_CACHEABLE_NOT 0x00
  同样不同的CPU芯片类型还有其特殊状态
  2、 初始化结构
  在 Tornado\target\config\ads860\sysLib.c 文件中:
  PHYS_MEM_DESC sysPhysMemDesc [] =
  {
  {
  (void *) LOCAL_MEM_LOCAL_ADRS,
  (void *) LOCAL_MEM_LOCAL_ADRS,
  LOCAL_MEM_SIZE ,
  VM_STATE_MASK_VALID | VM_STATE_MASK_WRITABLE |
  VM_STATE_MASK_CACHEABLE,
  VM_STATE_VALID | VM_STATE_WRITABLE | VM_STATE_CACHEABLE
  },
  {
  (void *) BCSR0,
  (void *) BCSR0,
  0x00001000, /* 4 k - Board Control and Status */
  VM_STATE_MASK_VALID | VM_STATE_MASK_WRITABLE |
  VM_STATE_MASK_CACHEABLE | VM_STATE_MASK_GUARDED,
  VM_STATE_VALID | VM_STATE_WRITABLE | VM_STATE_CACHEABLE_NOT |
  VM_STATE_GUARDED
  },
  ……
  {
  (void *) INTERNAL_MEM_MAP_ADDR,
  (void *) INTERNAL_MEM_MAP_ADDR,
  INTERNAL_MEM_MAP_SIZE, /* 64 k - Internal Memory Map */
  VM_STATE_MASK_VALID | VM_STATE_MASK_WRITABLE |
  VM_STATE_MASK_CACHEABLE | VM_STATE_MASK_GUARDED,
  VM_STATE_VALID | VM_STATE_WRITABLE | VM_STATE_CACHEABLE_NOT |
  VM_STATE_GUARDED
  },
  {
  (void *) ROM_BASE_ADRS,
  (void *) ROM_BASE_ADRS,
  ROM_SIZE, /* Flach memory */
  VM_STATE_MASK_VALID | VM_STATE_MASK_WRITABLE |
  VM_STATE_MASK_CACHEABLE ,
  VM_STATE_VALID | VM_STATE_WRITABLE | VM_STATE_CACHEABLE_NOT
  }
  };
  上面结构中是缺省地址映射。
  3、 地址初始化
  在Tornado\target\src\config\ usrMmuInit.c 文件中
  通过函数usrMmuInit使地址映射生效
  4、 实现映射:
  如你定义flash地址为0x04000000开始的8Mbyte地址,则可以如下进行地址映射
  {
  (void *) 0x04000000,
  (void *) 0x04000000,
  0x00800000, /* 8 m - Flash window 1 */
  VM_STATE_MASK_VALID | VM_STATE_MASK_WRITABLE,
  VM_STATE_VALID | VM_STATE_WRITABLE
  },
  5、 注意
  地址映射最小单位为1页,4K大小,所以len值最小为:0x00001000。
Storm代理
2023-07-25 广告
StormProxies是一家提供动态代理服务器服务的企业,旨在帮助用户更好地管理网络访问和安全。以下是一些关于StormProxies的IP动态代理服务的特点:1. 高匿名性:StormProxies的动态代理服务器具有高匿名性,可以有效... 点击进入详情页
本回答由Storm代理提供
Sweet丶奈何
高粉答主

推荐于2018-02-18 · 每个回答都超有意思的
知道大有可为答主
回答量:2.8万
采纳率:82%
帮助的人:4817万
展开全部
为了保证CPU执行指令时可正确访问存储单元,需将用户程序中的逻辑地址转换为运行时由机器直接寻址的物理地址,这一过程称为地址映射。

地址映射最小单位为1页,4K大小,所以len值最小为:0x00001000。

地址映射分类:
地址映射也可以成为地址重定位或地址变换,可以分为以下两类:
静态重定位
当用户程序被装入内存时,一次性实现逻辑地址到物理地址的转换,以后不再转换(一般在装入内存时由软件完成)。
动态重定位
在程序运行过程中要访问数据时再进行地址变换(即在逐条指令执行时完成地址映射。一般为了提高效率,此工作由硬件地址映射机制来完成。由硬件支持,软件硬件结合完成。硬件上一般需要一对寄存器的支持)。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
SGR小良
2020-12-17
知道答主
回答量:35
采纳率:0%
帮助的人:1.6万
展开全部

网站搭建5网站映射公网IP地址解析

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式