SQuest
驱动牛犊
驱动牛犊
  • 注册日期2009-08-18
  • 最后登录2009-09-01
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1953回复:3

9054dma操作时,传递的pci address到底是什么值?

楼主#
更多 发布于:2009-08-28 10:08
我在实验pci9054的dma功能。因为我用的驱动(ni-visa)没有设置dma的功能,所以我要手动的设置9054的dma寄存器。
我是把申请的数组的首地址当做这个pciaddress传递过去的,但是写进去的数据全是0,不是数组的数据,而读出的时候,读完了,计算机过会儿就会蓝屏,因为写错了内存位置。
所以请问这个pci address到底应该是什么地址,又如何获得呢?
谢谢。
tqijin
驱动小牛
驱动小牛
  • 注册日期2006-07-04
  • 最后登录2013-11-21
  • 粉丝3
  • 关注0
  • 积分31分
  • 威望1060点
  • 贡献值1点
  • 好评度14点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-08-28 16:56
可能是你申请的数组不是物理连续的,pciaddress指的是你申请的物理连续地址
SQuest
驱动牛犊
驱动牛犊
  • 注册日期2009-08-18
  • 最后登录2009-09-01
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-08-28 22:24
就是为了保证这一点,使用malloc来申请的,应该是连续的,然后将malloc返回的指针值作为地址传递给pciaddress的,而且写入的时候,一个数都不是我设置的值。
读出时根本没法检验就蓝屏了。
tqijin
驱动小牛
驱动小牛
  • 注册日期2006-07-04
  • 最后登录2013-11-21
  • 粉丝3
  • 关注0
  • 积分31分
  • 威望1060点
  • 贡献值1点
  • 好评度14点
  • 原创分0分
  • 专家分0分
地板#
发布于:2010-08-26 18:38
引用第2楼SQuest于2009-08-28 22:24发表的 :
就是为了保证这一点,使用malloc来申请的,应该是连续的,然后将malloc返回的指针值作为地址传递给pciaddress的,而且写入的时候,一个数都不是我设置的值。
读出时根本没法检验就蓝屏了。

malloc来申请只是逻辑上连续,不是真正的物理连续地址,看看帆子的书,有物理连续内存申请函数
游客

返回顶部