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

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

3天内不再提示

使用软件查找硬件错误

星星科技指导员 来源:嵌入式计算设计 作者:Russell Klein 2022-06-29 15:25 次阅读

有一个基本的自然法则适用于任何计算芯片,无论是处理器微控制器还是片上系统:软件总是会发现硬件错误。在我的整个职业生涯中,我参与过的项目中没有一个被证明是正确的。

如果你很不幸,在你制作芯片后软件发现了一个错误,那么接下来会发生什么取决于问题的严重程度。

如果它不是致命的,并且如果你很幸运并且像一些知名处理器制造商那样拥有市场力量,那么每个人都会围绕这个 bug 编写代码,然后所有未来的版本都必须复制这个 bug 以实现向后兼容性。这不适用于我们大多数人。更倾向于:

您可能必须删除不起作用的功能。

功率可能太高,或性能太慢,损害您的竞争力和获得好价格的能力。

在最坏的情况下,您可能不得不花费大量时间并旋转另一套面具。额外的延误和费用。

最好的解决方案是在您投入芯片之前运行该软件并捕获这些错误。您将同时验证软件和硬件。但是怎么做呢?

模拟软件非常慢。我们说的是几年。除了琐碎的代码之外,根本不是一个选项。

相比之下,仿真被证明是解决这个问题的关键工具。您可以在模拟器上实例化硬件,然后让它在合理的时间范围内运行实际代码。也许不是真正的系统速度,但足够快以使其成为可行的解决方案。

但是,假设您要找到问题,您必须能够追踪这些问题的原因,而调试部分在历史上一直是问题所在。事实上,许多工程师一直不愿意使用仿真,因为在过去,访问内部处理器状态的唯一途径是通过 JTAG。仿真器以几 MHz 的时钟速度运行;仿真器上的 JTAG 只运行其中的一小部分。

那么,例如,如果你想单步执行指令?这意味着通过 JTAG 传输大约 400 万个低级位。在仿真器上以 1 MHz 完成,这将需要 4 秒非常昂贵的实时仿真器时间。

而且,更糟糕的是,它是侵入性的:在这 4 秒内,时钟正在走动。处理器状态将保持不变,但处理器之外的世界将继续。如果您只是在调试处理器代码,这可以工作(即使速度很慢)。但是,如果您尝试调试与非处理器硬件的交互,这将变得非常困难,因为在您完成该单个步骤时,处理器之外的所有内容都已更改状态。

由于仿真器上的 JTAG 既缓慢又具有侵入性,调试——尤其是与性能和同步相关的问题——变得非常令人沮丧。因此,考虑到这一点,仿真在过去并不是首选解决方案——阻力仍然存在。

今天的模拟器调试速度很快

但是时代和模拟器已经改变。Mentor 有一种单独的方法来捕获不依赖于 JTAG 的处理器状态,因此它可以快速发生 - 在 40-50 MHz 范围内。这可能比 FPGA 原型上的 JTAG 更快。数据被馈送到我们的 CoModel 主机,状态历史可以在其中存储和重新创建,一个周期一个周期。

鉴于已存储的跟踪,您现在可以针对该跟踪重放任何有问题的软件,它将遵循系统状态,以便您可以看到哪里出了问题。可以单步执行;您可以探测寄存器和内存;你可以看公交车。一切都没有入侵:您的调试工作不会改变系统状态。这一切都可以离线完成——您无需使用实时仿真器,这使其更具成本效益。

因此,关于软件调试在模拟器上是否实用的历史担忧不再适用。您可以在流片前彻底使用您的计算平台。软件开发人员可以在芯片可用甚至 FPGA 原型可用之前很久就开始软件开发。可用于调试的工具旨在为软件工程师所熟悉——即使您最终发现了硬件错误。

行使部分系统

我们要解决的下一个挑战是影响单个 IP 块的开发人员,这些 IP 块最终将成为整个系统的一部分。今天的问题是,在完全系统集成之前,你真的不能用真正的软件运行你的块,因为系统需要你的部分和所有其他部分才能工作。因此,即使您提前完成了块设计,也是“快点等待”。

在 Mentor,我们正在开发一个测试平台增强功能,它将提供计算平台的关键部分。鉴于 ARM 的流行,我们将从 ARM 架构和与 ARM 相关的总线开始。处理器将覆盖 AndroidLinux。这将让您在仿真器上实现您的模块,并在完整系统设计可用之前将其“插入”抽象环境,让您在验​​证方面领先一步。

总之,您必须在生成掩码之前运行软件,以证明您的计算硬件是正确的。仿真是做到这一点的唯一现实方法,而目前 Mentor 的 Veloce 仿真器上提供的工具使其成为非常实用、高效的练习。您可以用最少的实时仿真时间快速调试您的软件和硬件。而且,在不久的将来,您将能够在完全系统集成之前在 IP 块上运行和调试该软件。

您可以更早地编写软件,并且可以更快地验证您的硬件。所有这些都使得您在真正的硅片中发现这些硬件错误的可能性大大降低。

