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

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

3天内不再提示

用于调试嵌入式系统软件的硬件仿真

星星科技指导员 来源:嵌入式计算设计 作者:Lauro Rizzatti 2022-06-19 15:30 次阅读

在当今竞争激烈的环境中,将富含嵌入式软件的复杂电子设备更快地推向市场,同时使它们更便宜、更可靠是一个非常冒险的提议。

不彻底测试硬件设计不可避免地会导致重新设计,增加设计成本并延长网表到布局过程的交付时间,并最终延迟上市时间,从而对收入流产生破坏性影响。缺少市场窗口的更显着结果隐藏在嵌入式软件的后期测试中。

毫不奇怪,项目周期的验证部分占用了不成比例的大量进度。这是因为跟踪和消除错误并非易事,尤其是当片上系统 (SoC) 的软件内容以每年大约2 0 0 %的速度增长时。相比之下,设计中硬件部分的增长仅为5 0 %左右。

硬件仿真作为系统验证的基础

虽然虚拟原型和现场可编程门阵列 (FPGA) 原型在早期嵌入式软件测试中受到关注,但它们无法帮助实现软硬件的集成。前者缺乏跟踪硬件错误所需的硬件准确性。后者提供了快速放大错误所需的有限硬件调试功能。

因此,开发团队和项目经理已将硬件仿真作为其验证策略的基础。仿真是一种多功能验证工具,具有许多相关优势,包括硬件/软件协同验证,或测试硬件和软件集成的能力。软件开发人员已经注意到了,因为它是唯一能够确保嵌入式系统软件与底层硬件正常工作的验证工具。同样值得注意的是,对于致力于调试复杂 SoC 设计的硬件工程师来说,它可以将软件错误跟踪到硬件或软件行为中的硬件错误。其他好处包括它的快速编译能力,软件验证的另一个优点,全面的设计调试和可扩展性,以适应包含超过 10 亿个专用集成电路ASIC) 门的设计。此外,它可以高速处理数十亿个验证周期,以验证嵌入式软件和执行系统验证。

过去,硬件调试和测试是项目周期验证部分的唯一原因,这是由硬件描述语言 (HDL) 测试台驱动的逻辑仿真管理的。传统的 big-box 仿真仅用于最大的设计。许多开发团队已采用形式验证来补充模拟,增加基本覆盖范围并确保不会遗漏一些极端情况。然而,只有硬件仿真才能在实际时间内完成 SoC 设计的整个验证任务,并缓解与基于事件的仿真相关的运行时问题。

一切都与软件内容有关

SoC 的软件内容使联合验证成为验证策略中最重要的部分,因为它确认嵌入式 SoC 的硬件和软件部分同时验证并在提交到芯片之前正确交互。

过去,如果设计流片到芯片上后出现硬件问题,软件开发人员必须尽可能地解决如何围绕它编写代码。通过在 SoC 完成之前验证软件,设计团队有机会在硬件问题被安装到芯片之前修复它们。如前所述,仿真检查以确保嵌入式软件根据规范在支持硬件上运行。

过去,软件调试是使用各种调试引擎完成的。每个内核一个,他们利用了硬件功能,这些功能提供了对处理器内部工作的可见性和控制。虽然提供了一些调试功能,但诊断问题的能力受到处理器提供的访问类型的限制。此外,由于传统的软件调试通常发生在实际系统上,因此软件开发人员正在以目标系统速度在真实硬件上执行真实代码。这使他们能够通过大量代码快速找到错误例程。

这些传统技术在调试 SoC 时会失效。因为没有真正的硬件,代码不能以真正的系统速度执行。假设,可以在执行代码时模拟硬件,并且所有硬件可见性都将由模拟器提供。问题在于速度——这是一种调试代码的缓慢方式。

例如,如果 SoC 设计为在 Linux 上运行程序,则软件开发人员必须以数十亿个时钟周期完成 Linux 启动,然后软件才能开始执行。粗略的估计是,使用大约1 0赫兹(Hz) 的典型模拟速度完成Linux引导需要超过2 8 年的时间。

不管是硬件调试还是软件调试,传统的硬件和软件调试工具是互不相识的。对于大型且复杂的 SoC 设计,单独进行两种类型的调试以尝试定位问题是低效的。

让两者一起工作是理想的场景,而这正是仿真节省时间的地方。SoC 硬件在硬件中实现,通常是 FPGA 或其他一些可编程元件,使其速度更快。使用此设置,Linux 启动可以在1 5分钟内完成,具体取决于运行的实际速度。硬件仿真提供与具有断点和波形的硬件调试器类似的控制和可见性。

确认 SoC 设计将按预期工作

硬件仿真以其高性能与其他验证工具区分开来——这是由软件需求驱动的日益重要的需求。它能够确认 SoC 设计将按计划工作,并且适合处理复杂的设计,这些设计可大至 10 亿个 ASIC 等效门,并且每月消耗超过 1 万亿个验证周期。即便如此,在此阶段使用硬件仿真进行彻底和详尽的功能验证仍然是可用的最具成本效益和最有效的调试方法。

