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

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

3天内不再提示

集成嵌入式平台加速了SoC和嵌入式系统的软件调试和启动

星星科技指导员 来源:嵌入式计算设计 作者:Colin Walls 2022-06-28 15:31 次阅读

硬件准备就绪时开始嵌入式软件开发的日子已经一去不复返了。软件的规模和复杂性不断增加,因此需要更早的开始日期才能有机会按时发货。考虑到与软件开发相关的投资和风险,公司必须确保在硅流片之前进行适当的软件集成。不断缩短的上市时间窗口进一步加剧了这些挑战。

唯一的解决方案是寻找执行方法,因此在最终目标硬件可用之前测试和调试软件。甚至在硬件设计最终确定之前,开发通常就必须认真开始。改进硬件设计和验证以及加速软件启动的一种方法是将应用程序部署在虚拟或仿真硬件上。

虚拟原型

“虚拟原型”一词没有单一、精确的定义。就本文而言,该术语将用于描述可以运行嵌入式代码的任何环境,从而在实际目标系统可用之前实现有用的开发。让我们仔细看看这些可能性。

在 PC 上运行的本机代码

这显然是在 PC 上编译和运行代码的第一步。工具很容易获得、便宜,甚至是免费的,而且 PC 提供了高级别的功能。这个环境非常适合测试算法和基本逻辑。与实际目标相比,代码在 PC 上的运行速度可能会更快,因为 PC 的 CPU 可能比嵌入式处理器更强大。

除了时钟速度之外,代码时序没有用处,因为 x86 处理器上的指令组合与大多数嵌入式设备非常不同。一旦代码需要与硬件或实时操作系统 (RTOS) 交互,这个执行环境就不再有用了。

本机代码与外围/系统模型一起运行

大多数 RTOS 制造商都提供了一个主机执行环境,可以运行特殊版本的 RTOS 或在 Windows 下模拟其功能。这与提供外围设备功能模型的方法一起,可以取得进一步的进展。然而,时机仍然具有误导性。

在评估板上执行

大多数半导体供应商都提供低成本评估板,以促进其 CPU 的快速部署。商业 RTOS 产品,如 Mentor Embedded 的 Nucleus RTOS 可以为此类电路板预配置,从而实现快速生产。

这种执行环境很有吸引力,因为 CPU 速度和指令组合可能非常接近最终目标,这使得时间敏感代码的测试变得可行。这种环境的准确性取决于外围设备与目标设备的相似性。

使用指令集模拟器

尽管执行真实芯片的代码看起来很有吸引力,但它的缺点是需要添加代码才能获得某些软件功能的可见性。这称为“检测”代码。另一种方法是使用指令集模拟器 (ISS),它在逐条指令的基础上模拟代码执行。ISS 可以以接近实时的速度运行,并提供精确、高度可见的代码执行。实际上,当 ISS 跟踪仿真期间消耗的时钟周期时,可以停止实时。

大多数 ISS 产品允许某种功能外围建模,这使得软件开发取得重大进展。

具有外围设备硬件描述语言模型的 ISS(协同仿真)

硬件是使用硬件描述语言 (HDL) 设计的,例如 VHDL 或 Verilog。设计人员经常使用仿真器来验证他们的 HDL 设计,并且当今的许多开发工具将 ISS 与 HDL 仿真器相结合。这使代码能够在与看似真实的硬件交互的准确 CPU 环境中执行。软件开发人员可以使用最终目标系统的 HDL 模型来开发与硬件密切交互的驱动程序和引导代码等软件组件。

协同仿真的缺点是更高的精度是以降低执行速度为代价的。

完整系统的 HDL 模型,包括 CPU

最准确的虚拟原型应该是整个系统的 HDL 模型,包括 CPU 和外围设备,这似乎是合乎逻辑的。三个原因解释了为什么情况并非如此:

这种模型上的代码执行速度将非常缓慢。完成任何有用的事情都不够快。

CPU 的 HDL 不太可能可用。

由于国际空间站很可能经过精心设计,因此使用它没有任何缺点,但确实将性能提高到了有用的水平。