审核编辑:郭婷

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

    关注

    68

    文章

    19083

    浏览量

    228729
  • Android
    +关注

    关注

    12

    文章

    3912

    浏览量

    127011
  • Linux
    +关注

    关注

    87

    文章

    11196

    浏览量

    208667
收藏 人收藏

    评论

    相关推荐

    服务器错误是怎么回事?常见错误原因及解决方法汇总

    服务器错误是怎么回事?最常见的原因分有六个,分别是:硬件问题、软件问题、网络问题、资源耗尽、数据库、文件权限问题。可以根据以下具体错误原因进行辨别,并选择适合的解决方法。关于常见服务器
    的头像 发表于 08-12 10:11 1099次阅读

    揭秘:单片机硬件软件延时之大不同!

    在嵌入式项目中,软件开发基本上都会使用到延时,那么,该用软件延时还是硬件延时?它们又有什么区别呢?今天就来讲讲关于硬件延时和软件延时的内容,
    的头像 发表于 07-25 08:11 634次阅读
    揭秘:单片机<b class='flag-5'>硬件</b>与<b class='flag-5'>软件</b>延时之大不同!

    请问是什么决定了SPI闪存的特性,硬件还是软件

    我想烧录更大的软件,我可以选择 512 512 地图,就像 1024 1024 一样吗?(或者地图也是由硬件强加的?
    发表于 07-19 06:46

    说说硬件调试中发现的那些低级错误

    硬件调试中会经常遇到各种意想不到的问题,有些调试花了几个月,各种能想到的办法都尝试了,最后发现却是一个非常低级的错误,有多低级?请看今天的内文介绍。
    的头像 发表于 07-03 12:00 266次阅读
    说说<b class='flag-5'>硬件</b>调试中发现的那些低级<b class='flag-5'>错误</b>

    fpga是硬件还是软件

    FPGA(现场可编程门阵列)本质上是一种硬件设备,但它在功能实现上结合了硬件软件的特性。
    的头像 发表于 03-27 14:14 868次阅读

    fpga是硬件还是软件

    FPGA(现场可编程门阵列)属于硬件设备,而不是软件。它是一种可编程的硬件设备,由大量的逻辑单元、存储单元和互连资源组成,能够实现复杂的数字电路和系统设计。
    的头像 发表于 03-14 17:08 1661次阅读

    CMOS设置错误的解决方法

    的问题。 第一部分:了解CMOS设置错误的原因 1. 软件问题:可能是由于操作系统错误、驱动程序冲突或病毒感染导致CMOS设置错误。 2. 硬件
    的头像 发表于 12-28 15:13 7678次阅读

    ug内部错误,内存访问违例怎么解决

    问题,并提供一些预防这些问题的最佳实践方法。 一、内部错误原因和解决方法 1. 软件错误软件错误是引起内部
    的头像 发表于 12-27 16:27 5707次阅读

    PLC可编程逻辑控制器的常见错误类型以及修复方法/PLC指示灯异常闪烁可能是哪些原因造成的?

    PLC(可编程逻辑控制器)常见的错误类型包括: 1.程序错误:PLC程序编写不正确或存在无法识别的编程语句,导致程序执行出错。 2.硬件故障:PLC设备本身出现问题,如I/O模块故障、CPU出现异常
    的头像 发表于 12-15 11:37 2466次阅读

    vlookup函数显示值不可用错误

    不可用错误",即#N/A。 这种错误通常是由于一些常见的错误和问题引起的,下面我将详细介绍这些问题以及解决方法。 首先,最常见的原因是数据不匹配。VLOOKUP函数是根据一个主键进行查找
    的头像 发表于 12-03 10:18 1.2w次阅读

    xlookup查询结果错误值什么情况

    XLOOKUP函数是Excel中的一种查找函数,用于在指定范围中搜索某个值,并返回所查找的结果。当使用XLOOKUP函数时,可能会遇到错误值的情况。本文将详细介绍XLOOKUP函数的错误
    的头像 发表于 12-03 10:16 1.1w次阅读

    vlookup常见的12种错误

    VLOOKUP是Excel中非常常用的函数之一,它能够根据指定的值,在某一列范围内进行查找,并返回相应的值。虽然VLOOKUP是一个强大的函数,但是由于其复杂性和灵活性,常常容易出现一些错误。在本文
    的头像 发表于 12-01 11:19 2991次阅读

    c语言代码错误怎么找

    ,它们通常是由于C语言编写规则被打破所引起的。实际上,C编译器会提供非常详细的错误消息,告诉我们在哪个地方发生了错误。 当我们在编译过程中遇到语法错误时,我们需要仔细阅读编译器提供的错误
    的头像 发表于 11-24 10:05 3368次阅读

    linux中查找文件的命令

    在Linux中,可以使用以下命令来查找文件: find 命令:可以在指定目录及其子目录中查找文件,支持根据文件名、文件类型、文件大小、文件修改时间等条件进行查找。 使用格式: find 例如,在当
    的头像 发表于 11-08 14:24 1195次阅读