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

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

3天内不再提示

对dump出的寄存器进行分析

XILINX开发者社区 来源:XILINX开发者社区 作者:Fancheng Meng 2022-07-14 10:56 次阅读

本文作者:赛灵思工程师 Fancheng Meng

QDMA的驱动在进行版本升级时,可能会对部分寄存器的数值进行变更,用户如果要进行升级,推荐升级到最新的Vivado和驱动版本。如果驱动和Vivado之间的版本相差较大,有时会遇到c2h_cmpt_ready为0的情况,此时IP无法进行数据的传输,这种情况通常在传输大包或者大流量数据的时会出现,遇到这种情况可将QDMA IP的prefetch depth参数进行修改,以改善传输性能。

22683170-029c-11ed-ba43-dac502259ad0.png

如果是IP在传输中发生了错误或者出现了丢包的情况,就需要使用ILA IP来抓取QDMA IP中的信号和Dump QDMA IP中的寄存器来进行分析,下面重点讲解下如何Dump IP中的寄存器、重点对哪些寄存器进行分析以及寄存器的意义。

Dump 寄存器:

通过以下网站下载QDMA driver, 运行test app中的reg_dump指令来dump QDMA 寄存器的值和context data。

https://github.com/Xilinx/dma_ip_drivers

寄存器的dump操作可以参考下面网址中的user guide界面。
https://xilinx.github.io/dma_ip_drivers/master/QDMA/DPDK/html/userguide.html

寄存器数值代表的意义可以从在PG302的124页的Register Reference File可以下载到,如下图所示:

22750666-029c-11ed-ba43-dac502259ad0.png    

对dump出的寄存器进行分析:

使用test app dump出的寄存器的数目太多,本文重点以下几个寄存器进行分析并举例说明:

QDMA_C2H_STAT_DEBUG_DMA_ENG_3
QDMA_C2H_STAT_DEBUG_DMA_ENG_4
C2H_DROP_DESC_RSP_LEN
C2H_DROP_QID_FIFO_LEN
C2H_DROP_PLD_CNT
QDMA_C2H_STAT_DEBUG_DMA_ENG_3 是一个32 bit的寄存器,涵盖了许多重要信号的状态信息,是非常重要的debug寄存器,每一个bit位代表的意义及寄存器默认的数值如下:

228a6542-029c-11ed-ba43-dac502259ad0.png

在对寄存器的数值进行分析时,需要重点关注3、4、5比特,当3、4、5为低是表明IP并未遇到传输错误,那么错误应该是发生在IP传输数据之前,需要对在数据传输前的驱动配置阶段进行分析和定位。

一般IP内发生传输错误时,此寄存器的3、4、5位比特会被置高,当wrq_packet_out_data_marker为高时,需要检查在工程设计中是否使用了s_axis_c2h_cmpt_ctrl_no_wrb_marker信号,此信号的意义如下:
The DMA also has an option not to send completion information to completion ring during a
Marker packet. Port s_axis_c2h_cmpt_ctrl_no_wrb_marker can be set during a marker
packet. This option disables any write to completion ring when that Marker packet is generated.
When this signal is set for a Maker packet, the DMA has no data or completion transfers, but will
respond with maker response on qsts_out_op[7:0].

如果没有使用此信号,说明IP的传输出现了不可修复的错误,需要通过其他的寄存器进行进一步的分析,通常在3、4、5bit被置为高时,此寄存器的0,1bit不会全为高,IP会挂起并停止数据的传输。IP的传输错误有可能是发送了过量的描述符,时序问题及逻辑设计的不规范,下面对在遇到IP 传输错误时的定位方法进行举例说明:

当发现QDMA_C2H_STAT_DEBUG_DMA_ENG_3的3,4,5比特为高时,可以去查找与丢包相关的寄存器,例如:C2H_DROP_DESC_RSP_LEN,C2H_DROP_QID_FIFO_LEN和C2H_DROP_PLD_CNT。这三个寄存器所代表的意义分别如下所示:

22aa8192-029c-11ed-ba43-dac502259ad0.png

因为操作不当导致IP发生丢包时,C2H_DROP_DESC_RSP_LEN,C2H_DROP_QID_FIFO_LEN和C2H_DROP_PLD_CNT 三个寄存器的数值分别为在IP丢包时:描述符的长度、Qid Fifo中的包长和负载Fifo 0中的信用值。当IP发生丢包时,根据以上三个寄存器的前18bit的数值,会比较容易判断驱动或者工程中可能存在的问题。

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

    关注

    30

    文章

    5032

    浏览量

    117741
  • 赛灵思
    +关注

    关注

    32

    文章

    1794

    浏览量

    130533
  • driver
    +关注

    关注

    0

    文章

    526

    浏览量

    66330
  • dump
    +关注

    关注

    0

    文章

    11

    浏览量

    9456

