推荐文档列表

VxWorks中的地址映射

时间:2021-10-01 09:44:16 计算机论文 我要投稿

VxWorks中的地址映射

作者Email:   hnjinyuhe@163.net

   在运用嵌入式系统VxWorks和MPC860进行通信系统设计开发时,会遇到一个映射地址不能访问的问题。

缺省情况下,VxWorks系统已经进行了如下地址的映射:

    memory地址、bcsr(Board Control and Status)地址、PC_BASE_ADRS(PCMCIA)地址、Internal Memory地址、rom(Flach memory)地址等,但是当你的硬件开发中要加上别的外设时,如(falsh、dsp、FPGA等),对这些外设的访问也是通过地址形式进行读写,如果你没有加相应的地址映射,那么是无法访问这些外设的。

    和VxWorks缺省地址映射类似,你也可以进行相应的地址映射。

    如下是地址映射原理及实现:

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              &

[1] [2] [3]