- 博客(18)
- 收藏
- 关注
原创 PCIE驱动学习11 尝试实现DMA从板卡写PC操作
之前已经实现到了BAR0寄存器的读写。PC对PCIE板卡的控制就是以BAR0的寄存器作为窗口的。我们接下来分析驱动中从FPGA写到PC的实现。简单写一下自己之前就总结出来的几个知识点:1,PC访问板卡通过BAR0寄存器。2,板卡自主的搬运数据。3,板卡搬运数据用的地址是32位,用户空间地址64位,这需要在驱动程序里面对应起来。4,我们在驱动里获取的32位的地址,通过对bar0寄存器的写操作告知FPGA。我们实验中读动作的产生也是通过操作BAR0寄存器来产生。
2024-07-19 16:01:27
275
原创 PCIE驱动学习 最基本的一个PCIE驱动项目
在GITHUB上搜PCIE驱动找到这个最简单的,也可以编译过的。里面只有一个C文件和一个makefile。下载下来直接make就可以编译过。可以基于这个驱动做些练习。
2024-07-17 14:19:39
126
原创 PCIE驱动学习之8 对几个基本的verilog模块的分析
PCIE模块出来的是AXIS接口,这里面转成了UL接口。这个UL接口是FPGA逻辑内部反复出现大量使用的,我琢磨UL应该是作者规定的USER LOCAL 的缩写:用户本地接口。注意这个模块是双向的:从PCIE收数据也发数据跟PCIE,发数据给用户也从用户那里收数据给PCIE发出。第二个时钟域的输出就是第一个时钟域计数器的输出,这个输出保证了使用格雷码进行了时钟域的穿越。这里模块管理着接收的处理。可以发送给PC数据请求,也可以收到数据输出,带地址的形式输出出去(在这个设计中给了fifo_mem_tx模块)。
2024-07-05 12:20:45
423
原创 PCIE驱动学习之7
五 7月 5 11:00:41 2024] xtrx: buf[11]=ffb40000 [virt 000000001fae67c0] => ffb40fff。[五 7月 5 11:00:41 2024] xtrx: buf[15]=ffb00000 [virt 00000000cf0d6251] => ffb00fff。[五 7月 5 11:00:41 2024] xtrx: buf[17]=ffae0000 [virt 00000000b1ca9eba] => ffae0fff。
2024-07-05 11:03:10
655
原创 PCIE驱动学习之6 FPGA中相关中断相关接口的分析
在驱动学习之4,一起看了在驱动层中断的设置以及处理中断处理函数的设置。这里我们简单看看FPGA中关于中断部分。上图是用户模块的接口。这里面的输入对应的PCIE模块的输出,上面的输出对应PCIE模块的输入。上面的模块就是PCIE的模块具体的介绍我们看看UG477。首先我们看RTL图,找到中断相关的接口。
2024-07-05 10:44:44
96
原创 PCIE驱动学习之5
rx在申请缓冲区时候还调用了xtrx_update_rxdma_len这个函数,我们看到实际就是写入了长度给FPGA的寄存器。这里看到根据硬件GP_PORT_RD_HWCFG寄存器确定版本号并确定是进行单独一个长度寄存器的设置还是甚至全部的长度寄存器。上述分析似乎能看到驱动和FPGA之间的交互,但是没有看到用户的应用程序是如何跟驱动交互的。我们要在FPGA里面实现FPGA自主的收发,就要告诉它一组收发的地址和长度。这里的 xtrx_readl和xtrx_writel是读写FPGA内部的寄存器的。
2024-07-04 11:18:12
408
原创 一个频率估计的模块
这是一个根据现有始终估计输入数值的频率,基本原理是数1秒时间,作为计数区间,统计被测频率的计数。之后穿越时钟域输出。代码写好了 还没有进行仿真和实际运行,应该没啥问题了。
2024-07-02 11:42:31
109
原创 PCIE驱动学习之3
上面代码判断中atomic_read返回数不等于0作为condition,我们按照静态来看,就是说将atomic_read的操作的对象在调用wait_event_interruptible_timeout之前就要初始化成非0数值,否则是0的话(0!在上面截图代码里面我们看到,atomic_read,atomic_xchg,另外也可以看到atomic_inc。我们在这个xtrx这驱动里面找到的关于等待函数是wait_event_interruptible_timeout()。关于PPS的注册这里先留个疑问。
2024-07-01 17:47:22
286
原创 ZC706P+ADRV9009连接RADIOVERSE详解之三
打开软件界面我们看到,板子默认的地址为192.168.1.10 端口号为55555.我们一定也设置跟板子连接的以太网口处于192.168.1网段,并且子网掩码是255.255.255.0,另外也可以先暂时关闭掉其他网络接口,比如无线网卡等。之后会有更新进度条,大约几十秒后,会提示板子将从新启动,我们再次等待板子的LD0~LD3闪烁完毕,板子能ping通状态下,就可以再次connect. 再次强调每个SD卡只需这样更新一次。对这个软件的进一步的操作,我们尝试在接下来的blog继续探究。步骤3 :更新固件。
2022-12-26 18:14:49
1235
2
原创 ZC706P+ADRV9009连接RADIOVERSE详解之二
上一个BLOG我们在WIN上安装了RADIOVERSE软件以及做好了SD卡映像。这里看到USB UART串口是可选的,主要是用来查看启动的系统logo。6,ADRV9009射频子卡插在FMC_HPC上。上述连接完成之后,就可以通电。5,30.72M的外接参考时钟。2,上一篇文章中做好的SD卡。4,1000M 以太网口。7,设置为SD卡启动方式。
2022-12-26 15:04:28
1464
原创 ZC706P+ADRV9009连接RADIOVERSE详解之一
其中ADRV9371-SDCARD内有1G多,是一个SD卡映像文件,内有EXT4和FAT32两个文件系统,我们将此映像烧写到SD卡(具体步骤下面介绍)之后,再将ADRV9009这个盘压缩包(只有若干启动文件,无EXT4文件系统)拷贝到烧写好的SD卡的FAT32分区覆盖之前ADRV9371启动盘的内容就可以。之后使用WIN32 DISK IMAGER,找到解压缩的IMG文件,之后点WRITE ,用这个工具烧写ADRV9371的映像文件。第一步是:制作SD卡启动盘。至此SD卡映像文件做好了。
2022-12-26 12:15:14
595
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人