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

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

3天内不再提示

microblaze之Video Processing Subsystem调试误区

Hack电子 来源:CSDN技术社区 作者:古楼望月 2022-10-31 13:56 次阅读

内容:总结video processing subsystem调试中遇到的问题,以及在解决问题中的思路方法论,引为前车之鉴。

1,我的目的是希望采用vps中的scaler模块对图像进行拉伸缩小。IP的配置如下:

58fe184c-58d9-11ed-a3b6-dac502259ad0.png

2,整个系统的框架图如下,仅比上期的内容增加了scaler模块,如下:

59212cec-58d9-11ed-a3b6-dac502259ad0.png

3,查手册,可以知道这个scaler only组件分成了hscale,vscale和GPIO,其中GPIO是控制上下游stream流控设备复位用,暂时忽略。hscale和vscale的寄存器空间如下,主要关注图像的大小,以及缩放比率:

593c2006-58d9-11ed-a3b6-dac502259ad0.png

4,vivado中的工程综合完毕之后,进入SDK之中,可以看到xv_hscale.h和xv_vscale.h,文件内部包含了控制这个scale模块的函数。虽然使用的是scaler only模式,但是系统自动生成了所有的IP文件,例如deinterlace,csc等,因为这里指需要使用scale,因此直接操控xv_hscale和xv_vscale或许更简单。

596ade50-58d9-11ed-a3b6-dac502259ad0.png

5,在SDK内部编写控制代码,下载之后输出没有图像,添加打印之后发现hscale初始化失败,而vscale初始化成功,对比了hscale和vscale的驱动代码后,发现是完全一致的,于是没有明白原因何在,如下:

5989c7c0-58d9-11ed-a3b6-dac502259ad0.png

6,在SDK中采用debug单步调试,于是发现了问题所在,原来hscale传递的基地址参数为0x00,这是一个非法的地址。但是想一想就知道这是系统自动生成的驱动文件,不应该出现这种低级的错误才对。于是去查看系统设备描述文件xparameters.h,发现hscale的地址确实是0x000000,vscale的地址是0x20000,而vps的基地是0x44A40000。

59ae93ca-58d9-11ed-a3b6-dac502259ad0.png

7,后面怀疑过自己的工程创建是否有误,以及创建IP过程中可否允许编辑起始地址,但结果根本无法编辑,工程也确认无误。后来想到应该是hscale和vscale的基地址仅仅是整个IP的偏移地址而已,在初始化的时候应该加上IP的首地址,于是做如下更改,并设置好图像的宽高,但是line ratepixel rate却不知道填写多少,写一个45和74吧,因为我的图像是720P60,水平同比是45Khz,像素时钟是74.25,结果当然还是没有图像输出,原因是这个两个值是错误的。同时把寄存器读出来之后可以知道所有的数据是配置了的,那么原因就是某些数据是错误的。

59c7c00c-58d9-11ed-a3b6-dac502259ad0.png

8,想到上次调试TPG模块的时候,图像的宽度需要除以2,进而也尝试之后仍然不对。于是去xilinx论坛社区找一下有无相同的问题。搜索vpss scaler后浏览,发现有人在gitup里面上传有scale的代码,于是点击后大致浏览一遍,发现了line rate和pixel rate 的计算公式:

5a070f32-58d9-11ed-a3b6-dac502259ad0.png

9,有这个发现之后,因为我的输入和输出的宽度和高度是一样的,因此line rate 和pixel rate应该设置为65536。现在终于知道了这两个参数指的意思分别是纵向和横向的缩放比率。

5aa87f84-58d9-11ed-a3b6-dac502259ad0.png

10,原本以为可以出图了,实际上还是没有出图,让人没想到的是程序只要执行scaler_set_HwReg的任何函数,程序立马就跑飞了。然后重新烧录bit文件,重新运行elf文件,还是一样的结果。这个时候我把Block design中的debug信号全部去掉,同时把AXI系统时钟由150M改为100M,最终的结果还是会跑飞。这时候我想软件上面没有改动的余地了,于是想知道VPS这个IP的AXI总线是处于什么状态,当我执行这些函数的时候。于是仅把AXI总线信号加入debug模块,触发运行后得到如下的结果,情况是VPS没有应答,因此CPU直接挂掉了。

5acfe7fe-58d9-11ed-a3b6-dac502259ad0.png

11,这个时候差点快绝望了,于是放弃直接控制h_scale和v_scale的方式,改用控制最上层的vps,谁知道xilinx需要做什么骚操作。首先看一下xvprocss.h文件信息,里面定义各种操作的函数,初始化函数中依据所定义的子IP,SetSubsystemConfig函数有选择性的进行配置。

5b0c555e-58d9-11ed-a3b6-dac502259ad0.png

12,然后仔细的看了一遍函数中的数据结构定义,于是重新编写了控制程序,这时候想应该有图输出了吧,然而还是没有图输出。并且把里面的寄存器读出来之后,发现除了最开始0x00寄存器空间之外,其他数据全部是0,确实很意外。

5b4d4d48-58d9-11ed-a3b6-dac502259ad0.png

