0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Petalinux加速axi-dma内核驱动缓冲区读过程

C29F_xilinx_inc 来源:赛灵思 作者:赛灵思 2022-02-16 16:21 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1、参考https://forums.xilinx.com/t5/%E5%B5%8C%E5%85%A5%E5%BC%8F-%E7%A1%AC%E4%BB...

按照官方说明,copy数据速率基本为系统ddr的带宽。

2、工程 生成数据大小2048X2048 4MB 也就是一次dma数据大小,一次dma数据的大小与axi-dma核中buffer lenght registr有关,长度最大26,也就是2^26个字节,为64MB,工程中加入ila核用来调试。

poYBAGIMpTyAYJvtAAJCVgOdWlk847.png

3、生成bit后,导出xsa文件。
4、在vitis中应用xsa文件,新建a5_zynqmp_fsbl工程,按照官方说明,修改sfsbl_main.c,并编译,在debug文件夹中可以找到a5_zynqmp_fsbl.elf文件。

poYBAGIMpT6AG_TAAAU0cuw5eRo039.png

5、在petalinux环境中新建工程,参考以前的博客,直到petalinux-build。
6、修改设备树

poYBAGIMpT-AaMEDAAGzAPp__24370.png

7、重新petalinux-build。
8、在image/linux文件夹下

pYYBAGIMpUGAAOv_AAH9HYEgbjE594.png

9、拷贝出bl31.elf boot.scr image.ub pmufw.elf system.bit system.dtb u-boot.elf 七个文件,以及vitis中生成的a5_zynqmp_fsbl.elf共8个文件,到linux_dma_test.
10、在petalinux工程中,build文件夹中拷贝bootgen.bif文件,并修改成如下

poYBAGIMpUOAVpOTAADAWGY0B3U139.png

11、新建regs.init

pYYBAGIMpUSAUO1OAAAxkZn3Sl0889.png

12、生成BOOT.BIN,然后一起将BOOT.BIN image.ub和boot.scr复制到sd卡。

poYBAGIMpUWAfNwZAADSrgahF0g870.png

13、测试

poYBAGIMpUeALBDKAAC60ij8J_A905.png

pYYBAGIMpUmAYEEzAAJCH3rUgI8607.png

14、上电开机,加载axi-dma的驱动,将3.0U盘挂在到mnt下

poYBAGIMpUyAJ250AAEGdErzqQs418.png

由以上可以看出,pl生成一张4MB的数据耗时43ms,将4MB数据由dma读缓冲区copy到内核缓冲区耗时4ms,基本接近ddr的带宽。整个链路中的带宽完全受限于U盘的存储速度。

15、U盘中的图片,大小128MB,数据正确。

poYBAGIMpVmADcOWABP3Mu4LBzg213.png

