1 Petalinux加速axi-dma内核驱动缓冲区读过程-德赢Vwin官网 网
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

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

    关注

    1

    文章

    565

    浏览量

    24727
  • 编译
    +关注

    关注

    0

    文章

    657

    浏览量

    32852
收藏 人收藏

    评论

    相关推荐

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

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

    内存缓冲区和内存的关系

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

    单片机中的几种环形缓冲区的分析和实现

    单片机中的几种环形缓冲区的分析和实现一、简介环形缓冲区(RingBuffer)是一种高效的使用内存的方法,它将一段固定长度的内存看成一个环形结构,用于存储数据,能够避免使用动态申请内存导致的内存碎片
    的头像 发表于 08-14 08:39 815次阅读
    单片机中的几种环形<b class='flag-5'>缓冲区</b>的分析和实现

    ESP8266有双缓冲区吗?

    我想实时传输一些信号的测量数据。信号的采样周期为 1 ms。我想每 500 毫秒发送 2048 字节(一个数据包)。ESP8266有双缓冲区(2x 2048字节)吗?其想法是计数填充一个缓冲区(周期
    发表于 07-16 07:29

    创建DMA通道时,能否将DMA缓冲区的大小指定为8字节,并将DMA缓冲区的编号指定为1?

    创建 DMA 通道时,能否将 DMA 缓冲区的大小指定为 8 字节,并将 DMA 缓冲区的编号指定为 1?
    发表于 05-31 07:46

    如何确保在负载量小于或大于DMA缓冲区大小的情况下完全提交数据?

    我正在启动一个基于 FX3(配置为从 FIFO)的新项目。作为设计准备工作的一部分,我阅读了 KBA223338 以及其他参考资料。 将为 U2P 字节传输设置 SS BULK OUT + AUTO DMA 通道。 如何确保在负载量小于或大于 DMA
    发表于 05-24 06:49

    FX3多通道DMA在切换DMA缓冲区时仍会丢失数据,为什么?

    到了该示例。™ 问题是,当 DMA 缓冲区切换时,我会丢失数据。 我了解到,解决这个问题的办法是实现两个或多个线程,并在这些线程之间切换。 修改后的 GpifToUSB 示例可在https
    发表于 05-22 07:24

    stm32野火开发板上做USB通信,PC端USB的缓冲区和串口缓冲区的大小是多少?

    ADC采集的波形还原,也就是画图。 我就不明白,安装的驱动作用是?修改了PID和VID。 还有PC端的USB作用不是太明白?是一下那种情况: 1、stm32端传过来的数据根本没有经过USB的缓冲区,而是
    发表于 05-17 14:02

    具有八进制反相缓冲区的扫描测试设备数据表

    德赢Vwin官网 网站提供《具有八进制反相缓冲区的扫描测试设备数据表.pdf》资料免费下载
    发表于 05-17 09:58 0次下载
    具有八进制反相<b class='flag-5'>缓冲区</b>的扫描测试设备数据表

    Stm32采用环形缓冲区接收rk3588的数据代码

    Stm32采用环形缓冲区接收rk3588的数据代码
    的头像 发表于 05-15 10:10 575次阅读

    交换机与路由器缓冲区:寻找完美大小

    *本文系SDNLAB编译自瞻博网络技术专家兼高级工程总监Sharada Yeluri领英 在路由器和交换机中,缓冲区至关重要,可以防止网络拥塞期间的数据丢失。缓冲区到底要多大?这个问题在
    的头像 发表于 04-11 16:56 1311次阅读
    交换机与路由器<b class='flag-5'>缓冲区</b>:寻找完美大小

    交换芯片缓冲区大小是什么

    交换芯片缓冲区大小并不一定是固定的。缓冲区的设计和实现会根据芯片的具体型号、规格以及应用场景的不同而有所差异。一些交换芯片可能具有固定大小的缓冲区,以满足特定的性能需求或成本限制。然而,随着技术
    的头像 发表于 03-18 14:42 617次阅读

    使用UART FIFO缓冲区时,缓冲区中的数据有时会损坏的原因?

    我在使用 UART FIFO 缓冲区时遇到了以下问题。 问题描述: 当通过两个 UART 通道使用完整的 UART FIFO 缓冲区并通过两个通道进行通信时,缓冲区中的数据有时会损坏,例如,UART
    发表于 03-06 06:59

    没有办法通过FX3固件检查缓冲区是卡住了还是已满?

    我正在尝试通过多通道 DMA 缓冲区直播 1080p60 视频,但是我们遇到了一个问题,即在向 FX3 写入一定数量的缓冲区之后,我们看到当前线程 WATERMARK 和 READY 标志保持不变
    发表于 02-23 08:01

    xmc7100 DMA为什么没有将ADC数据寄存器值传送到存储器缓冲区

    我使用的是 xmc7100 芯片,为什么 DMA 没有将 ADC 数据寄存器值传送到存储器缓冲区
    发表于 01-29 08:33