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

    文章

    19281

    浏览量

    229775
  • Android
    +关注

    关注

    12

    文章

    3936

    浏览量

    127379
  • Linux
    +关注

    关注

    87

    文章

    11302

    浏览量

    209431
收藏 人收藏

    评论

    相关推荐

    单片机Debug与仿真区别

    是指在软件硬件开发过程中,通过特定的工具和技术来查找、诊断和修复错误的过程。在单片机开发中,Debug通常涉及到以下几个方面: 硬件调试
    的头像 发表于 12-19 09:47 148次阅读

    Linux文件查找

    Linux文件查找 1.find查找概述 为什么要有文件查找,因为很多时候我们可能会忘了某个文件所在的位置,此时就需要通过find来查找。 find命令可以根据不同的条件来进行
    的头像 发表于 12-03 17:09 256次阅读

    常见的GND连接错误及解决方案

    GND(接地)连接在电子设计和硬件开发中至关重要,错误的GND连接可能导致电路不稳定、信号干扰甚至设备损坏。以下是一些常见的GND连接错误及其解决方案: 一、GND网络未连接 问题描述 : 在
    的头像 发表于 11-29 16:02 1133次阅读

    如何使用Ozone分析Cortex-M异常

    Ozone可以帮助用户快速分析和查找导致CPU故障的软件bug。本文解释如何使用Ozone的调试功能,深入了解Cortex-M架构上的这些错误
    的头像 发表于 11-29 11:14 702次阅读
    如何使用Ozone分析Cortex-M异常

    raid 硬件软件的区别

    在现代数据中心和企业级存储解决方案中,RAID技术扮演着至关重要的角色。它通过将多个物理磁盘组合成一个逻辑单元,提供了数据冗余、性能提升和容错能力。RAID的实现方式主要分为硬件RAID和软件
    的头像 发表于 11-12 09:39 509次阅读

    如何查找线路漏电的方法和步骤

    线路漏电是电气设备和线路中常见的故障之一,它不仅会导致设备损坏,还可能引发火灾等安全事故。因此,查找和处理线路漏电问题至关重要。 确定漏电类型 首先,我们需要确定漏电的类型。漏电分为两种:一种是接地
    的头像 发表于 08-26 09:07 1708次阅读

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

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

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

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

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

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

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

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

    fpga是硬件还是软件

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

    fpga是硬件还是软件

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

    CMOS设置错误的解决方法

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

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

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