1. <code id="ya7qu"><span id="ya7qu"><label id="ya7qu"></label></span></code>

    <b id="ya7qu"><bdo id="ya7qu"></bdo></b>
    <wbr id="ya7qu"><optgroup id="ya7qu"><strike id="ya7qu"></strike></optgroup></wbr>
  2. <u id="ya7qu"><bdo id="ya7qu"></bdo></u>
    現在位置:范文先生網>理工論文>電子通信論文>VxWorks中的地址映射

    VxWorks中的地址映射

    時間:2023-02-21 00:06:34 電子通信論文 我要投稿
    • 相關推薦

    VxWorks中的地址映射

      作者Email:   ****
      
      在運用嵌入式系統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中的地址映射】相關文章:

    地址重映射在S3C4510B系統中的實現08-06

    VxWorks中怎么從Flash BOOT08-06

    映射08-17

    實時操作系統VxWorks在跟蹤雷達系統中的應用08-06

    基于VxWorks的bootrom代碼改進08-06

    數學教案-映射08-17

    上學期 2.1 映射08-17

    嵌入式操作系統VxWorks中TFFS文件系統的構建08-06

    VxWorks漢字顯示解決方案08-06

    国产福利萌白酱精品tv一区_日韩亚洲中字无码一区二区三区_亚洲欧洲高清无码在线_全黄无码免费一级毛片
    1. <code id="ya7qu"><span id="ya7qu"><label id="ya7qu"></label></span></code>

      <b id="ya7qu"><bdo id="ya7qu"></bdo></b>
      <wbr id="ya7qu"><optgroup id="ya7qu"><strike id="ya7qu"></strike></optgroup></wbr>
    2. <u id="ya7qu"><bdo id="ya7qu"></bdo></u>
      玖玖精品国产一区 | 亚洲欧美日韩精品专区在线插放免费 | 久久中文字幕网站 | 日韩国产欧美亚洲一区不卡 | 亚洲尹人九九大色香蕉网站 | 日韩精品福利片午夜免费观看 |