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

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

3天内不再提示

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

OpenFPGA ? 来源:赛灵思工程师 ? 作者:Fancheng Meng ? 2022-07-15 09:09 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

77a91c7c-03d6-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可以下载到,如下图所示:

77b6b4e0-03d6-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位代表的意义及寄存器默认的数值如下:

77c56490-03d6-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。这三个寄存器所代表的意义分别如下所示:

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

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

文章出处:【微信公众号:OpenFPGA】欢迎添加关注!文章转载请注明出处。

审核编辑:彭静

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

    关注

    31

    文章

    5447

    浏览量

    125442
  • 数据
    +关注

    关注

    8

    文章

    7264

    浏览量

    92420
  • bit
    bit
    +关注

    关注

    0

    文章

    48

    浏览量

    32540

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

文章出处:【微信号:Open_FPGA,微信公众号:OpenFPGA】欢迎添加关注!文章转载请注明出处。

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用寄存器点亮LED灯

    学习本章时,配合以上芯片手册的“19. I/O Ports”章节一起阅读,效果会更佳,特别是涉及到寄存器说明的部分。本章内容涉及到较多寄存器方面的深入内容,对于初学者而言这些内容丰富也较难理解,但非常有必要细读研究、夯实基础。
    的头像 发表于 05-28 17:37 ?745次阅读
    使用<b class='flag-5'>寄存器</b>点亮LED灯

    TPS80032寄存器手册

    电子发烧友网站提供《TPS80032寄存器手册.pdf》资料免费下载
    发表于 12-21 09:08 ?0次下载
    TPS80032<b class='flag-5'>寄存器</b>手册

    Modbus协议的读取保持寄存器

    功能码用于读取从设备保持寄存器的内容,不支持广播模式。消息顿中指定了需要读取的保持寄存器的起始地址和数目。而保持寄存器各地址的具体内容和意义
    的头像 发表于 10-30 10:54 ?4306次阅读

    详解寄存器模型镜像值

    DUT的配置寄存器的值是实际值,reg_model有镜像值、期望值的概念。
    的头像 发表于 10-23 09:43 ?1168次阅读
    详解<b class='flag-5'>寄存器</b>模型镜像值

    接口的控制与状态寄存器什么作用

    的行为并获取硬件的状态信息。 接口的控制与状态寄存器的作用 在现代计算机系统,硬件设备与软件之间的交互是通过一系列的接口来实现的。这些接口不仅需要能够传输数据,还需要能够控制硬件设备的行为并监控其状态。接口的控制与状态寄存器
    的头像 发表于 10-17 10:42 ?1678次阅读

    什么是寄存器移位寻址

    寄存器移位寻址是一种特定的寻址方式,主要出现在某些处理架构,如ARM指令集。这种寻址方式在处理数据移动和操作时提供了极大的灵活性和效率。下面将从定义、工作原理、特点、应用场景以及与其他寻址方式的对比等方面对
    的头像 发表于 10-05 17:38 ?1156次阅读

    寄存器间接寻址和寄存器寻址的区别

    寄存器间接寻址和寄存器寻址是计算机体系结构两种重要的寻址方式,它们在指令执行过程起着关键作用。下面将从定义、原理、特点、应用场景以及区别等方面对这两种寻址方式进行详细阐述。
    的头像 发表于 10-05 17:13 ?3809次阅读

    微处理寄存器的作用

    微处理寄存器是计算机体系结构的核心组成部分,它们扮演着至关重要的角色。寄存器是一种高速的存储单元,用于暂时存储数据、指令和地址等信息
    的头像 发表于 10-05 15:07 ?1387次阅读

    ARM处理寄存器组织及功能

    ARM处理寄存器组织是其核心架构的重要组成部分,对于理解ARM处理的运行机制和性能特点具有重要意义。以下是对ARM处理
    的头像 发表于 09-10 11:11 ?2888次阅读

    ARM寄存器的分类及功能

    ARM寄存器是ARM处理内部的重要组成部分,它们在处理的运算、控制以及数据存储等方面发挥着至关重要的作用。下面,我们将从ARM寄存器的定义、结构、分类以及功能等多个方面进行详细阐述
    的头像 发表于 09-05 14:18 ?3173次阅读

    通用寄存器是什么意思

    在计算机体系结构,通用寄存器是中央处理(CPU)内部最为核心和基础的组成部分之一。它们被设计为能够存储和传输各种类型的数据和指令,是CPU进行数据处理和运算的关键工具。通用寄存器
    的头像 发表于 09-05 14:13 ?2545次阅读

    寄存器的类型和作用

    在计算机科学寄存器(Register)是一种高速存储单元,它位于CPU内部,与CPU的运算单元和逻辑控制单元紧密相连。寄存器的主要作用是暂时存储指令、操作数和地址等临时数据,以便CPU快速访问和处理。由于
    的头像 发表于 09-05 14:11 ?5117次阅读

    寄存器的输入输出方式

    寄存器的输入输出方式是数字电路设计至关重要的部分,它决定了数据如何在寄存器中进出以及处理的效率。下面将详细探讨寄存器的几种主要输入输出方式,包括并行输入输出、串行输入输出以及双向输入
    的头像 发表于 09-05 14:09 ?2756次阅读

    数字寄存器的原理和使用

    数字寄存器是计算机体系结构至关重要的组成部分,其原理和使用对于理解计算机的工作原理和数据存储方式具有重要意义
    的头像 发表于 09-05 14:08 ?1497次阅读

    寄存器故障分析

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