win10 jungo windriver

目录

前言

1、安装windriver

1.1、disable Secure Boot

1.2、digital driver signing enforcement

1.3、产生PCIE驱动

2、PCIE PIO通信测试

3、PCIE DMA通信测试

3.1、vs打开BMD工程

3.2、READ DMA流程演示

3.3、WRITE DMA流程演示

3.4、DMA速度测试

总结


 

前言

声明:本文仅适用于学习交流!本文使用的软件平台,请支持正版软件。

本文从FPGA硬件工程师的角度进行测试与记录。

相关博客参考:

         五、Xilinx PCIE CORE学习;

        六、Xilinx PCIE DMA--Sparten6/Kintex-7 BMD

        七、Xilinx PCIE DMA 仿真环境搭建

        八、win10 jungo windriver

 

 

PC系统:win10 教育版 1809

电脑主板:华硕

jungo windriver:v14.3.0  x86_64

jungo windriver下载网址:http://www.jungo.com/st/products/windriver/thank-you/

 

1、安装windriver

安装jungo windriver遇到的问题如下图所示:

主要问题为两个:

(1)电脑被Secure Boot保护,需要disable Secure Boot。

(2)digital driver signing enforcement。

 

1.1、disable Secure Boot

首先,确定自己电脑厂家或主板厂家。我的电脑主板是华硕,以华硕为例。其他厂家稍有不同。

详细步骤:

(1)重启电脑,开机按【F2】或【DEL】进去BIOS设置界面。

(2)在顶部菜单栏,点击进入【启动】。

(3)选择【快速启动】,将其设置为【disabled】状态。

(4)点击进入【安全启动菜单】,将【操作系统类型】从原来的windows更改为【其他操作系统】

(5)点击进入【密钥管理】,点击【清除安全启动密钥】,确认清除。

(6)返回安全启动菜单,此时【安全启动状态】即secure boot已关闭。保存设置,退出即可。

 

1.2、digital driver signing enforcement

打开win10 的设置,进入“更新和安全”---恢复----“高级启动”下面的“立即重新启动”,会进入一个重启界面,选择一个选项:“疑难解答”,接着选择“高级选项”,然后选择“查看更多恢复选项”,选择“启动设置”,点击重启,选择“禁用驱动程序强制签名”(就是按数字键7)

若遇到其他Windrive报的错误(具体错误忘记录了),可尝试将下面Base Class设置为Memory controller试试。
 

win10 jungo windriver_第1张图片

win10 jungo windriver_第2张图片

1.3、产生PCIE驱动

(1)打开windriver,按照下图产生PCIE驱动;

win10 jungo windriver_第3张图片

win10 jungo windriver_第4张图片

(2)打开设备管理器,更新PCIE驱动,选择刚才windrive生成的PCIE驱动即可。

 

2、PCIE PIO通信测试

FPGA测试工程,可以使用PCIE IP自带的example工程即可,添加好对应的约束。

如果自己基于xapp1052搭建的BMD工程,想对其测试PIO操作的话,也可以参考。

测试流程:

(1)下载FPGA程序(bit/mcs);

(2)关机重启,电脑重启过程中对PCIE IP执行复位动作/并分配相应的地址。

(3)使用chipscope下载cdc观察文件。步骤:file--import--**.cdc,选择对应的cdc文件。下载mcs和bit效果一样,开机后都需要下载cdc文件,用于chipscope观察波形。(mcs文件需要板卡断电,bit需要关机重启)

(4)打开windrive,PIO读写 PCIE,chipscope触发观察波形。

 

图文步骤:

首先,自己基于xapp1052搭建的BMD工程,需要对其进行modelsim PIO仿真通过,以确定该BMD工程的完整性。

之后,打开windrive

win10 jungo windriver_第5张图片

在generate pcie IP时,有设置相应的BAR空间,下图可以看到对应的BAR空间以及地址范围。

若进行与modelsim仿真一样的PIO测试,点击read/write memory,offset 值要设置为0x10,因为modelsim进行PIO仿真时,读写测试地址也是该地址。

从下面的测试结果可知,若offset不是0x10,则回读的数据不是写下去的数值。

win10 jungo windriver_第6张图片

 

3、PCIE DMA通信测试

软件版本:

windrive:v14.3.0  x86_64

visual_studio:2015。

FPGA工程:SPARTEN6 (基于xapp1052修改)

