Anlogic pcie_ep透传测试
本实验将上位机用作PCIE的RC端,开发板用作PCIE的EP端,由上位机向开发板发送读写数据,对PCIE的EP进行透传测试。
1.环境搭建
首先需要下载Ubuntu20.04.06LTS,不可以使用虚拟机(虚拟机不能访问PCIE设备)。
下载地址:https://releases.ubuntu.com/20.04.6/
安装教程可以参考:https://zhuanlan.zhihu.com/p/471580277
其他版本的Ubuntu的gcc编译器和Ubuntu20.04.06LTS的gcc编译器不一致,在后续make过程中会导致错误 ,应该也可以通过更换gcc编辑器的方式来解决,但本人没有尝试过。
2.烧录bit文件
design文件夹里面包含两套设计工程,分别是gen1_gen2和gen3,该开发板只支持gen1_gen2的工程。
进入impl文件夹下的case_ep,将Runs/phy_1下的ph90_pcie_ep_example.bit文件烧录到开发板中,此时开发板的LED8应该保持不亮,LED7应该保持闪烁。
3.重启主板
这一步相当重要!!!
不管是用Ubuntu直接进行烧录测试还是用windows烧录后再切换成Ubuntu进行测试,请务必在烧录bit流之后重启主板,否则主板是检测不到PCIE设备的,PCIE设备不支持热拔插!重启主板的流程也必须是先关机再开机,而不是一键重启,Ubuntu用户切记是使用poweroff而不是reboot(主板必须断电才会检测新的设备)。重启主板之后左上方的LED8应该保持常亮,表示此ep设备已经被主板识别。
4.安装驱动
进入Ubuntu,打开文件目录下的driver文件夹,可以看见三份驱动和测试程序,分别是legacy_int、msi和msix,这三份都需要测试。
4.1 文件描述
anlogic_pcie_app : 测试程序
anlogic_pcie_drv : PCIE 驱动
4.2 使用方法
a.在终端输入lspci,寻找设备Non-VGA unclassified dedvice 😃evice 1edb:dcba,此时端口号为05:00.0,输入lspci -s 05:00.0 -vvv,如果最后一行为Kernel driver in use:Anlogic-pcie则表示主板检测到PCIE设备。
b. 输入su获得root权限,并进入到anlogic_pcie_drv 目录,执行make进行编译。先检查gcc编译器,如果和要求的编译器不一样shell会警告并且出现两个关于anlogic_pci_lib.c的错误,此时需要更换gcc编译器或者更换Ubuntu版本。
如果报错在anlogic_pci_drv.c的第222行,直接vim然后把222行的函数注释掉即可
b. 执行insmod anlogic_pci.ko , 操作成功后通过dmesg | grep -i anlogic查看是否成功安装驱动
c. 进入到anlogic_pcie_app,输入chmod 777 pci_bar,打开pci_bar的使用权限。
d.打开readme.txt,向pci_bar0的 0x0和0x4地址进行读写测试,如果发送接收数据一致,则测试成功。