请教一个在IntervalZero RTX 实时扩展下开发PLX9054驱动的问题

您大爷 2014-11-24 09:46:14
小弟最近在做一个RTX实时扩展下PLX9054驱动的问题
按照9054的手册,PCIBAR0保存内部芯片寄存器基地址,PCIBAR2保存space 0 基地址
首先要对这两地址进行内存映射,采用的是RTX的函数 RtMapMemory函数,将上面两个地址分别映射后,得到两个虚拟地址vMem1和vMem2
到这里一切正常

但是当我要往这两个寄存器里面写值的时候就会出现诡异的蓝屏
表现为只能对一个操作

比如:
我先*((PULONG)(vMem1+offset)) = val;是可以成功,
但是马上对第二个地址进行写操作*((PULONG)(vMem2+offset)) = val;不成功,出现蓝屏。

调换两个语句顺序,也是第二条才出现蓝屏。

希望高手指点一下,搞了好久了,头大啊啊啊。

映射函数大概是这样的

AddressSpace = 0x0;
memAddr.QuadPart = PciData->u.type0.BaseAddresses[0];
if (!RtTranslateBusAddress (
PCIBus, // bus interface type
busNumber, // bus number (zero based)
memAddr, // bus-relative address
&AddressSpace, // specifies port number or a memory address
&tranMemAddr // pointer to the translated address
) )
{
vMemBase0 = NULL;

}
else
{
vMemBase0 = (PUCHAR)RtMapMemory (
tranMemAddr, // base of the physical address range to map
256, // the length of address range in bytes 256 bytes
0 // whether or not to use cache
);
RtWprintf( L"Memory allocated: AddressSpace 0x%X\n",AddressSpace);

}
...全文
281 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

21,600

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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