3.1、vs打开BMD工程

使用visual_studio2015打开windrive目录下的\xilinx\bmd_design\amd64\msdev_2015。(注意VS版本要与BMD程序版本一致)

可见vs工程目录如下图所示。

win10 jungo windriver_第7张图片

工程文件介绍():

文件 功能
bmd_diag.c BMD测试主文件:用亍用户诊断和调试PCIe的DMA,PCIe的IO寄存器读写,配置空间信息的访问,以及DMA的读写等等。用户可以通过选择需要调试的选项进行FPGA PCIE的调试。
bmd_lib.c BMD测试库:bmd_diag.c相关的库凼数
diag_lib.c 公共库:主要负责调试过程中调试信息的输入输出
pci_diag_lib.c 公共库:主要负责打印PCI卡的信息以及PCI的配置寄存器信息
print_struct.c 公共库:提供打印用户当前选择的PCI卡信息的相关函数
wdc_diag_lib.c 公共库:主要是为用户提供WDC的相关底局驱劢凼数

 

3.2、READ DMA流程演示

下图仅是参考。注意下图的vendor ID和Device ID。

win10 jungo windriver_第8张图片

(1)打开工程后,F5进入测试

win10 jungo windriver_第9张图片

(2)根据提示,依次输入:

  • 2,回车

  • vendor ID值,回车。(该数值来自PCIE IP CORE生成过程中的配置,根据自己PCIE IP实际值输入

  • Device ID值,回车。(该数值来自PCIE IP CORE生成过程中的配置,根据自己PCIE IP实际值输入

  • 7,回车。(7,是进行DMA读写测试)

win10 jungo windriver_第10张图片

 

这里附上xapp1052手册里的访问步骤及配置寄存器数值,便于参考。

win10 jungo windriver_第11张图片

win10 jungo windriver_第12张图片

 (3)设置的DMA TLP COUNT

注意下图中设置的DMA TLP COUNT =1,之后需要对比chipscope的波形。

win10 jungo windriver_第13张图片

 

将断电设置到下图函数里的992行处。当程序运行到断点时,使用chipscope等待触发;然后VS按F5运行到结束。

win10 jungo windriver_第14张图片

chipscope触发条件:trn_rsof_n==0。可以观察到波形

win10 jungo windriver_第15张图片

放大观察,并对比xapp1052手册,下图TLP包对用READ DMA的操作步骤6.

win10 jungo windriver_第16张图片 3DW TLP包头

上图该TLP报文

第一帧trn_rd[31:0]数据:32'h4000_0001,高八位是R-FMT-TYPE:0100_0000;低10位是length:10'h001;

第二帧trn_rd[31:0]数据:32'h0000_000F,低八位是Last DW BE/1st DW BE:8'h0F

第三帧trn_rd[31:0]数据:32'hA400_0004,trn_rd[31:2]是Address,即DCR2寄存器地址

第四帧trn_rd[31:0]数据:32'h0000_0100,对DCR2寄存器写入数据,即READ DMA的操作步骤6。

之后,开始传输数据,即READ DMA操作:PC给FPGA发数据,FPGA开始接收数据。接收数据的个数是512个字节,此处对应上面步骤  “(3)设置的DMA TLP COUNT==1”  

 由下图可见,当软件设置的DMA TLP COUNT==1时,实际PC向FPGA下发了512字节的数据量。

3.3、WRITE DMA流程演示

win10 jungo windriver_第17张图片

调试断点依旧设置在相同位置,chipscope截图

win10 jungo windriver_第18张图片

放大观察

win10 jungo windriver_第19张图片

3.2/3.3小节仅截图了下发和上传给PC的TLP数据包,展示了DMA的TLP数据流。详细调试根据实际工程进行相关测试。

3.4、DMA速度测试

总结

本次是以SPARTEN6芯片、基于XAPP1052搭建的工程,传输数据位宽trn_rd/trn_td位宽是32位。使用windrive提供的PCIE驱动,测试了BMD工程的PIO读写访问、DMA读写访问,使用chipscope抓取TLP包。

后续,需要思考为何windrive驱动给FPAG发512数据需要分成两个TLP包进行传输,受何限制?

FPGA的话,需要进一步考虑提高传输速度。同时考虑传输数据位宽是 64/128的时候该如何搭建BMD工程。

 

 

你可能感兴趣的:(FPGA基础进阶)