具有 SystemC 外设模型的 ISS

为了允许可以适应软件执行的适当仿真速度,可以使用诸如 SystemC(C/C++ 类库)之类的更高抽象语言对系统进行建模。更高抽象级别的建模使用松散或近似的时序。这种时序适用于软件执行和性能分析。

硬件仿真

到目前为止讨论的虚拟原型技术可以绘制在代码执行速度与精度的关系图上,并且基本上会产生一条直线(参见图 1)。开发人员可以从一系列可能性中进行选择:一个极端是快速、抽象的模拟,另一个是缓慢、精确的模拟。然而,另一种技术逆势而上,偏离了直线。

图 1:除仿真外,虚拟原型环境在代码执行速度与精度的关系图中形成一条直线。

pYYBAGK6rmiABh2rAAR1XZNcj1A941.png

尽管只需使用功能强大的台式计算机就可以降低 HDL 仿真的速度限制,但这也有限制,设计人员总是想要更多。电子设计自动化 (EDA) 社区的回应是开发仿真。仿真器是一种专门的硬件,实际上提供了运行 HDL 仿真的专用环境。这通常使用 FPGA 来实现。

使用 ISS、SystemC 模型和模拟一些外围硬件的仿真器构建的集成平台打破常规,提供精确、高性能的执行环境。运行虚拟目标和仿真可以更深入地了解硬件和软件执行线程,并实现更高效的调试和系统性能分析。

超越调试

嵌入式软件开发人员传统上专注于让他们的代码正常运行。在最高抽象级别,这导致设备以符合设计规范的可预测方式响应刺激。这并没有改变,但开发人员的简介正在变得更广泛。对软件开发人员工作量的最重要补充是对功率的考虑。

低功耗设计之所以成为热门话题,有几个原因。虽然这在历史上一直是硬件问题,但今天的复杂设计为根据系统的当前状态、软件和实时环境调整功耗提供了许多机会。该状态由软件确定;因此,电源管理正在成为一个软件问题。

使用虚拟原型在硬件可用性之前开发和调试电源管理代码是一项艰巨的任务,但这正是我们所需要的。当然,原则上都是可以的;硬件模拟可以得出功耗数据,并且可以测量CPU的实际功耗。这只是一个以有意义的方式将此信息传达给软件开发人员的问题。

前进的道路

任何认为软件和硬件开发是独立活动的想法都必须摒弃。好消息是,片上系统 (SoC) 生产商现在认识到需要先于芯片进行嵌入式软件开发。坏消息是,尽管传统的 EDA 硬件工具可以通过仿真和仿真运行嵌入式软件,但它们并不关注嵌入式系统设计的关键问题,包括操作系统上下文、多核和线程处理以及缓存考虑。

需要一种集成方法来提供设计为以良好协调的方式工作并以硬件和软件团队都熟悉的方式呈现信息的工具。软件开发人员必须能够使用他们用来开发将在 FPGA 原型和具有集成技术的最终芯片上运行的应用程序所利用的相同本地工具更早地与硬件进行交互。Mentor Embedded Platform 中提供了一种这样的统一方法,它结合了 Mentor Graphics 的熟悉技术,例如使用 Vista 硬件调试和分析的虚拟原型设计以及用于软件开发的 Sourcery CodeBench 集成开发环境 (IDE)。通过使用这个集成嵌入式平台进行早期软件开发,开发人员可以使用虚拟和仿真硬件进行性能分析,

这种跨学科的早期研究改进了设计硬件并加速了 SoC 和嵌入式系统的软件调试和启动。软件开发人员和硬件工程师都同意这是朝着正确方向迈出的一步。

审核编辑:郭婷

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

    关注

    1626

    文章

    21667

    浏览量

    601842
  • 嵌入式
    +关注

    关注

    5068

    文章

    19019

    浏览量

    303275
  • soc
    soc
    +关注

    关注

    38

    文章

    4122

    浏览量

    217937
