sysMmuMapAdd()的使用

zizicky 2015-10-28 04:24:04
开发环境vxWorks6.6
BSP包:HPCN8641D
处理器;PowerPC--MPC8641D
在syslib.c中有
STATUS sysMmuMapAdd
(
VIRT_ADDR address,
UINT32 length,
UINT32 initialStateMask,
UINT32 initialState
)
{
PHYS_MEM_DESC *pMmu;
STATUS result = OK;

pMmu = &sysPhysMemDesc[sysPhysMemDescNumEnt];

if(pMmu->virtualAddr != (VIRT_ADDR)DUMMY_VIRT_ADDR)
result = ERROR;
else
{
pMmu->virtualAddr = address;
pMmu->physicalAddr = address;
pMmu->len = length;
pMmu->initialStateMask = initialStateMask;
pMmu->initialState = initialState;
sysPhysMemDescNumEnt += 1;
}

return (result);
}
在PCI的配置过程中,这个参数都是怎么考虑的。
在通过pciConfigInLong函数得到Bar的基地址之后,是否需要重新映射?
...全文
454 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
土豆 2015-12-27
  • 打赏
  • 举报
回复
这是配置MMU内存虚实地址转换,上面的做法是虚实地址映射成一样,实际就是bypass MMU的地址转换功能。 你需要给每一个映射到内存空间的设备配置一个条目。 至于pciConfigInLong函数得到Bar的基地址,你可以理解为,这其实只是该设备在你配置的PCI 内存空间中的一个偏移。

2,179

社区成员

发帖
与我相关
我的任务
社区描述
xworks是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。
社区管理员
  • VxWorks开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