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

    文章

    5588

    浏览量

    129035
  • 数据
    +关注

    关注

    8

    文章

    7314

    浏览量

    93942
  • bit
    bit
    +关注

    关注

    0

    文章

    48

    浏览量

    32744

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【NCS随笔】nRF54L15使用UICR寄存器保存数据

    nRF54L15使用UICR寄存器保存数据 本文章主要是讲解如何使用nRF54L15的UICR寄存器保存一些基础数据 一、UICR寄存器的说明 UICR(用户信息配置寄存器)**是非易
    的头像 发表于 11-27 17:09 1103次阅读

    嵌入式系统必懂的 20 个寄存器

    了嵌入式系统开发者必懂的20个寄存器,让你快速掌握MCU的核心操作方法。01寄存器基础寄存器是CPU内部用于高速存取数据的小容量存储单元,是计算机执行指令、处理
    的头像 发表于 11-14 10:28 643次阅读
    嵌入式系统必懂的 20 个<b class='flag-5'>寄存器</b>

    NVMe高速传输之摆脱XDMA设计32:寄存器功能验证与分析2

    寄存器最大值为 64’hFFFFFFFFFFFFFFFF,到达最大值后一个时钟周期后翻转回 0, 在随机时刻使用 force 将寄存器赋值临近最大值, 当寄存器达到最大值后, 翻转回到 0, 读取数值为 0, 仿真行为符合设计预
    的头像 发表于 10-14 17:06 448次阅读
    NVMe高速传输之摆脱XDMA设计32:<b class='flag-5'>寄存器</b>功能验证与分析2

    ‌SN74HCT595 8位移位寄存器技术解析与应用指南

    Texas Instruments SN74HCT595/SN74HCT595-Q1 8位移位寄存器包含8位串进并出移位寄存器,向8位D类存储寄存器馈送信号。存储寄存器具有并行 3 状
    的头像 发表于 09-19 14:31 567次阅读
    ‌SN74HCT595 8位移位<b class='flag-5'>寄存器</b>技术解析与应用指南

    TPIC6595 8位功率移位寄存器技术文档摘要

    该TPIC6595是一款单片、高压、大电流功率的8位移位寄存器,设计用于需要相对较高负载功率的系统。该器件在输出端包含一个内置电压钳位,用于电感瞬态保护。功率驱动应用包括继电器、螺线管和其他电流
    的头像 发表于 09-09 11:10 677次阅读
    TPIC6595 8位功率移位<b class='flag-5'>寄存器</b>技术文档摘要

    ‌TPIC6B595 8位功率移位寄存器技术文档总结

    TPIC6B595器件是一款单片、高压、电流功率8位移位寄存器,设计用于需要相对高负载功率的系统。该器件在输出端包含一个内置电压钳位,用于电感瞬态保护。功率驱动应用包括继电器、螺线管和其他
    的头像 发表于 09-09 10:16 720次阅读
    ‌TPIC6B595 8位功率移位<b class='flag-5'>寄存器</b>技术文档总结

    ‌TLC6C5912 12通道移位寄存器LED驱动技术文档总结

    该TLC6C5912是一款单片、压、低电流功率 12 位移位寄存器 设计用于需要相对中等负载功率的系统,例如 LED。 该器件包含一个 12 位串行输入并行输出移位寄存器,可为 12 位馈电
    的头像 发表于 08-26 14:16 748次阅读
    ‌TLC6C5912 12通道移位<b class='flag-5'>寄存器</b>LED驱动<b class='flag-5'>器</b>技术文档总结

    使用寄存器点亮LED灯

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

    第四章 什么是寄存器

    本篇文章我们讲解了寄存器的概念、地址映射和寄存器操作等内容,内容比较干,大家有个概念即可,不要求全部熟记掌握,有需要时可重复查阅观看。下一篇我们将开始进行实操内容,通过控制单片机的GPIO来点亮一颗LED,敬请期待!
    的头像 发表于 05-21 14:23 1128次阅读
    第四章 什么是<b class='flag-5'>寄存器</b>

    74HC594-Q100;74HCT594-Q100带输出寄存器的8位移位寄存器规格书

    电子发烧友网站提供《74HC594-Q100;74HCT594-Q100带输出寄存器的8位移位寄存器规格书.pdf》资料免费下载
    发表于 02-09 15:19 0次下载
    74HC594-Q100;74HCT594-Q100带输出<b class='flag-5'>寄存器</b>的8位移位<b class='flag-5'>寄存器</b>规格书

    24l01寄存器列表指南免费下载

    寄存器分为基本寄存器和移位寄存器两大类。基本寄存器只能并行送入数据,也只能并行输出。移位寄存器
    发表于 01-22 17:25 1次下载

    STC15系列常用寄存器汇总免费下载

    基本寄存器和移位寄存器两大类。基本寄存器只能并行送入数据,也只能并行输出。移位寄存器的数据可以在移位脉冲作用下依次逐位右移或左移,数据既可
    发表于 01-22 17:24 10次下载

    XILINX FPGA CLB单元之移位寄存器

    一、移位寄存器 SLICEM函数发生也可以配置为32位移位寄存器,而无需使用slice可用的触发。以这种方式使用,每个LUT可以将串行
    的头像 发表于 01-16 17:45 1442次阅读
    XILINX FPGA CLB单元之移位<b class='flag-5'>寄存器</b>

    TPS80032寄存器手册

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

    TPS659037寄存器映射技术参考手册

    电子发烧友网站提供《TPS659037寄存器映射技术参考手册.pdf》资料免费下载
    发表于 12-06 14:55 1次下载
    TPS659037<b class='flag-5'>寄存器</b>映射技术参考手册