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

    文章

    20152

    浏览量

    247356
  • Android
    +关注

    关注

    12

    文章

    3986

    浏览量

    133091
  • Linux
    +关注

    关注

    88

    文章

    11628

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    芯源的CRC硬件计算谁用过吗?MCU的CRC你们喜欢用硬件的还是软件的啊?

    芯源的CRC硬件计算谁用过吗?MCU的CRC你们喜欢用硬件的还是软件的啊?
    发表于 12-01 08:25

    广凌智慧教室建设内容:硬件软件介绍

    广凌科技(广凌股份)凭借“硬件+平台+数据”的深度融合,推出智慧教室整体解决方案,全面覆盖智慧教室建设的硬件配置、软件平台、数据驱动及场景适配需求,一起来看看广凌智慧教室建设需要搭建什么硬件
    的头像 发表于 11-11 16:17 939次阅读
    广凌智慧教室建设内容:<b class='flag-5'>硬件</b>与<b class='flag-5'>软件</b>介绍

    硬件融合拼接器与软件融合拼接的区别?

    硬件融合拼接器和软件融合拼接是两种不同的图像拼接技术,它们在实现方式、效果和应用场景等方面存在一些区别。 1、实现方式 硬件融合拼接器通常是通过硬件设备来实现图像的拼接,这种设备通常由
    的头像 发表于 09-28 14:33 318次阅读

    请问中断过多的时候进入硬件错误如何处置?

    中断过多的时候进入硬件错误如何处置?是加看门狗还是加硬件错误处理?
    发表于 07-21 06:11

    硬件辅助验证(HAV) 对软件验证的价值

    硬件辅助验证 (HAV) 有着悠久的历史,如今作为软件驱动验证的必备技术,再度受到关注。 RISC-V 可能是说明这一点的最好例子。HAV 能够执行多个周期的软件驱动验证,是加速 RISC-V
    的头像 发表于 05-13 18:21 1674次阅读

    硬件好还是学软件好?

    硬件好还是学软件好? 选择学习硬件还是软件取决于个人兴趣、职业目标以及对不同工作方式的偏好。以下是两者的一些比较,帮助你做出更合适的选择。 学习
    发表于 04-07 15:27

    嵌入式软件单元测试的必要性、核心方法及工具深度解析

    一、为什么嵌入式软件必须重视单元测试? ‌嵌入式系统的特殊性‌ 在汽车 ECU、医疗设备控制器等场景中,软件直接操控硬件,‌单比特错误可能导致刹车失灵或呼吸机故障‌。不同于 PC 
    的头像 发表于 03-21 14:53 980次阅读

    STM32CUBEMX使用硬件SPI和软件SPI的区别是什么?

    在使用CUBEMX生成的代码 使用硬件SPI的速度 比 使用软件模拟的SPI速度要慢几倍 (已经在硬件SPI配置成2分频 )按概念来说不应该是硬件SPI比
    发表于 03-13 07:21

    AD采样硬件软件滤波问题如何解决

    AD采样硬件软件滤波问题 ADS1115我用ADS1115采样 原理上完全可以精确到1mV 可是实际上有10mV的波动 请问大家对采样的硬件软件都是怎样滤波的啊 采集很简单的直
    发表于 01-20 09:38

    GPIO错误排查与解决

    。输入模式下,GPIO可以读取外部信号;输出模式下,GPIO可以控制外部设备。正确配置GPIO对于系统的正常运行至关重要。 2. 常见的GPIO错误 引脚配置错误 :GPIO引脚未正确配置为输入或输出。 电平错误 :输出电平与预
    的头像 发表于 01-09 09:46 3728次阅读

    RTOS中的错误检查机制

    在嵌入式应用中,有可能发生各种各样的错误,系统必须能够检测到这些错误并作出适当的响应。RTOS通常内置了一些错误检查功能,用于检测错误并向应用提供响应
    的头像 发表于 01-03 14:44 1024次阅读

    RAID 5 硬件软件 RAID 的区别

    RAID 5硬件RAID与软件RAID之间存在显著的差异,这些差异主要体现在实现方式、性能、数据安全性、灵活性以及成本等方面。 一、实现方式 硬件RAID : 依赖于专用的硬件RAID
    的头像 发表于 12-27 18:05 1867次阅读

    CAN协议的软件过滤和硬件过滤

    过滤器来只接收特定的消息。CAN的过滤分为软件过滤和硬件过滤。往期推荐:《CH32FV系列CAN设备过滤器配置》《讲解CH32FV系列32位CAN硬件过滤》1软件过滤
    的头像 发表于 12-26 19:33 1026次阅读
    CAN协议的<b class='flag-5'>软件</b>过滤和<b class='flag-5'>硬件</b>过滤

    bcd编码的优缺点 bcd编码的常见错误

    BCD(Binary-Coded Decimal)编码是一种二进制编码方式,用于将十进制数(0-9)直接转换为二进制形式。这种编码方式在数字系统中非常常见,尤其是在需要处理数字数据的硬件软件
    的头像 发表于 12-20 17:17 2402次阅读

    单片机Debug与仿真区别

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