为了保证CPU执行指令时可正确访问存储单元,需将用户程序中的逻辑地址转换为运行时由机器直接寻址的物理地址,这一过程称为地址映射 WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
地址映射原理及实现: WWW_P※LCJS_CO※M-PLC-技-.术_网
1、 地址映射结构 WWW_PLCJS@_COM%-PLC-技.术_网
在Tornado\target\h\vmLib.h文件中 WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
typedef struct phys_mem_desc WWW_PLCJS_COM-PLC-技.术_网
{ WWW_P※LCJS_COM-PLC-)技.术_网
void *virtualAddr; WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
void *physicalAddr; P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
UINT len; WWW_PLCJS_COM-PLC-技.术_网
UINT initialStateMask; /* mask parameter to vmStateSet */ WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
UINT initialState; /* state parameter to vmStateSet */ W1WW_P4LCJS_COM-PLC-技.术_网
} PHYS_MEM_DESC; WWW.PLCJS.COM——可编程控制器技术门户
virtualAddr:你要映射的虚拟地址 WWW_PLCJS_COM-PLC-技.术_网
physicalAddr:硬件设计时定义的实际物理地址 ——可——编——程——控-制-器-技——术——门——户
len;要进行映射的地址长度 WWW_PL※CJS_COM-PLC-技.术_网
initialStateMask:可以初始化的地址状态: WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
有如下状态: WWW_PLC※JS_COM-PmLC-技.术_网
#define VM_STATE_MASK_VALID 0x03 WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
#define VM_STATE_MASK_WRITABLE 0x0c WWW_PL※CJS_COM-PLC-技.术_网
#define VM_STATE_MASK_CACHEABLE 0x30 WWcW_PLCJS_COM-PLC-技.术_网
#define VM_STATE_MASK_MEM_COHERENCY 0x40 WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
#define VM_STATE_MASK_GUARDED 0x80 WWW_PLCJS_COM-PLC-技.术_网
不同的CPU芯片类型还有其特殊状态 WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
initialState:实际初始化的地址状态: WWW_PLCJS@_COM%-PLC-技.术_网
有如下状态: WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
#define VM_STATE_VALID 0x01 WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
#define VM_STATE_VALID_NOT 0x00 WW.W_PLC※JS_C,OM-PL,C-技.术_网
#define VM_STATE_WRITABLE 0x04 WWW_PLCJS_COM-PLC-技.术_网
#define VM_STATE_WRITABLE_NOT 0x00 WWW.PLCJS.COM——可编程控制器技术门户
#define VM_STATE_CACHEABLE 0x10 WW.W_PLC※JS_C,OM-PL,C-技.术_网
#define VM_STATE_CACHEABLE_NOT 0x00 WW.W_PLCJS_COM-PLC-技.术_网
同样不同的CPU芯片类型还有其特殊状态 WWcW_PLCJS_COM-PLC-技.术_网
2、 初始化结构 W1WW_P4LCJS_COM-PLC-技.术_网
在 Tornado\target\config\ads860\sysLib.c 文件中: WWW_P※LCJS_CO※M-PLC-技-.术_网
PHYS_MEM_DESC sysPhysMemDesc [] = WWW.PLCJS.COM——可编程控制器技术门户
{ WW.W_PLCJS_COM-PLC-技.术_网
{ WWcW_PLCJS_COM-PLC-技.术_网
(void *) LOCAL_MEM_LOCAL_ADRS, WWW_P※LCJS_COM-PLC-)技.术_网
(void *) LOCAL_MEM_LOCAL_ADRS, W1WW_P4LCJS_COM-PLC-技.术_网
LOCAL_MEM_SIZE , plcjs.技.术_网
VM_STATE_MASK_VALID | VM_STATE_MASK_WRITABLE | WWW_PL※CJS_COM-PLC-技.术_网
VM_STATE_MASK_CACHEABLE, WWW_PLCJS_COM-PLC-技.术_网
VM_STATE_VALID | VM_STATE_WRITABLE | VM_STATE_CACHEABLE ——可——编——程——控-制-器-技——术——门——户
}, W1WW_P4LCJS_COM-PLC-技.术_网
{ WWW_PL※CJS_COM-PLC-技.术_网
(void *) BCSR0, WWW.PLCJS.COM——可编程控制器技术门户
(void *) BCSR0, WWW_P※LCJS_CO※M-PLC-技-.术_网
0x00001000, /* 4 k - Board Control and Status */ WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)