Turbo8332467
驱动牛犊
驱动牛犊
  • 注册日期2004-05-19
  • 最后登录2007-01-30
  • 粉丝0
  • 关注0
  • 积分83分
  • 威望12点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
阅读:1061回复:1

急急急!!!用windriver开发PCI驱动的问题

楼主#
更多 发布于:2004-05-31 10:09
  第一次编驱动,用winDriver,有疑难问题,请各位大侠们帮忙啊。
  我用WinDriver开发一个PCI数据采集卡的驱动,用的是AMCC5933的片子。板子的功能是利用5933的passthru方式从主机向板子发数据,用5933的FIFO方式从板子上往主机读数据。先用WinDriver的向导生成了一个诊断程序。我就在这个诊断程序的基础上实现了passthru的数据写,现在看来还没什么问题。
  但接下来要从板子上读数据我就有问题了。看了5933的文档,它的工作过程应该是主机先开辟一段内存空间,把这段空间的首地址和要传送的数据长度写到5933的PCI操作寄存器里,这时5933开始向主机传送数据。
  5933把这些规定长度的数据传完以后就向主机发一个IRQ中断。
    我现在还有几个问题搞不清楚:一个是往5933操作寄存器里写的首地址是不是就是主机内存的物理地址,比如说用malloc():
    unsigned char* spacep;
    unsigned long startAddress;
    spacep=malloc(20);
    if(spacep==NULL)
      printf(\"insufficeent memory available\\n\");
    else
      printf(\"memory space allocated for data from PCI\\n\");
    memset(spacep,0,20);
    startAddress=(unsigned long) spacep;
    我就把上面程序里的这个startAddress赋值给5933的MWAR寄存器里,不知有没有问题。
  第二个问题是,这个中断处理程序应该怎么写,它要实现什么样的功能?
sam_xu_bj
驱动牛犊
驱动牛犊
  • 注册日期2003-12-18
  • 最后登录2004-07-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-06-03 15:56
gz
游客

返回顶部