【紫光同创PCIE教程】——使用官方驱动在Windows下进行DMA读写操作/PIO读写操作

本原创教程由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处(www.meyesemi.com)

紫光同创官方主推的是在linux系统下开发驱动和上层软件,相应地,官方提供了在linux一个基于GTK+2.0的PCIE测试平台,该平台能够很好去操作官方生成的例程。需要特别注意的是,该linux系统必须是物理机,不能是虚拟机。开发使用linux系统,开发者也许可以接受,但是进一步开发提供给用户操作的软件,要考虑到用户层面的时候,无可厚非会必然选择Windows,所以在Windows开发适配的PICE驱动是最佳选择。

官方也提供了一个Windows的驱动例程,该例程能够完成PCIE的DMA读写操作和PIO内存读写操作,但是该驱动并未完全适配IP生成的官方例程,官方提供另一份的FPGA的工程与之适配。不过,官方提供适配的FPGA工程并未完全公开(提供适配的FPGA工程芯片型号为PG2L100H)。

驱动不匹配官方IP自带生成例程的原因,是该驱动不能够与IP例程完成DMA握手(流程和指令不匹配),但是可以对BAR0进行PIO读写操作。

官方提供的Windows驱动的DMA操作流程如下:

但是生成IP自带的例程的DMA操作流程与之不同,IP自带例程的DMA读写流程是:

(1)bar1 0x100:读写地址位宽+read/write+数据长度

(2)bar1 0x110:内存低32位地址

(3)bar1 0x120:内存高32位地址

由于流程和指令的不一致,导致了官方提供的Windows驱动未能和官方PCIE IP生成的例程DMA机制握手成功。

此时,要让他们成功握手通信,两个选择,一是改FPGA端工程,二是改Windows驱动。对于刚入门的选手,很明显是改驱动比改硬件简单和省时间。

改驱动很简单,只有将上面的指令流程改成与IP生成例程相对应即可(特别注意这里不是说原来的驱动有问题,改动只是适配IP生成的FPGA端例程)。改动如下:

改完之后,重新生成驱动,这个编译生成使用的是Visual Studio 2022,需要安装与版本对应的wdk库等,编译有问题基本都是环境没配置好(如数字签名等),对于软件老手都是家常便饭了,就不详说。再之后,直接在bin目录进入Powershell/cmd。输入./pdma_rw.exe,打印信息可以帮助我们如何进行指令操作。

将datafile4K.bin 的1024byte数据传输给FPGA,再将FPGA的数据读回来写入datafile4K_recv.bin。

将datafile4K_recv.bin对比一下datafile4K.bin ,可以发现读回来的数据是正确的。

使用指令对BAR0进行读写,写入1234,读回来也是1234,write/read后面的0代表地址偏移量。

最后简单声明一下,更改驱动只是适配紫光同创IP生成的例程,把IP自带例程的DMA机制通信成功起来,当然也可以去更改IP生成例程DMA的逻辑设计来适配原来的驱动。

盘古50K开发板|紫光同创PGL50H开发平台

相关推荐
玉~你还好吗25 分钟前
【嵌入式电机控制#34】FOC:意法电控驱动层源码解析——HALL传感器中断(不在两大中断内,但重要)
单片机·嵌入式系统·电机控制
STC_USB_CAN_80511 小时前
所有普通I/O口都支持中断的51单片机@Ai8051U, AiCube 图形化配置
单片机·嵌入式硬件·51单片机
正点原子2 小时前
《ESP32-S3使用指南—IDF版 V1.6》第三十四章 RGB触摸实验
单片机·物联网·嵌入式
码小文3 小时前
Altium Designer 22使用笔记(8)---PCB电气约束设置
笔记·嵌入式硬件·硬件工程·ad22
dumpling01203 小时前
新手向:使用STM32通过RS485通信接口控制步进电机
stm32·单片机·嵌入式硬件
hazy1k3 小时前
STM32-FreeRTOS快速入门指南(中)
stm32·单片机·嵌入式硬件
清风6666664 小时前
基于51单片机自动浇花1602液晶显示设计
单片机·嵌入式硬件·mongodb·毕业设计·51单片机·课程设计
古译汉书4 小时前
嵌入式-SPI番外之按钮驱动程序的编写-Day15
c语言·stm32·单片机·嵌入式硬件·mcu·算法
9527华安7 小时前
FPGA实现Aurora 64B66B图像视频点对点传输,基于GTH高速收发器,提供2套工程源码和技术支持
fpga开发·音视频·aurora·gth·高速收发器·64b66b
小莞尔9 小时前
【Proteus仿真】【51单片机】基于51单片机密码锁
stm32·单片机·嵌入式硬件·51单片机·proteus