构建AXI Stream与rootfs为Ubuntu的Petalinux进行协作实例(通用版)
第一步 Vitis HLS创建IP核,并在Vivado中生成XSA
VIVADO HLS Training AXI Stream interface #07 - YouTube
https://github.com/smosanu/axi_stream_tutorial
注意事项:
https://github.com/bperez77/xilinx_axidma/issues/18#issuecomment-357294618
AXI Lite在裸机程序中可用,在操作系统中不可用。
所以需要添加
#pragma HLS INTERFACE ap_ctrl_none port=return
将ap_ctrl删除,仅使用AXI Stream
不要忘记连接AXI DMA的中断信号!
2024/2/11更新:导致axidma驱动在ZYNQMP上工作不正常的原因已找到,是内核中自带的XilinxDMA驱动错误的接管了中断信号,导致User Space一直接收不到中断信号继而超时。
第二步 构建Petalinux
2.0 配置内核
【精选】ZCU106开发(2)在Linux系统层上PL-PS通过AXI-DMA传输数据详细步骤及注意事项_zcu106 dma_aizaiyueye的博客-CSDN博客
Kernel Features—->Maximum count of the CMA areas 无需配置
dma-channel@后面的地址需要根据pl.dtsi修改
pl.dtsi和pcw.dtsi在一个目录里
2.1 编译驱动
Enable Linux 5.4 support by andrewvoznytsa · Pull Request #139 · bperez77/xilinx_axidma (github.com)
添加5.x内核驱动(也可以直接用我们的GitHub仓库)
编译完成后驱动文件在\build\tmp\sysroots-components\zynq_generic\xilinx-axidma\lib\modules\5.15.19-xilinx-v2022.1\extra
里
每次petalinux-build后,需要重新复制新的驱动,否则不兼容
CMA大小可以通过\project-spec\configs\config
中修改bootargs实现
2.2 构建Ubuntu根文件系统
【精选】制作适用于ZYNQ(ARM平台)的Ubuntu系统_xczu跑ubuntu系统_MarkusXu的博客-CSDN博客
Certificate verification failed: The certificate is NOT trusted. The certificate chain uses expired certificate. Could not handshake: Error in the certificate verification. [IP: 2402:f000:1:400::2 443]
|
|
ifupdown resolvconf
http://ports.ubuntu.com/ubuntu-ports/pool/main/i/ifupdown/ifupdown_0.8.35ubuntu1_armhf.deb
http://ports.ubuntu.com/ubuntu-ports/pool/main/r/resolvconf/resolvconf_1.78ubuntu7_all.deb
chroot: failed to run command ‘/bin/bash’: Exec format error
|
|
(31条消息) 打包开发板根文件系统,并制作成img镜像_歌舞丶升平的博客-CSDN博客
dns解析失败
|
|
/etc/resolvconf/resolv.conf.d/base
|
|
/etc/resolvconf/resolv.conf.d/head
创建swap
|
|
gpio permission denied
|
|
制卡时,如果需要多分区,则启动分区应当为FAT16而非FAT32
第三步 Zynq板卡启动镜像
启动完成后使用sudo insmod xilinx-axidma.ko
加载驱动到内核
使用dmesg | grep dma
查看驱动是否加载成功,是否识别到ip核中的通道
正确加载驱动后再编写程序测试ip核功能是否正常