收藏 人收藏

    评论

    相关推荐

    Vitis里如何创建嵌入式软件工程

    Vitis可以为异构平台的应用实现加速。其实,Vitis也能完美的支持嵌入式软件开发。下面以MicroZed单板为例,介绍在Vitis里如何创建嵌入
    的头像 发表于 11-04 12:03 5495次阅读
    Vitis里如何创建<b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>工程

    嵌入式系统调试技巧

    调试与设计一样是嵌入式系统不可或缺的一部分。两者都可以正确地称为同一枚硬币的两个面。考虑到物联网领域嵌入式系统的最新发展,工程师在
    发表于 07-21 12:08 2144次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>的<b class='flag-5'>调试</b>技巧

    嵌入式系统的应用与设计

    ;nbsp;   当前的嵌入式系统设计的前沿应当就是嵌入式系统芯片(SOC)。
    发表于 10-15 16:25

    嵌入式系统的硬件平台组成

    和DSP协处理器(也可内部集成),以完成高性能信号处理。  随着计算机技术、微电子技术、应用技术的不断发展及纳米芯片加工工艺技术的发展,以微处理器为核心的集成多种功能的SoC系统芯片已
    发表于 06-20 15:25

    基于ARM的嵌入式系统软件设计

    嵌入式软件启动代码嵌入式软件开发关键技术嵌入式实时操作系统
    发表于 03-25 15:03 203次下载
    基于ARM的<b class='flag-5'>嵌入式</b><b class='flag-5'>系统软件</b>设计

    汽车嵌入式SoC系统的应用与发展

    汽车嵌入式SoC系统的应用与发展 嵌入式系统是泛计算领域的重要组成部分,是嵌入式对象宿主体系中
    发表于 10-26 14:08 1405次阅读
    汽车<b class='flag-5'>嵌入式</b><b class='flag-5'>SoC</b><b class='flag-5'>系统</b>的应用与发展

    嵌入式系统的远程调试

      1 基本方法   图1(a)是传统的嵌入式调试方法:主机PC通过串口与从机嵌入式系统相连,接收从嵌入式
    发表于 08-30 10:23 1004次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>的远程<b class='flag-5'>调试</b>

    嵌入式系统U盘实时启动技术

    本文给出了实现嵌入式实时系统优盘启动嵌入式主机硬件结构、软件协议栈以及主要程序流程,探讨了实现嵌入式
    发表于 07-20 15:09 1714次阅读

    嵌入式系统开发圣经

    本书内容主要包含嵌入式系统介绍、嵌入式Soc硬件系统概论、嵌入式
    发表于 03-22 16:30 5次下载

    嵌入式软件是什么意思_嵌入式软件的分类有哪些

    本文首先阐述嵌入式软件的概念,其次介绍嵌入式软件的特征,最后介绍
    发表于 08-31 15:54 1.6w次阅读

    嵌入式软件的开发流程_嵌入式软件调试

    本文首先介绍嵌入式软件的发展,其次阐述嵌入式软件的开发流程,最后介绍
    发表于 08-31 16:02 6239次阅读

    如何实现嵌入式系统远程调试

    嵌入式系统随着目前科技的发展,正逐步融入人们的生活中。对于嵌入式系统,我们应该有所了解。就专业人员而言,他们对嵌入式
    的头像 发表于 11-22 11:55 5298次阅读
    如何实现<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>远程<b class='flag-5'>调试</b>

    嵌入式系统软件组成

    软件固化存储。在嵌入式系统中,操作系统和应用系统集成与计算机硬件系统中,
    发表于 10-20 12:36 4次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>的<b class='flag-5'>软件</b>组成

    嵌入式系统笔记

    目录第一讲 简单介绍第二讲 嵌入式系统结构第三讲 基于ARm架构的嵌入式微处理器​第四讲 SOC第五讲 嵌入式
    发表于 10-20 14:51 7次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>笔记

    嵌入式Linux专题(一)——嵌入式Linux系统构成及启动流程

    本文简单的介绍什么是嵌入式系统,以及嵌入式Linux的系统结构,并且简单的介绍Linux的
    发表于 11-02 12:36 15次下载
    <b class='flag-5'>嵌入式</b>Linux专题(一)——<b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>系统</b>构成及<b class='flag-5'>启动</b>流程