国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

VxWorks中的地址映射

發布時間:2010-11-16 15:40    發布者:eetech
關鍵詞: 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_COHERENCY0x40
#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等)的地址映射,進行地址映射后,就可以象操作內存一樣對該地址進行讀寫了。
本文地址:http://m.qingdxww.cn/thread-39723-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 陈红下面又紧又小好爽| 亚洲精品中文字幕一区在线| 午夜三级在线观看| 中文字幕日本不卡| 亚洲破处女| 99久久国产露脸精品国产麻豆| 韩国甜性涩爱| 色欲人妻无码AV精品一区二区| 青青久热| 亚洲色婷婷久久精品AV蜜桃| 亚洲人成a在线网站| 日本精品视频在线观看| 桃色成人精品网站| 思思爱热久久精品在2019线6| 又粗又大又硬好爽我还要| 高肉黄暴NP文公交车| 人妻超级精品碰碰在线97视频| 嘴巴舔着她的私处插| 亚洲成在人线中文字幕| 日日天干夜夜人人添| 手机看片久久高清国产日韩| 91久久精品一区二区三区| 久久人妻AV一区二区软件| 亚洲AV无码专区国产乱码网站| 性久久久久久久| 日韩18| 自拍视频在线播放| 91av影院| 少妇无套内谢久久久久| 欧美婷婷综合| 青青伊人久久| 亚洲伊人久久大香线蕉在观| 亚洲自拍在线| 办公室日本肉丝OL在线| 青青久在线| 亚洲欧美日产综合一区二区三区| 天天操狠狠操夜夜操| 色图自拍偷拍| 无尽画廊污| 99视频在线精品免费观看18| 女人操男人|