13,到了这个时候,确实没有招了,于是来回的改来改去,无意中多注释了两行代码,结果出图了,同时监控AXI总线上的数据,也有应答了。原来是我在配置完成之后,又把这个IP软复位了。因此其余的数据全部变成了0。印证了陆游的那句话,山穷水复疑无路,柳暗花明又一村。

5b828968-58d9-11ed-a3b6-dac502259ad0.png

5c06126a-58d9-11ed-a3b6-dac502259ad0.png

总结:

1,通过调试这个IP,对于软件编程有了更进一步的了解;

2,其实直接控制h_scale和v_scale应该可以达到同样的功能,只不过这个IP需要有特殊的配置顺序,以及各种复位逻辑,任何的差池都会导致没有图像输出;

3,目前还没有深入了解这个IP的控制流程,还需要深入底层去看实现的细节部分,比如实现deinterlace等其他功能。

审核编辑:汤梓红

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

    关注

    0

    文章

    192

    浏览量

    44855
  • MicroBlaze
    +关注

    关注

    3

    文章

    66

    浏览量

    21436
  • Subsystem
    +关注

    关注

    0

    文章

    5

    浏览量

    6569

原文标题:microblaze之Video Processing Subsystem调试误区

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

收藏 人收藏

    评论

    相关推荐

    MicroBlaze MCS和MicroBlaze的区别在哪?

    在Block Design中查找IP时输入Microblaze,就会发现下面几种IP,我们常规使用的就是第一个IP,是一个可以自定义外设的软核,但是第三个MicroBlaze MCS到底是个啥,我们接下来详解。
    的头像 发表于 08-23 09:07 751次阅读
    <b class='flag-5'>MicroBlaze</b> MCS和<b class='flag-5'>MicroBlaze</b>的区别在哪?

    Video Processing Using FPGAs in Video Surveillance Systems

    Video Processing Using FPGAs in Video Surveillance SystemsVideo surveillance systems are a key
    发表于 08-08 12:32

    ATSC Standard:AVC Video Transport Subsystem Characteristics

    ATSC Standard:AVC Video Transport Subsystem CharacteristicsIn issuing this standard, the ATSC
    发表于 10-16 08:36

    如何理解DM8148的HD Video Coprocessor Subsystem和Media Controller Subsystem中的HDVICP2

    和HDVICP2.。在1.4节又提到了HD Video Coprocessor Subsystem,简称也是HDVICP2。请问这两个有什么不同?非常感谢
    发表于 05-28 11:17

    怎么远程调试microblaze软件

    嗨,我已经在Xiphos上问了这个问题,但得到了负面的反馈。我正在尝试在嵌入式系统上安装gdb服务器来远程调试microblaze-gcc编译的应用程序。我使用gcc编译器在本地主机上进行了远程调试
    发表于 02-27 09:46

    调试Microblaze应用程序出现处理器无法停止的错误

    嗨,大家好,我正在尝试调试我的Microblaze应用程序,但是当我启动它并且让时间过去时它会停止在XMD控制台中显示此消息:处理器无法停止错误:MicroBlaze未被计时。检查
    发表于 07-17 14:18

    SDK 16.2无法调试Microblaze

    我正在使用SDK 16.2调试微问题。最初,Vivado 16.2没有推出SDK 16.2,但是当我手动启动它时,它无法调试microblaze。我尝试使用SDK 15.4&amp; Vivado 15.4和一切都工作得很好。
    发表于 09-27 09:49

    TMS320DM335 pdf datasheet(数字媒体

    for display applications that do not require video compression and decompression. Coupled with a video processing
    发表于 08-05 10:25 19次下载

    VIDEO PROCESSING FOR DLPTM DIS

    VIDEO PROCESSING FOR DLPTM DISPLAY SYSTEMS:Texas Instruments’ Digital Light ProcessingTM (DLPTM
    发表于 10-01 16:56 17次下载

    Video and Image Processing Up

    The Altera® video and image processing up conversion example designdemonstrates up conversion
    发表于 11-24 11:12 11次下载

    基于MicroBlaze软核的FPGA片上系统设计

    分析软处理器MicroBlaze 的体系结构,给出MicroBlaze 内核在软件无线电系统中的应用,实现SOPC
    发表于 11-30 15:02 31次下载

    TMS320DM335-216,pdf(Digital Me

    for display applications that do not require video compression and decompression. Coupled with a video processing
    发表于 12-01 23:42 45次下载

    TMS320DM335-135,pdf(Digital Me

    for display applications that do not require video compression and decompression. Coupled with a video processing
    发表于 12-01 23:46 18次下载

    如何使用MicroBlaze调用AXI IP核详细解析

    在一个项目中,当你使用microblaze作为控制器来进行系统调度的时候,一般是建议将所有模块封装成AXI形式的IP核,这样好管理,也容易调试
    的头像 发表于 04-27 11:17 5759次阅读
    如何使用<b class='flag-5'>MicroBlaze</b>调用AXI IP核详细解析

    Video Processing subsystem例程分析

    连接设备:v_proc_ss_0---m_axi_mm(接收video_processing_subsystem master端口传过来的 数据)时钟来源:mig_7series_0---ui_clk/ACLK
    的头像 发表于 10-28 14:30 1193次阅读