亚洲日本成本线在观看,最新国自产拍在线,免费性爱视频日本,久久精品国产亚洲精品国产精品

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

            VxWorks中的地址映射

            時(shí)間:2023-02-21 00:06:34 電子通信論文 我要投稿
            • 相關(guān)推薦

            VxWorks中的地址映射

              作者Email:   ****
              
              在運(yùn)用嵌入式系統(tǒng)VxWorks和MPC860進(jìn)行通信系統(tǒng)設(shè)計(jì)開發(fā)時(shí),會(huì)遇到一個(gè)映射地址不能訪問的問題。
              
              缺省情況下,VxWorks系統(tǒng)已經(jīng)進(jìn)行了如下地址的映射:
              
              memory地址、bcsr(Board Control and Status)地址、PC_BASE_ADRS(PCMCIA)地址、Internal Memory地址、rom(Flach memory)地址等,但是當(dāng)你的硬件開發(fā)中要加上別的外設(shè)時(shí),如(falsh、dsp、FPGA等),對這些外設(shè)的訪問也是通過地址形式進(jìn)行讀寫,如果你沒有加相應(yīng)的地址映射,那么是無法訪問這些外設(shè)的。
              
              和VxWorks缺省地址映射類似,你也可以進(jìn)行相應(yīng)的地址映射。
              
              如下是地址映射原理及實(shí)現(xiàn):
              
              1、 地址映射結(jié)構(gòu)
              
              在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:硬件設(shè)計(jì)時(shí)定義的實(shí)際物理地址
              
              len;要進(jìn)行映射的地址長度
              
              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:實(shí)際初始化的地址狀態(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、 初始化結(jié)構(gòu)
              
              在 Tornado\target\config\ads860\sysLib.c 文件中:
              
              PHYS_MEM_DESC sysPhysMemDesc [] =
              
              {
              
              {
              
             。╲oid *) 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
              
              },
              
              {
              
             。╲oid *) 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
              
              },
              
              {
              
              (void *) 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
              
              }
              
              };
              
              上面結(jié)構(gòu)中是缺省地址映射。
              
              3、 地址初始化
              
              在Tornado\target\src\config\ usrMmuInit.c 文件中
              
              通過函數(shù)usrMmuInit使地址映射生效
              
              4、 實(shí)現(xiàn)映射:
              
              如你定義flash地址為0x04000000開始的8Mbyte地址,則可以如下進(jìn)行地址映射
              
              {
              
              (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.
              
              按照如上步驟可以進(jìn)行你要訪問的任何外設(shè)或芯片(諸如flash、DSP、PCI等)的地址映射,進(jìn)行地址映射后,就可以象操作內(nèi)存一樣對該地址進(jìn)行讀寫了。

            【VxWorks中的地址映射】相關(guān)文章:

            地址重映射在S3C4510B系統(tǒng)中的實(shí)現(xiàn)08-06

            VxWorks中怎么從Flash BOOT08-06

            映射08-17

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

            基于VxWorks的bootrom代碼改進(jìn)08-06

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

            上學(xué)期 2.1 映射08-17

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

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