在学校的时候,曾经采用DDK+Driverstudio+VC6.0环境做过9054视频采集卡的驱动开发,调试过程中记得最清楚的就是遇到过无数次的计算机蓝屏重启。。。。今天第一天来到新公司,老大就说你以前不是做过PCI驱动的开发嘛,手头上刚好有一个PCI-CAN的通信卡项目,你把驱动程序写一写。那就干活吧。
先参看以下前人做的工作吧,用的是PLX SDK做的开发。记得上次做9054开发时候,遇到过这玩意,当时看了一阵子,还是不太理解这个SDK到底是干啥的,哈哈,可能当时对PCI总线不太理解。不看不知道,一看吓一跳!原来这个SDK已经把驱动程序,就是我做9054开发时候最头痛的sys文件,给搞定了。提供了十几个samples让你模仿,直接open——write——interrupt——read——close。哎,这么一搞,原来的驱动开发只剩下接口封装啦。
那就直接看软件接口协议。接口协议无非就是定义了open、set、send、receive、close原型,数据格式、通讯命令及ack。说到底,其实就是open——write——interrupt——read——close,那还是先研究SDK提供的samples,只看了DSlave、DSlave_BypassApi、LocalToPciInt三个例子,已经搞清楚怎么使用SDK提供的API,向PCI总线丢数据、从PCI总线捡数据、如何使用local_to_PCI中断。
想想怎么实现open。SDK提供的samples,打开设备时用到了2个API。
PLX_STATUS EXPORT PlxPci_DeviceFind( PLX_DEVICE_KEY *pKey, U16 DeviceNumber );
PLX_STATUS EXPORT PlxPci_DeviceOpen( PLX_DEVICE_KEY *pKey, PLX_DEVICE_OBJECT *pDevice );
原文:http://www.cnblogs.com/yuqiao-ray-vision/p/3607906.html