交易级建模 (TLM) 的引入和交易者的可用性可以将硬件仿真转变为一系列垂直市场的虚拟平台测试环境。交易者是验证知识产权 (IP) 组合的一部分,是外围功能或协议的高级抽象模型。交易者,通常作为现成的 IP 提供,可用于各种不同的协议。典型目录包括 PCIe、USB、FireWire、以太网、数字视频、RGB、HDMII2CUART 和 JTAG 组件。

更好地验证更复杂的系统

以前,硬件设计独立于要在这些芯片上执行的软件的创建。情况不再如此。由于 SoC 的处理器数量翻了一番,并且每一代产品包含的软件内容增加了一倍,因此对软件的关注成为开发团队和项目经理的首要任务。现在,在开发团队证明预期的软件可以在硬件平台上运行之前,SoC 是不完整的。

SoC 是一个成熟的嵌入式系统,需要硬件仿真来验证它是否正常工作。借助硬件仿真,开发团队可以更有策略地规划并实施基于多个抽象级别的调试方法。他们可以同时跟踪硬件和嵌入式软件之间的错误,以确定问题所在。在此过程中,他们以经济高效的方式节省了时间,大大降低了错过市场窗口的风险。

审核编辑:郭婷

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

    关注

    1625

    文章

    21665

    浏览量

    601784
  • 以太网
    +关注

    关注

    40

    文章

    5374

    浏览量

    171076
  • soc
    soc
    +关注

    关注

    38

    文章

    4118

    浏览量

    217923
收藏 人收藏

    评论

    相关推荐

    【「嵌入式Hypervisor:架构、原理与应用」阅读体验】+ Hypervisor应用场景调研

    ,比如系统软件和应用软件自身的漏洞、病毒和网络攻击、以及人为操作导致的破坏,Hypervisor的出现就是为了构建高可靠性的嵌入式系统,原来如此啊! 读到这里,我感觉Hyperviso
    发表于 10-14 11:21

    嵌入式开发常用软件有哪些?

    编写、编译和调试嵌入式系统软件。它提供了一个集成的开发环境(IDE),包括代码编辑器、编译器、调试器和仿真器等组件,这些组件可以方便地进行配
    发表于 09-09 15:22

    嵌入式系统怎么学?

    系统设计与调试:需要掌握嵌入式系统的设计方法和调试技术,包括硬件设计、
    发表于 07-02 10:10

    嵌入式系统基础

    嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 它由
    的头像 发表于 06-19 09:10 422次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>基础

    嵌入式硬件VS软件,到底哪个更难?

    嵌入式系统开发中,硬件软件是密不可分的两个方面。但是,究竟是硬件开发更具挑战性,还是软件开发
    的头像 发表于 06-13 08:10 1108次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>硬件</b>VS<b class='flag-5'>软件</b>,到底哪个更难?

    从事嵌入式方向,一定要软硬件通吃?

    软件工程师的职责嵌入式软件工程师的主要职责是为嵌入式系统编写和调试代码,确保
    的头像 发表于 06-05 08:10 1076次阅读
    从事<b class='flag-5'>嵌入式</b>方向,一定要软<b class='flag-5'>硬件</b>通吃?

    嵌入式软件工程师和硬件工程师的区别?

    嵌入式软件工程师和硬件工程师的区别? 嵌入式软件工程师 嵌入式
    发表于 05-16 11:00

    嵌入式系统硬件基础知识大全

    嵌入式系统是现代科技发展的一个重要分支,广泛应用于工业控制、消费电子、医疗设备、汽车电子等领域。本文试图全面解析嵌入式系统的软基础知识,以期
    发表于 05-09 14:12

    JTAG在整个嵌入式系统开发生命周期中的系统调试和测试中的作用

    时代变了。如今,内存空间和高CPU时钟频率“几乎”。设计、调试和测试挑战已经从硬件组件集成和调试发展到系统硬件设计的
    发表于 05-03 10:13 388次阅读
    JTAG在整个<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>开发生命周期中的<b class='flag-5'>系统</b><b class='flag-5'>调试</b>和测试中的作用

    嵌入式软件开发应该掌握哪些知识?

    嵌入式软件开发应该掌握哪些知识? 一、 什么是嵌入式软件嵌入式软件通常是指
    发表于 02-19 11:23

    嵌入式学习步骤

    硬件组件。 (4).开发固件:编写嵌入式系统的固件,这是嵌入式系统软件部分。固件负责控制
    发表于 02-02 15:24

    高端嵌入式实验平台

    一、整体概述 该嵌入式平台具有前沿性、专业性、高集成度、功能丰富等特点,平台涵盖嵌入式计算机技术、嵌入式硬件接口、嵌入式
    的头像 发表于 01-29 09:55 489次阅读
    高端<b class='flag-5'>嵌入式</b>实验平台

    嵌入式软件开发和软件开发的区别

    嵌入式软件开发和软件开发是两个不同的概念,它们在一些关键方面有着明显的区别。嵌入式软件开发是指开发嵌入
    的头像 发表于 01-22 15:27 2164次阅读

    什么是嵌入式系统嵌入式系统的具体应用

    嵌入式,一般是指嵌入式系统用于控制、监视或者辅助操作机器和设备的装置。
    的头像 发表于 12-20 13:33 2402次阅读

    嵌入式硬件软件哪个好?

    嵌入式硬件软件哪个好? 嵌入式硬件工程师哪个更有前途呢?一起来看看。 嵌入式是分为软
    发表于 12-05 15:17