审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 文件
    +关注

    关注

    1

    文章

    585

    浏览量

    25522
  • 编译
    +关注

    关注

    0

    文章

    680

    浏览量

    34361
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    对于CYUSB3014芯片,哪个函数可以读取GPIF II端DMA缓冲区中缓存的实际数据量?

    : 1.哪个函数可以读取USB端口缓冲区数据的实际字节数? 2. 哪个函数可以读取 GPIF II 上 DMA 缓冲区数据的实际字节数? 3、GPIF II 接口的标志信号会受 USB 端口状态的影响吗?会怎样,然后又会产生怎样
    发表于 07-21 07:27

    如何清除CYUSB3014的缓冲区数据?USB接口数据什么时候发送到电脑?

    、如何清除GPIF II接口处对应的DMA BUFFER数据?当标志设置为满/非满状态时,一旦 DMA 缓冲区已满,标志信号就会指示它已满。清除DMA
    发表于 07-18 07:58

    FX3 Socket缓冲区切换的最大时间是多少?

    中说“套接字在填充或清空 DMA 缓冲区后,需要一段有限的时间(最多几微秒)才能从一个 DMA 描述符切换到另一个 DMA 描述符”(第 14 页)并且“如果外部外围设备在套接字从内存
    发表于 05-16 07:51

    在传输DMA通道中的所有缓冲区后,DMA标志(就绪和部分)被卡住了是怎么回事?

    ,在对 FX3 固件进行编程期间和编程后没有直接打印出错误信息。 但在传输过程中,UART 调试器显示发送/接收的缓冲区为 0,我认为这是 DMA 自动模式的预期行为(如果不是,请指正)。 当我切换
    发表于 05-16 07:18

    DMA缓冲区设置为48K,如果没有写满48K,数据会自动被发送出去吗?

    请问我的DMA缓冲区设置为48K,如果没有写满48K,数据会自动被发送出去吗。2.有没有清空DMA缓冲区的函数,我直接调用CyU3PUsbFlushEp()不起作用。
    发表于 05-09 06:21

    求助,关于3014的缓冲区设置疑问求解

    rgb24 1080p@60fps是静态图像,dma缓冲区的配置即大小和数量分别为16kb,6,沿用的是yuy2的配置,但yuy2 1080p@60fps 是动态且不颠倒,是否可以认为是由于缓冲区
    发表于 05-06 13:42

    一文详解AXI DMA技术

    AXI直接数值存取(Drect Memory Access,DMA)IP核在AXI4内存映射和AXI4流IP接口之间提供高带宽的直接内存访问。DMA
    的头像 发表于 04-03 09:32 1230次阅读
    一文详解<b class='flag-5'>AXI</b> <b class='flag-5'>DMA</b>技术

    请问如何在Linux中使用帧缓冲区更新epdc显示?

    我正在使用带有 epdc 显示子卡 (IMXEBOOKDC5) 的 IMX8ULP EVK。使用 Linux 映像引导后,epdc 显示无法使用帧缓冲区进行更新。当检查显示 pmic 的电源使能引脚
    发表于 04-01 06:41

    求助,关于使用glTexDirectVIVMap通过openGL绘制相机缓冲区内容的AXI总线错误问题求解

    buffer, liberate it} }} 可能不是最好的代码,它只是一个测试/示例。 它会导致内核崩溃并显示“AXI BUS ERROR”,尽管缓冲区据说没有在其他地方使用。我已将其从 V4L2
    发表于 03-28 07:28

    FreeRTOS进阶使用之流缓冲区:高效处理字节流的秘密武器

    在嵌入式开发中,流缓冲区(Stream Buffer)是FreeRTOS中用于高效处理字节流数据传输的核心机制,尤其适合任务间或中断与任务间的连续数据传输场景(如串口通信、网络数据流等)。本文将深入
    发表于 03-24 11:37

    RTOS的流缓冲区机制解析

    SAFERTOS中的流缓冲区(Stream buffer)机制,可以实现任务到任务或中断到任务之间的通信。字节流是由发送方写入缓冲区,接收方读取缓冲区数据。流缓冲区作为队列的轻量级级替
    的头像 发表于 02-14 11:33 637次阅读
    RTOS的流<b class='flag-5'>缓冲区</b>机制解析

    ZYNQ基础---AXI DMA使用

    Xilinx官方也提供有一些DMA的IP,通过调用API函数能够更加灵活地使用DMA。 1. AXI DMA的基本接口 axi
    的头像 发表于 01-06 11:13 2699次阅读
    ZYNQ基础---<b class='flag-5'>AXI</b> <b class='flag-5'>DMA</b>使用

    AMD Zen 4处理器悄然禁用循环缓冲区

    近日,AMD在更新BIOS后,对Zen 4架构的处理器进行了一项未公开说明的更改:禁用了循环缓冲区(Loop Buffer)功能。这一变化引发了业界和用户的广泛关注。 循环缓冲区作为CPU前端的一个
    的头像 发表于 12-11 13:46 636次阅读

    分享一个嵌入式通用FIFO环形缓冲区实现库

    开源项目ringbuff ,是一款通用FIFO环形缓冲区实现的开源库,作者MaJerle,遵循 MIT 开源许可协议。
    的头像 发表于 10-23 16:20 1348次阅读
    分享一个嵌入式通用FIFO环形<b class='flag-5'>缓冲区</b>实现库

    内存缓冲区和内存的关系

    内存缓冲区和内存之间的关系是计算机体系结构中一个至关重要的方面,它们共同协作以提高数据处理的效率和系统的整体性能。
    的头像 发表于 09-10 14:38 1334次阅读