四虎成人免费视频,国产一级a作爱视频免费观9看,色五月丁香亚洲,亚洲欧美性爱在线视频,1000部黄片免费观看一区,国产亚洲性生活视频播放,三级黄色在线视频网站

現(xiàn)在位置:范文先生網>理工論文>電子通信論文>VxWorks中的地址映射

VxWorks中的地址映射

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

VxWorks中的地址映射

  作者Email:   ****
  
  在運用嵌入式系統(tǒng)VxWorks和MPC860進行通信系統(tǒng)設計開發(fā)時,會遇到一個映射地址不能訪問的問題。
  
  缺省情況下,VxWorks系統(tǒng)已經進行了如下地址的映射:
  
  memory地址、bcsr(Board Control and Status)地址、PC_BASE_ADRS(PCMCIA)地址、Internal Memory地址、rom(Flach memory)地址等,但是當你的硬件開發(fā)中要加上別的外設時,如(falsh、dsp、FPGA等),對這些外設的訪問也是通過地址形式進行讀寫,如果你沒有加相應的地址映射,那么是無法訪問這些外設的。
  
  和VxWorks缺省地址映射類似,你也可以進行相應的地址映射。
  
  如下是地址映射原理及實現(xiàn):
  
  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:可以初始化的地址狀態(tài):
  
  有如下狀態(tài):
  
  #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芯片類型還有其特殊狀態(tài)
  
  initialState:實際初始化的地址狀態(tài):
  
  有如下狀態(tài):
  
  #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芯片類型還有其特殊狀態(tài)
  
  2、 初始化結構
  
  在 Tornado\target\config\ads860\sysLib.c 文件中:
  
  PHYS_MEM_DESC sysPhysMemDesc [] =
  
  {
  
  {
  
  (void *) LOCAL_MEM_LOCAL_ADRS,
  
 。╲oid *) 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,
  
 。╲oid *) 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
  
  },
  
  ……
  
  {
  
 。╲oid *) INTERNAL_MEM_MAP_ADDR,
  
 。╲oid *) 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
  
  },
  
  {
  
 。╲oid *) ROM_BASE_ADRS,
  
 。╲oid *) 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 文件中
  
  通過函數(shù)usrMmuInit使地址映射生效
  
  4、 實現(xiàn)映射:
  
  如你定義flash地址為0x04000000開始的8Mbyte地址,則可以如下進行地址映射
  
  {
  
  (void *) 0x04000000,
  
 。╲oid *) 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系統(tǒng)中的實現(xiàn)08-06

VxWorks中怎么從Flash BOOT08-06

映射08-17

實時操作系統(tǒng)VxWorks在跟蹤雷達系統(tǒng)中的應用08-06

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

數(shù)學教案-映射08-17

上學期 2.1 映射08-17

嵌入式操作系統(tǒng)VxWorks中TFFS文件系統(tǒng)的構建08-06

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