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

审核编辑:郭婷

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

    关注

    4981

    文章

    18274

    浏览量

    288350
  • 以太网
    +关注

    关注

    40

    文章

    5075

    浏览量

    166212
  • soc
    soc
    +关注

    关注

    38

    文章

    3743

    浏览量

    215655
收藏 人收藏

    评论

    相关推荐

    实时级嵌入式系统半实物仿真测试平台ETest

    产品简介** ETest_RT是一款具有高实时性的嵌入式系统半实物仿真测试平台(Embedded System Real Time Test Studio RT,简称:ETest_RT
    发表于 04-25 17:01

    简谈Xilinx Zynq-7000嵌入式系统设计与实现

    和生成HDL代码。 随着异构架构和片上系统技术的不断发展,协同设计、协同仿真和协同调试将成为未来嵌入式系统开发者必备的素质。所谓的协同,就
    发表于 04-10 16:00

    嵌入式系统发展前景?

    的发展前景也十分广阔。 随着物联网和智能设备的快速发展,嵌入式系统将更为普遍地应用于各种设备和设施,包括家用电器、医疗设备、交通工具等。这些设备将通过嵌入式
    发表于 02-22 14:09

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

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

    嵌入式学习步骤

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

    高端嵌入式实验平台

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

    嵌入式硬件软件哪个好?

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

    嵌入式开发为什么需要输出调试信息?

    通过输出与外部设备或模块的通信信息,可以验证硬件连接是否正确,是否能够正确地与外部设备进行通信。 5.状态监控 输出调试信息可以实时监控系统的状态。这对于嵌入式
    发表于 11-28 16:46

    仿真系统软件的架构是什么

    仿真软件的架构可以包括以下几个部分: 硬件驱动部分:负责驱动硬件,向上一层提供底层硬件的操作接口。仿真
    的头像 发表于 10-16 16:56 477次阅读

    仿真系统软件的架构是什么呢?

    仿真系统软件的架构是什么呢? 智慧华盛恒辉仿真系统软件硬件载体大部分为专用计算机设备,并且通常没有外围设备
    的头像 发表于 10-13 17:19 303次阅读

    什么是嵌入式Linux?

    之有运行程序的能力与作用。在很多智能家电开发,智能产品的研究上有着主导的作用。(对个人、团队开发产品有兴趣的朋友一定要看看嵌入式!) linux的嵌入式系统开发,涵盖了从硬件
    发表于 10-11 13:47

    STM32嵌入式操作系统介绍

    嵌入式操作系统的特点• 嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动
    发表于 09-28 06:59

    嵌入式软件好还是硬件好?

    嵌入式硬件工程师哪个更有前途呢?一起来看看。 嵌入式是分为软硬件工程师的,首先我们先来看看嵌入式硬件
    发表于 09-18 15:31

    STM32嵌入式操作系统介绍

    嵌入式操作系统的特点• 嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动
    发表于 09-11 07:24

    嵌入式学习路线你知道吗?

    文件系统的定制、BootLoader、内核和根文件系统的烧写。这一阶段的主要目的是掌握带有操作系统嵌入式系统的构建和烧写过程,以及对
    发表于 06-14 16:00