网站首页 | 经济学论文 | 证券金融 | 管理学 | 会计审计 | 法学论文 | 医药学论文 | 社会学论文 | 教育论文 | 计算机 | 艺术论文 | 哲学论文 | 财务管理 |
写论文网
  • 基本理论论文
  • 成本管理论文
  • 旅游管理论文
  • 行政管理论文
  • 市场营销论文
  • 秘书文秘论文
  • 档案管理论文
  • 人力资源论文
  • 管理其它论文
  • 您的位置:写论文网 > 管理学 > 秘书文秘论文 > 内网络中地址映射应该在哪做... 正文 2019-12-25 07:26:37

    内网络中地址映射应该在哪做【VxWorks中的地址映射】

    相关热词搜索:

    VxWorks中的地址映射

    VxWorks中的地址映射 在运用嵌入式系统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 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值最小为:0x00010000。

    按照如上步骤可以进行你要访问的任何外设或芯片(诸如flash、DSP、PCI 等)的地址映射,进行地址映射后,就可以象操作内存一样对该地址进行读写了。

    • 范文大全
    • 教案
    • 优秀作文
    • 教师范文
    • 综合阅读
    • 读后感
    • 说说
    内网络中地址映射应该在哪做【VxWorks中的地址映射】》由(写论文网)整理提供,版权归原作者、原出处所有。
    Copyright © 2019 写论文网 All Rights Reserved.