《ARM架构里运行PCIe demo》

From Terasic Wiki

(Difference between revisions)
Jump to: navigation, search
Line 25: Line 25:
'''<font size=3>A3. CD里的.so是x86架构的,不能用于ARM架构。用交叉编译器编译新的.so文件,再放到PCIe_SW_KIT\Linux\PCIe_Fundamental里,旧的terasic_pcie_qsys.so不要,再make PCIe_Fundamental生成新的可执行文件,即可运行。</font>'''
'''<font size=3>A3. CD里的.so是x86架构的,不能用于ARM架构。用交叉编译器编译新的.so文件,再放到PCIe_SW_KIT\Linux\PCIe_Fundamental里,旧的terasic_pcie_qsys.so不要,再make PCIe_Fundamental生成新的可执行文件,即可运行。</font>'''
 +
 +
[[File:De10 pro pcie arm64.zip]]

Revision as of 10:57, 30 May 2025

Q1. 在ARM架构、Ubuntu20.04.6LTS里编译DE10-Pro cd里PCIe_SW_KIT/Linux/PCIe_Driver驱动,有很多这样的error "access_ok" undeclared。 Make driver error1.jpg Make driver error2.jpg


A1. 可以直接修改driver,把altera_pcie.c里所有access_ok的第一个参数拿掉,access_ok的定义从access_ok(type, addr, size)变更为access_ok(addr, size)。移除第一个type参数例如 VERIFY_READ 或 VERIFY_WRITE)。 Modify driver.png

Q2. 改了驱动后再编译没问题了,但是sh load_driver有问题提示Matching Device Not Found;lspci看起来没有正常识别PCIe设备。 Loaddriver error.jpg

Lspci.jpg

Dmesg.jpg


A2. 可以改Demonstrations\FPGA\PCIe_Fundamental这个demo的pcie IP设置,再Generate HDL并重新编译Quartus工程生成sof然后烧到FPGA。如下图所示,打开.qsys将pcie ip的Class Code改为非0即可。解决方案参考此链接[1]里的内容。 Modify pcie classcode.png


Q3. 改了之后烧录新的sof再load driver没问题了。但是直接运行CD里的PCIe_Fundamental可执行文件会报错Command not found,在ARM架构里make PCIe_Fundamental生成新的可执行文件,运行时也有错。 Run error1.jpg

Run error2.jpg


A3. CD里的.so是x86架构的,不能用于ARM架构。用交叉编译器编译新的.so文件,再放到PCIe_SW_KIT\Linux\PCIe_Fundamental里,旧的terasic_pcie_qsys.so不要,再make PCIe_Fundamental生成新的可执行文件,即可运行。

File:De10 pro pcie arm64.zip

Personal tools