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的数值,会比较容易判断驱动或者工程中可能存在的问题。

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

    关注

    31

    文章

    5308

    浏览量

    119975
  • 赛灵思
    +关注

    关注

    32

    文章

    1794

    浏览量

    131158
  • driver
    +关注

    关注

    0

    文章

    526

    浏览量

    66570
  • dump
    +关注

    关注

    0

    文章

    13

    浏览量

    9505

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

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

收藏 人收藏

    评论

    相关推荐

    寄存器寻址方式

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

    第二十六讲 寄存器和移位寄存器

    第二十六讲 寄存器和移位寄存器7.4.1 寄存器1.定义2.电路举例 3.逻辑功能分析7.4.2 移位寄存器一、单向移位
    发表于 03-30 16:30 9474次阅读
    第二十六讲 <b class='flag-5'>寄存器</b>和移位<b class='flag-5'>寄存器</b>

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

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

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

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

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

    移位寄存器,移位寄存器是什么意思 移位寄存器_
    发表于 03-08 14:50 1.7w次阅读

    寄存器培训教程

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

    寄存器与移位寄存器

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

    如何进行寄存器名称和地址的映射分析

    首先要清楚的一点,所有操作,最终目的都是操作寄存器一,对比51单片机和STM32对寄存器的操作
    发表于 06-21 17:43 2次下载
    如何<b class='flag-5'>进行</b><b class='flag-5'>寄存器</b>名称和地址的映射<b class='flag-5'>分析</b>

    移位寄存器的原理

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

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

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

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

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

    RAL寄存器模型操作指南

    寄存器模型操作,指的是通过寄存器模型对RTL中寄存器进行读写访问,或者同步寄存器模型与RTL中寄存器
    的头像 发表于 07-12 09:37 1019次阅读
    RAL<b class='flag-5'>寄存器</b>模型操作指南

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

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

    寄存器分为基本寄存器和什么两种

    寄存器是计算机中用于存储数据的高速存储单元,它们是CPU内部的重要组成部分。寄存器可以分为基本寄存器和扩展寄存器两种类型。 一、基本寄存器
    的头像 发表于 07-12 10:31 1095次阅读

    寄存器故障分析

    寄存器故障分析是计算机硬件维护与系统稳定性保障中的重要环节。寄存器作为计算机中的关键组成部分,负责存储和传输数据,其稳定性和可靠性直接影响到整个计算机系统的性能。以下是对寄存器故障的全
    的头像 发表于 08-29 11:26 737次阅读