资源描述:
《vxworks中的地址映射》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、VxWorks中的地址映射
2、第1在运用嵌入式系统VxPC860进行通信系统设计开发时,会遇到一个映射地址不能访问的问题。缺省情况下,VxCIA)地址、InternalMemory地址、rom(Flachmemory)地址等,但是当你的硬件开发中要加上别的外设时,如(falsh、dsp、FPGA等),对这些外设的访问也是通过地址形式进行读写,如果你没有加相应的地址映射,那么是无法访问这些外设的。和Vxask;/*maskparametertovmStateSet*/UINTinitialState;/*stateparametertovmStateSet*/}PHYS_MEM
3、_DESC;virtualAddr:你要映射的虚拟地址physicalAddr:硬件设计时定义的实际物理地址len;要进行映射的地址长度initialStateMask:可以初始化的地址状态:有如下状态:#defineVM_STATE_MASK_VALID0x03#defineVM_STATE_MASK__STATE_MASK_CACHEABLE0x30#defineVM_STATE_MASK_MEM_COHERENCY0x40#defineVM_STATE_MASK_GUARDED0x80不同的CPU芯片类型还有其特殊状态initialState:实际初始化的地址状态:有
4、如下状态:#defineVM_STATE_VALID0x01#defineVM_STATE_VALID_NOT0x00#defineVM_STATE__STATE__STATE_CACHEABLE0x10#defineVM_STATE_CACHEABLE_NOT0x00同样不同的CPU芯片类型还有其特殊状态2、初始化结构在Tornado/target/config/ads860/sysLib.c文件中:PHYS_MEM_DESCsysPhysMemDesc[]={{(void*)LOCAL_MEM_LOCAL_ADRS,(void*)LOCAL_MEM_LOCAL_ADRS
5、,LOCAL_MEM_SIZE,VM_STATE_MASK_VALID
6、VM_STATE_MASK__STATE_MASK_CACHEABLE,VM_STATE_VALID
7、VM_STATE__STATE_CACHEABLE},{(void*)BCSR0,(void*)BCSR0,0x00001000,/*4k-BoardControlandStatus*/VM_STATE_MASK_VALID
8、VM_STATE_MASK__STATE_MASK_CACHEABLE
9、VM_STATE_MASK_GUARDED,VM_STATE_VALID
10、VM_STATE__STATE_C
11、ACHEABLE_NOT
12、VM_STATE_GUARDED},……{(void*)INTERNAL_MEM_MAP_ADDR,(void*)INTERNAL_MEM_MAP_ADDR,INTERNAL_MEM_MAP_SIZE,/*64k-InternalMemoryMap*/VM_STATE_MASK_VALID
13、VM_STATE_MASK__STATE_MASK_CACHEABLE
14、VM_STATE_MASK_GUARDED,VM_STATE_VALID
15、VM_STATE__STATE_CACHEABLE_NOT
16、VM_STATE_GUARDED},{(void*)RO
17、M_BASE_ADRS,(void*)ROM_BASE_ADRS,ROM_SIZE,/*Flachmemory*/VM_STATE_MASK_VALID
18、VM_STATE_MASK__STATE_MASK_CACHEABLE,VM_STATE_VALID
19、VM_STATE__STATE_CACHEABLE_NOT}};上面结构中是缺省地址映射。3、地址初始化在Tornado/target/src/config/usrMmuInit.c文件中通过函数usrMmuInit使地址映射生效4、实现映射:如你定义flash地址为0x04000000开始的8Mbyte地址,则可以如下进
20、行地址映射{(void*)0x04000000,(void*)0x04000000,0x00800000,/*8m-Flash_STATE_MASK_VALID
21、VM_STATE_MASK__STATE_VALID
22、VM_STATE_WRITABLE},5、注意地址映射最小单位为1页,4K大小,所以len值最小为:0x00010000。按照如上步骤可以进行你要访问的任何外设或芯片(诸如flash、DSP、PCI等)的地址映射,进行地址映射后,就可以象操作内存一样对该地址进行读写了。