青岛开发区建网站哪家好网站建设轮播大图
最近开始接触Vxworks,得知Vx中不可对物理地址直接操作,需要先转为虚拟地址。
 本文则将介绍此实现方法。
1. 物理地址映射为虚拟地址
采用pmapGlobalMap接口,对从0xf0000000开始,大小为0x1000的地址空间进行映射,得到Virtual_Base开始的虚拟地址。
/*初始化变量*/
UINT32 Virtual_Base;
UINT32 mmuAttr = MMU_ATTR_SUP_RW | MMU_ATTR_CACHE_OFF; 
/*对物理地址映射*/
Virtual_Base = pmapGlobalMap((PHYS_ADDR)0xf0000000, (size_t)0x1000, mmuAttr);
 
2. 获取某地址存放的值
根据1.转换为虚拟地址后,就要以这个虚拟地址为基址,从而获取其他地址的表示。
 如下面例子中,(Virtual_Base + 0x0004) 表示 实际物理地址为 (0xf0000000 + 0x0004) 的地址,对这个地址进行UINT32类型转换、并取值,即可得到该地址所存值。
res = *(UINT32 *)(Virtual_Base + 0x0004);
