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

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

3天内不再提示

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

星星科技指导员 来源:嵌入式计算设计 作者:Lauro Rizzatti 2022-07-05 09:25 次阅读

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

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

毫不奇怪,项目周期的验证部分占用了不成比例的大量进度。这是因为跟踪和消除错误并非易事,尤其是当片上系统 (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 是一个成熟的嵌入式系统,需要硬件仿真来验证它是否正常工作。借助硬件仿真,开发团队可以更有策略地规划并实施基于多个抽象级别的调试方法。他们可以同时跟踪硬件和嵌入式软件之间的错误,以确定问题所在。在此过程中,他们以经济高效的方式节省了时间,大大降低了错过市场窗口的风险。

审核编辑:郭婷

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

    关注

    5102

    文章

    19262

    浏览量

    309732
  • 以太网
    +关注

    关注

    40

    文章

    5480

    浏览量

    173189
  • soc
    soc
    +关注

    关注

    38

    文章

    4238

    浏览量

    219781
收藏 人收藏

    评论

    相关推荐

    如何提高嵌入式代码质量?

    的情况下也必须保持稳定的性能。 3. 硬件依赖:嵌入式软件紧密依赖硬件平台,需要充分理解硬件特性才能编写高效且稳定的代码。 了解这些特点有助
    发表于 01-15 10:48

    嵌入式工程师常用的开发工具有哪些?

    仿真器可以模拟复杂的微控制器和外设,帮助工程师在早期阶段进行软件开发和调试。这大大缩短了开发周期,降低了开发成本。 总之,嵌入式工程师需要熟练掌握这些开发工具,才能在
    发表于 12-20 15:29

    嵌入式系统开发与硬件的关系 嵌入式系统开发常见问题解决

    嵌入式系统开发与硬件的关系 嵌入式系统是专为特定应用设计的计算机系统,它们通常
    的头像 发表于 12-09 09:38 549次阅读

    嵌入式学习建议

    对广大渴望学习嵌入式系统的学子提出几点基础阶段的学习建议: ①嵌入式系统软件硬件密切相关,一定要打好软
    发表于 10-22 11:41

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

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

    嵌入式系统硬件架构

    嵌入式系统是一种专用的计算机系统,它以应用为中心,以现代计算机技术为基础,能够根据用户的具体需求(如功能、可靠性、成本、体积、功耗、环境等)灵活裁剪软硬件模块。这类
    的头像 发表于 09-29 16:29 581次阅读

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

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

    嵌入式系统怎么学?

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

    如何提升嵌入式编程能力?

    、SPI、CAN、WIFI、MQTT等多种通信协议。 4. 使用开发工具:熟练掌握嵌入式开发工具,如编译器、调试器、仿真器和实时操作系统(RTOS)。 5. 阅读数据手册:仔细阅读你所
    发表于 06-21 10:01

    嵌入式系统基础

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

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

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

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

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

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

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

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

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

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

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