Felix

技术源于积累,成功始于执着! 个人邮箱:justlxy@mail.dhu.edu.cn QQ:1576109464

PCIe扫盲——基于WinDriver快速开发PCIe驱动简明教程

2
阅读(12802)

连载目录篇:http://blog.chinaaet.com/justlxy/p/5100061871


本文将简要介绍如何使用Jungo公司的WinDriver工具快速开发PCI Express设备驱动,以及相关注意事项。本文所使用的的测试平台信息如下:

  • ※操作系统: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设备了。开机之后,系统也会提示驱动安装失败,设备管理器则将其放在了其他设备一栏中,如下图所示:

1.PNG

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

3.PNG

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

4.PNG

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

5.PNG

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

6.PNG

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

7.PNG

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

8.PNG

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

9.PNG

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

10.PNG

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

11.PNG

随后界面如下:

12.PNG

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

13.PNG

直接编译MSVS中的Project:

14.PNG

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

15.PNG

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

附件(本文使用的FPGA Project):PCIe_Throuput_Gen1x1.7z