您现在的位置:智能制造网>技术中心>地址映射原理及实现:

直播推荐

更多>

企业动态

更多>

推荐展会

更多>

地址映射原理及实现:

2010年04月21日 17:35:56人气:763来源:西安誉通光电测控有限责任公司

地址映射

为了保证CPU执行指令时可正确访问存储单元,需将用户程序中的逻辑地址转换为运行时由机器直接寻址的物理地址,这一过程称为地址映射

地址映射原理及实现:
1、 地址映射结构
在TornadotargethvmLib.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、 初始化结构
在 Tornadotargetconfigads860sysLib.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、 地址初始化
在Tornadotargetsrcconfig 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、 注意
地址映射zui小单位为1页,4K大小,所以len值zui小为:0x00001000。
 

全年征稿/资讯合作 联系邮箱:1271141964@qq.com

免责声明

  • 凡本网注明"来源:智能制造网"的所有作品,版权均属于智能制造网,转载请必须注明智能制造网,https://www.gkzhan.com。违反者本网将追究相关法律责任。
  • 企业发布的公司新闻、技术文章、资料下载等内容,如涉及侵权、违规遭投诉的,一律由发布企业自行承担责任,本网有权删除内容并追溯责任。
  • 本网转载并注明自其它来源的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品来源,并自负版权等法律责任。
  • 如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

<
更多 >

工控网机器人仪器仪表物联网3D打印工业软件金属加工机械包装机械印刷机械农业机械食品加工设备制药设备仓储物流环保设备造纸机械工程机械纺织机械化工设备电子加工设备水泥设备海洋水利装备矿冶设备新能源设备服装机械印染机械制鞋机械玻璃机械陶瓷设备橡塑设备船舶设备电子元器件电气设备


我要投稿
  • 投稿请发送邮件至:(邮件标题请备注“投稿”)1271141964.qq.com
  • 联系电话0571-89719789
工业4.0时代智能制造领域“互联网+”服务平台
智能制造网APP

功能丰富 实时交流

智能制造网小程序

订阅获取更多服务

微信公众号

关注我们

抖音

智能制造网

抖音号:gkzhan

打开抖音 搜索页扫一扫

视频号

智能制造网

公众号:智能制造网

打开微信扫码关注视频号

快手

智能制造网

快手ID:gkzhan2006

打开快手 扫一扫关注
意见反馈
关闭
企业未开通此功能
详询客服 : 0571-87858618