在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            VxWorks中的地址映射

            作者: 時間:2004-12-10 來源:網(wǎng)絡(luò) 收藏
            作者Email: [email protected]

            在運用嵌入式系統(tǒng)和MPC860進行通信系統(tǒng)設(shè)計開發(fā)時,會遇到一個不能訪問的問題。
            缺省情況下,系統(tǒng)已經(jīng)進行了如下

            memory、bcsr(Board Control and Status)地址、PC_BASE_ADRS(PCMCIA)地址、Internal Memory地址、rom(Flach memory)地址等,但是當你的硬件開發(fā)中要加上別的外設(shè)時,如(falsh、dsp、FPGA等),對這些外設(shè)的訪問也是通過地址形式進行讀寫,如果你沒有加相應(yīng)的地址,那么是無法訪問這些外設(shè)的。

            缺省地址映射類似,你也可以進行相應(yīng)的地址映射。

            如下是地址映射原理及實現(xiàn):

            1、地址映射結(jié)構(gòu)

            在Tornado argethvmLib.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è)計時定義的實際物理地址
            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、初始化結(jié)構(gòu)

            在 Tornado argetconfigads860sysLib.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
            }
            };
            上面結(jié)構(gòu)中是缺省地址映射。

            3、地址初始化

            在Tornado argetsrcconfig usrMmuInit.c 文件中
            通過函數(shù)usrMmuInit使地址映射生效

            4、實現(xiàn)映射:

            如你定義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。

            按照如上步驟可以進行你要訪問的任何外設(shè)或芯片(諸如flash、DSP、PCI等)的地址映射,進行地址映射后,就可以象操作內(nèi)存一樣對該地址進行讀寫了。



            關(guān)鍵詞: 映射 地址 VxWorks

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