阅读:1061回复:1
急急急!!!用windriver开发PCI驱动的问题
第一次编驱动,用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寄存器里,不知有没有问题。 第二个问题是,这个中断处理程序应该怎么写,它要实现什么样的功能? |
|
沙发#
发布于:2004-06-03 15:56
gz
|
|