【博文连载】PCIe扫盲——基于WinDriver快速开发PCIe驱动简明教程

  • ※操作系统:Win7 SP1 64bit

  • ※驱动开发工具:WinDriver12.1

  • ※应用程序开发工具:MSVS2012

  • ※PCIe测试板卡:Lattice ECP5 Versa Board

  • ※FPGA开发工具:Lattice Diamond 3.11

  • ※PCIe参考设计:ThroughPut Gen1 Based on ECP5 Versa Board(见本文附件)

由于电脑上安装了Lattice提供的ThroughPut参考设计的驱动了,因此我们将PCIe的Device ID改为EC32(默认为EC30),改完之后,之前安装的驱动就不认识这个PCIe设备了。开机之后,系统也会提示驱动安装失败,设备管理器则将其放在了其他设备一栏中,如下图所示:

然后,打开WinDriver,点击New Host Driver Project,进入选择器件界面:

选中待开发驱动的设备,点击Generate .INF file

选中自动安装INF文件,并点击Next,随后会弹出:

点击始终安装此驱动程序软件,然后再回到设备管理器界面,可以发现驱动已经安装成功:

此时的WinDriver开发界面如下图所示:

然后点击BAR0,界面如下,我们可以在此添加BAR0范围内的相关寄存器:

点击添加寄存器,界面如下,输入寄存器名称和Offset:

点击OK后,添加成功,随后点击Project->Generate Code,或者点击图中红框框处:

选择MS 2012(我的CPU是AMD的,所以选择的是AMD64),同时选择唤醒安装的IDE:

随后界面如下:

此时,会自动提示你关闭WinDriver,防止在运行MSVS编译后的应用程序时,与WinDriver产生资源冲突:

直接编译MSVS中的Project:

随后找到,生成的EXE文件,按照步骤,写SEG_LED寄存器的值为0000000C,成功后Versa板上的数码管显示数字1。

驱动的发布稍微复杂一点,具体可参考 WinDriver UG的第十四章节。当然你还需要正式的License,尽量支持一下正版。

附件(本文使用的FPGA Project):

PCIe_Throuput_Gen1x1.7z

 

(0)

相关推荐