Xilinx官方的XDMA驱动的目录结构大致如上图所示,大致就是:xdma(驱动代码)、tools(测试工具)、tests(自动化测试脚本)、include(对外头文件)。 今天重点分析驱动的代码部分,也会简单的介绍一些测试文件代码的基本用法。 1.1 tests/tools tools中的文件就是用于测试驱动mem读写、寄存器读写、等的工具。 tests中的文件 就是自动化运行脚本,分为两种测试方法,第一种是mem mapped 方式,第二种事streamming的方式,两种模式的区别在于DMA以及FPGA的传输方式不同。 1.2 xdma xdma就是驱动部分的代码,我们先看一下驱动安装成功后,所生成的设备文件,然后对应设备文件去看驱动代码每部分的功能和控制逻辑。 xdma_user与xdma_control调用了同一个设备初始化接口,但是是两个不同的设备, 上层接口传递的参数有差异。可以从代码里查看到。他们映射的bar空间是不一样的。 control映射的是配置寄存器的bar空间,user映射的给用户预留的bar空间。 接下来就是cdev_xvc.c与xdma_xvc设备了, 说实话,目前我没怎么用过这个设备,不过大体看代码逻辑,可能跟fpga的xvc协议有关。Xilinx虚拟线缆(XVC) 是一种基于TCP/IP的协议,其不仅可发挥类似于JTAG线缆的作用,而且还可提供一种无需使用物理线缆便可访问和调试FPGA或SoC设计的方法。Xilinx虚拟线缆 (XVC)。 2.4 cdev_events.c及xdma_events_x设备:这个文件具体的含义就是处于处理事件函数:也就是中断处理。这个设备的读操作是阻塞的,当读到有fpga有中断过来,那么就会返回应用层,用纸用户层代码就行下一步中断来了处理的逻辑。 char_events_read
|