视频系列 35 - 糟糕!我的视频设计无法运行!这可如何是好?

注意:本文所有内容皆来源于Xilinx工程师,如需转载,请写明出处作者及赛灵思论坛链接并发邮件至cncrc@xilinx.com,未经Xilinx及著作权人许可,禁止用作商业用途。

引言

本篇博文并非技术类文章,但无疑是专为技术人员撰写的。完成几个项目之后,您心知肚明这些项目能够一蹴而就或多或少都掺杂些运气成分。您可能会遇到人为错误、事先未曾预料到的困难、甚至是超出您控制的问题(比如,源端 (source) 或接收端 (sink) 设备的问题)。

但工程师的职责就是解决问题。只要采用正确的方法,就可以快速找到并解决问题根源,而不会对项目产生影响(希望项目规划为此预留了一些时间)。

我在赛灵思全球技术支持 (WTS) 部门供职多年,因此,我尝试将所学到的有关如何在赛灵思器件上调试视频应用的经验加以总结融会贯通。


步骤 1 - 深入透彻了解系统

开始调试前,您必须明确了解自己的系统的运作方式。首先简单描述期望的系统用途,包括期望的系统功能。例如,记录系统是否仅支持 1080p 视频,或者是否支持从 SD 到 UHD 范围内的各种分辨率。

记得画一张系统原理图,很有用。原理图的主要作用在于展示流经系统的数据。 您甚至可以给系统添加对应于所写描述的标签。 如果要使用软件应用,那么还有必要画一张描述此类应用的基本软件流程图。

这不仅有助于您更好地了解自己的系统并识别潜在的故障点,对于愿意帮助您调试系统的任何其他人同样很有帮助。

步骤 2 - 尝试失败

第 2 步是尝试明确可反复重现问题的步骤。这将有助于您明确哪些变化因素会导致系统故障以及哪些变化因素对于问题没有影响。

它还可以帮助您集中精力解决根因,并提供一种实施修复后的验证手段。

在这一步中,您通常需要捕获有关系统行为和交互的数据。

例如,在视频系统中,您可能想要了解不同输入(即,GPU 之类的视频源端)或不同输出(即显示器或测试设备之类的接收端 (sink))是否会生成不同行为。

执行此类测试时,需捕获有关系统输入和输出的详细信息,包括系统的视频源端 (source) 和/或视频接收端 (sink) 的说明,以及测试期间配置。

如果故障可重现,请记录相关系统和配置信息,然后检查更改某个变量(例如,尝试改变输入,或者改变输入运行的操作系统)后是否仍旧会发生故障。

应最大限度减少每次测试期间所改变的参数数量,最好每次仅调整一个参数。

步骤 3 - 识别问题根源

故障可重现后,下一步要做的就是识别问题的根源。

首先我要介绍的方法我称之为逐个击破法。

即,重现故障后,我会尝试通过移除系统部分器件来确认问题是否仍然存在。

为确认设计分割位置,最佳方法是参阅步骤 1 中创建的原理图。 例如,如果在视频设计的传递部分发生故障,那么我会通过观察原理图来确认设计的捕获和显示部分的合理分割位置。然后,我会测试移除源端的情况下,使用测试模式生成器来向外发送固定模式并确认结果。

如果问题仍然存在,即可知我无需再检查输入,而是只需对系统的显示或输出部分集中执行其他调试步骤即可。 应该注意的是,这可能需要修改设计才能实现,但通常系统由软件控制,可通过软件来开启和关闭测试模式,而无需修改设计本身。

尽可能限定问题范围后,即可寻找可用工具来调试问题。

对于视频系统,您可添加 Integrated Logic Analyzer (ILA),如视频系列 31 - 使用 ILA 调试视频系统中所示。使用步骤 1 中的原理图来寻找放置探针的最佳位置。这将有助于您确认数据路径中是否有个别 IP 未按期望的方式运行,例如,未使用或未生成任何数据或者生成的数据错误。

如果系统使用的是 Linux 或者软件应用可输出至 UART,那么请使用所获得的输出来收集调试数据。它可提供有关应用运行失败的阶段或者失败原因的信息。 并且,调试时请放心在应用中随意添加更多打印或日志记录功能,解决问题后可随时将其移除。

注释:使用 UART 时,有时最好先捕获数据,稍后再打印,因为打印信息过多可能导致出现更多中断从而改变整个系统的行为。

并且,许多应用或驱动具有内置调试功能,甚至可能已提供调试应用,例如,Linux 上提供的 media-ctrl 或 modetest 命令。 您可参阅 IP/驱动/应用文档来了解相关信息。

如果应用已挂起,还可以通过“Debug”模式来运行应用,逐步分析应用以确认其挂起位置。

步骤 4 - 利用关键字来描述问题

在各种调试方法中并未论及此方法,但别忘了我们身处于互联网和搜索引擎的时代。

就像在步骤 1 中描述系统一样,只要把问题描述缩短到几个关键字,不仅可以帮助您明确问题核心,还将帮助您在网上找到相关问题(和解决方案),从而帮助您解决问题。

如果您已确认问题发生在某个具体 IP 上,那么第一个关键字就是此 IP 的名称。

然后,尝试寻找到描述该问题的单个关键字。 如果在输出控制台中包含错误,那么轻而易举就能找到这个关键字。

如果所选关键字并未返回任何结果,有时需要寻找描述相同问题的近义词或其他方法。 比如,“我的屏幕上为何会出现噪点?”或者“我的屏幕为何有雪花?”

步骤 5 - 查找相关已知问题

他人可能遇到过相同的问题,因此寻找相关问题记录总归有利无害。 您可利用许多资源来查找已知问题或者更详细的调试信息。

您可以通过直接搜索预定义位置来寻找所需信息。 通过缩小搜索范围,可以提高找到相关问题的几率。

您可通过下列位置来查找赛灵思视频系统相关信息:

  • IP 产品指南 (PG):
    • 大部分 IP 产品指南都包含调试部分(通常位于附录部分中)。请务必遵循提供的所有步骤进行操作。这些步骤是根据他人使用 IP 中所遇到的问题编写的,因此很可能对您会有所帮助。
    • 您还可以尝试在产品指南中使用步骤 4 中定义的关键字来执行搜索。
  • IP 主答复记录 (AR):
    • 每个赛灵思 IP 都有其主答复记录,其中列出了赛灵思已知的各种核的所有已知问题。您可以在这里进行搜索,以确认您的问题是否存在相关记录以及修复方法。

查找特定 IP 的主答复记录的途径之一是访问视频设计中心 (Video Design Hub)。在 IP 类别下,可以查找主答复记录和产品指南。

  • 在网络信息膨胀的时代背景下,可能他人在别处已提出过与您相同的问题,尤其是在赛灵思论坛上。请善用搜索引擎以及来自步骤 5 的关键字来搜索答案。

如果找不到任何相关主题,那么您可藉此机会在赛灵思社区论坛上创建新主题。

  • 对于 Linux 系统,赛灵思还提供维基百科页面,其中包含在基于 Linux 的系统中使用 IP 的相关具体信息。赛灵思维基百科包含对应于所有 Linux 驱动的页面。

    这些驱动页面包含有关 Linux 驱动支持的硬件功能的信息以及测试和调试信息,可有助于您重现并识别系统故障。

来源:赛灵思

最新文章

最新文章