原文标题:开发者分享|QDMA与driver的问题定位和分析

文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32时钟分析寄存器

    STM32时钟分析寄存器寄存器的功能是存储二进制代码,它是由具有存储功能的触发组合起来构成的。一个触发可以存储1位二进制代码,故存放n
    发表于 08-10 06:28

    关于系统应用core dump分析

    ,过程中可以通过在hardfault打断点方式,开启堆栈查看工具,直接定位出错位置;如果不可以仿真,可以在出错位置(比如hardfault函数内),直接用串口或者其他输出工具,输出寄存器的数值,以方便定位出错的代码位置;比如下方的方式//1.关于HardFault_Handler 这个函...
    发表于 03-02 06:10

    如何去实现RK3288系统所有寄存器dump的读写呢

    如何去实现RK3288系统所有寄存器dump的读写呢?
    发表于 03-10 07:03

    PSD3XX页面寄存器的使用和利用PSD3XX页面寄存器进行

    PSD3XX页面寄存器的使用和利用PSD3XX页面寄存器进行软件设计时的相关技术
    发表于 05-13 11:10 9次下载
    PSD3XX页面<b class='flag-5'>寄存器</b>的使用和利用PSD3XX页面<b class='flag-5'>寄存器</b><b class='flag-5'>进行</b>

    PSD3XX页面寄存器的使用和利用PSD3XX页面寄存器进行

    PSD3XX页面寄存器的使用和利用PSD3XX页面寄存器进行软件设计时的相关技术
    发表于 05-15 14:22 21次下载
    PSD3XX页面<b class='flag-5'>寄存器</b>的使用和利用PSD3XX页面<b class='flag-5'>寄存器</b><b class='flag-5'>进行</b>

    寄存器与移位寄存器

    寄存器与移位寄存器 寄存器是用来寄存数码的逻辑部件,所以必须具备接收和寄存数码的功能。任何一种触发器都可以构成
    发表于 03-12 15:19 59次下载

    寄存器寻址方式

    寄存器寻址方式   寄存器寻址是对由指令选定的工作寄存器(R0--R7)进行读/写,由指令操作码字节的最低3位指明所寻址的工作寄存器
    发表于 03-14 15:29 2558次阅读

    寄存器,寄存器是什么意思

    寄存器,寄存器是什么意思 寄存器定义  寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用
    发表于 03-08 14:26 2.1w次阅读

    数据寄存器,数据寄存器是什么意思

    数据寄存器,数据寄存器是什么意思 数据寄存器数据寄存器包括累加器AX、基址寄存器BX、计数寄存器
    发表于 03-08 14:38 1.2w次阅读

    寄存器培训教程

    寄存器培训教程 7.4.1 寄存器1.定义2.电路举例 3.逻辑功能分析7.4.2 移位寄存器一、单向移位寄存器㈠ 由4个维持阻塞D触发器
    发表于 03-08 14:52 1182次阅读

    寄存器与移位寄存器

    寄存器与移位寄存器:介绍寄存器原理和移位寄存器的原理及实现。
    发表于 05-20 11:47 0次下载

    移位寄存器的原理

    移位寄存器按照不同的分类方法可以分为不同的类型。 如果按照移位寄存器的移位方向来进行分类, 可以分为左移移位寄存器、移位寄存器和双向移位
    发表于 07-15 09:38 7.2w次阅读
    移位<b class='flag-5'>寄存器</b>的原理

    如何Dump IP中的寄存器寄存器的意义

    QDMA的驱动在进行版本升级时,可能会对部分寄存器的数值进行变更,用户如果要进行升级,推荐升级到最新的Vivado和驱动版本。
    的头像 发表于 07-15 09:09 1345次阅读

    地址寄存器间接寻址进行详解

    关于间接寻址分为存储器间接寻址和地址寄存器间接寻址,本文主要针对地址寄存器间接寻址进行详细讲解。 **一、AR 的格式介绍** 地址寄存器是专门用于寻址的一个特殊指针区域,
    的头像 发表于 01-30 15:17 4249次阅读
    地址<b class='flag-5'>寄存器</b>间接寻址<b class='flag-5'>进行</b>详解

    CPSR寄存器和APSR寄存器的组成

    程序状态寄存器的作用就是反映处理器的状态信息。在程序运行期间我们可以通过查看程序状态寄存器的状态位来进行程序的分支跳转处理,或者我们可以设置程序状态寄存器的模式位来改变处理器的运行模式
    的头像 发表于 10-20 11:38 1813次阅读
    CPSR<b class='flag-5'>寄存器</b>和APSR<b class='flag-5'>寄存器</b>的组成