加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
    • 优化软件架构
    • 软件与硬件的权衡
    • 缺乏统一方法
    • 结论
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

嵌入式软件大变革

2022/05/06
855
阅读需 20 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

文︱ANN STEFFORA MUTSCHLER

来源︱Semiconductor Engineering

编译 | 编辑部

在整个设计周期中,每个良好的硬件软件设计都开始于结构化方法,但随着芯片架构和应用逐渐聚焦于特定领域,以及AI功能的应用,这种结构变得越来越难以定义。过去,嵌入式软件仅为有限功能开发,占用空间最小。如今,嵌入式软件已经广泛融入整体系统设计,并尽可能重复使用。

嵌入式软件通常包括实时操作系统驱动程序固件,其中大部分是定制化开发,一旦加载到设计中,便很少再次使用到其他地方。但是,现阶段,芯片使用寿命越来越长,对于安全关键型和任务关键型应用来说,嵌入式软件可能需要更新。因此,嵌入式软件并非单一架构,而是变得越来越灵活,适应性也越来越强。在某些情况下,它的能效更低、速度也更慢。如今,我们面临的挑战是弄清楚哪些内容需要优化,以及如何找到实现这一目标的最佳方案。

“问题变成了‘系统在做什么?’如果你要开发软件,而针对某项隐藏功能,就需要硬件和软件一起实现,”Cadence Tensilica IP技术和战略营销集团总监Pierre-Xavier Thomas称。“在当今的许多嵌入式系统中,当系统中有微控制器时,通常情况下,必须对嵌入式软件进行优化。该软件用于协调输入输出,并处理系统支持执行的操作,通常是从环境中捕获信息、执行某些操作,然后提供全新信息来激活某些功能。在工业甚至智能家居中,情况并非如此。在智能家居中,终端设备通过执行操作,查看传感数据,然后激活特定功能。挑战在于如何对成本及性能进行优化。在这方面,软件逐渐变得更具体、更有针对性,尤其针对接口,某种程度上也针对架构本身。当对输入输出进行控制时,需要经由寄存器实现控制、通信等功能,因此,软件可以更具体地针对某一特定功能。同时,软件人员和固件开发人员在开发过程中,还需要与硬件更加紧密结合。”

但是,随着设计变得更加定制化,且芯片制造商对设计灵活性的更高需求,芯片设计不再是昂贵的一次性设计,因此构建硬件和灵活软件变得更加困难。

“纵观20年前的嵌入式软件领域,在专用设备中,嵌入式设备往往没有连接,也没有进行管理,”西门子嵌入式解决方案总经理Scot Morrison表示。“工程团队试图针对特定功能进行优化。当时已经有一些可重用性的概念,他们能够为同一家公司的类似设备编写代码。开源在当时并不是好的选择。这意味着嵌入式软件开发是从以性能为中心和以优化封装为中心的软件开始的。”

如今,这些类型的应用仍然存在。起搏器等医疗设备只有一项任务要做,由于电池难以更换,因此这些设备使用了尽可能小的占地面积和尽可能少的能量来实现这一点。但是许多其他设备现在也使用嵌入式软件,并且该软件需要在其应用系统环境中工作。

那么,今天的嵌入式软件究竟是什么呢?“也许嵌入式软件行业的最佳定义是开发人员协同设计硬件和软件,以提供优化的解决方案,并有效平衡两者的资源,”Imperas Software首席执行官Simon Davidmann表示。“硬件抽象层是一种有用的方法,可以让开发人员对整体操作有一定的了解,而不会被不必要的细节所淹没。硬件基于半导体材料晶体管的物理特性,但对于大部分数字设计,栅极视图在RTL抽象中最有用。软件基于处理器指令集架构(ISA),具有封装级微架构来实现必要的功能,但软件是使用硬件抽象层、高级语言(如C)的抽象以及由RTOS或操作系统管理的操作基础架构开发的。”

简而言之,嵌入式软件和硬件之间的联系变得越来越复杂和微妙。“传统上,当我们考虑软件开发时,硬件始终排在首位,”Synopsys产品营销高级总监Johannes Stahl表示。“有一个指令集、一个基于指令集构建的CPU、一个硬件架构,然后基本上,首先要构思嵌入式软件,并创建指令集。软件必须能够移植和开发,这实际上是一件痛苦的事情,但这发生在极少数指令集生态系统中。”

随着时间的推移,软件总体上已经发展到可以推动更多关于硬件的决策,嵌入式软件已经成为整个系统软件架构中不可或缺的一部分。但是,随着AI/ML的广泛应用,这种趋势也变得更加模糊。在这个世界上,指令集没有被定义,但软件和算法是定义的。“在这方面,系统架构师说,‘基于软件,现在构建最好的架构来执行它,”Stahl称。“顺便说一句,将其功率降至最低。’现阶段,系统设计已经转变为软件优先,这是一个有趣的变化。工程团队在考虑他们需要执行的软件堆栈时,客户更关注这些软件堆栈以及最适合它们的架构。”

优化软件架构

面向下游应用市场,以汽车市场为例,汽车中有许多非常复杂的ECU,嵌入式软件更是不可或缺。

“开发人员提出了一个添加功能的想法,” Siemens的 Morrison指出。“这位工程师必须将其要添加到代码中的字节数提交给德国汽车公司。他想添加的字节不到10个字节,但与编写程序的人产生了巨大的争执。在汽车领域,他们现在使用了很多32位处理器,内存比以前便宜得多,而且重点也更多地放在了车辆速度上。因为优化和定制的代码越多,花费的时间就越长。如果你可以添加一些功能强大的东西,但不必对其进行优化。也许你正在从过去的程序中重用这些功能,因此这产生了一些额外的代码,而不是高度优化的。但这项功能可以完成任务,即使会花费更多的内存或性能。重点已更多地转向可重用性、降低成本和缩短上市时间等方面。”

部分原因是更多的系统持续时间更长,并且正在小批量生产。因此,与手机不同,在手机中,芯片的销量可能达到数亿,而对特定领域应用的关注大大减少了这些数量。芯片制造商已经通过增加其设计的灵活性来进行调整,但也通过扩大他们向客户销售的产品来实现这一点,这是通过直接向OEM而不是Tier1或Tier2销售解决方案来实现的。

“我们在获胜组合和系统解决方案上花费了更多时间,”瑞萨电子执行副总裁Sailesh Chittipeddi表示。“这可以像特定系统的原理图布局一样简单,将微控制器/微处理器定时器件组合在电路板上,用于特定应用。一个很好的例子是房间加湿器,简单的布局可以全程使用。另一方面是系统解决方案,例如,若定义一个完整的机器人手臂,将所有设备放在一起,提供软件包,以及它如何连接到其他设备。这是我们以前从未做过的事情。过去,我们会出售某些应用所需的WiFi芯片。现在,我们将为市场提供完整的解决方案。”

嵌入式软件在这些类型的设备中起着至关重要的作用。“总的来说,软件架构是一个非常重要的话题,尤其是在嵌入式软件中,因为它扮演着主要角色,并且非常依赖于硬件,”Vtool嵌入式软件负责人Haris Turkmanovic说,他也是Belgrade大学电气工程学院电子系的助教。“同时,良好的嵌入式软件并不依赖于硬件。为什么?因为如果你创造了一个非常完善的软件架构,那么这个软件就不会依赖于硬件。”

对于Turkmanovic来说,一个好的软件架构必须由多层组成,包括驱动层、中间设备层、服务层和应用层。“一般来说,所有软件都必须具有这些层级架构。在嵌入式软件中,软件架构甚至更重要,因为通常会发生硬件更改的情况。如果将软件设计得很好,那么硬件更改则是次要的。但是,如果你没有一个计划和一个完善的软件设计,那么硬件更改就有很大的问题。在此方面,设计好软件至关重要,因为很多人都会使用它。版本控制系统还将管理软件开发变得更加容易,并且合并关键分支时的冲突数量将大大降低。”

第三个方面是何时创建软件分层。“假设划分是垂直和水平的。水平是上面提到的层,垂直分区设置为服务,它们是几个层的复合体。如果创建这样的软件,那么在最终的开发步骤中维护和测试该软件要容易得多,因为它是有组织和记录的。无论我们选择什么作为软件的基础,都必须在多个层中进行设计。但层的复杂性取决于主要程序流。是裸机还是RTOS基础软件?”

软件与硬件的权衡

Codasip的首席营销官Rupert Baines认为,很多硬件工程师并不了解软件的重要性。“在你正在设计的SoC的购买决策中,软件副总裁可能对你使用哪个IP核或供应商拥有最终决定权。如果她说,‘不,我们不会采用这个供应商,因为工具不可用,你不能使用那个内核。’硬件工程师可以说,‘但这是非常好的IP核。’这不重要。这位软件副总裁拥有更多的工程师,也面临更多困难,需要IAR、Lauterbachs、Seggers、LLVM和Clangs才能真正成熟。软件吃掉了硬件,即使作为一家通过许可硬件来赚钱的公司,最终都将聚焦于软件,软件才是重要的。”

这使得权衡变得特别棘手。为了便于对特定应用进行优化,软件可以基于硬件编写。但它也可以针对更多领域进行开发。

“就像工程学中,这是一种权衡,” Baines认为。“工程的全部意义在于优化目标,需要权衡开发效率与性能。对于现在的很多应用和大量程序,你试图做的事情很好理解,也非常标准,并且你希望利用已经存在的标准库和标准软件语言。五十年前,你可能写了自己的语言。如今,您将用C、C++、Python或Java或标准语言编写。如今,您用原始汇编编写几乎是不可想象的,因为编译器和工具链现在已经非常完善。您将使用现有的库和驱动程序。对于许多应用来说,这可能就足够很好地完成工作了。”

然而,这并不意味着硬件不那么重要。“它需要坚固耐用、低成本、节能等等,”Cadence的Thomas表示。“但是现在,由于各种原因,当你做一些特定的事情时,你可能没有能力出售它,所以人们希望制造一些更灵活的系统,能够做更多的事情。为此,您需要知道目标受众是谁才能销售更多产品。可能是你的系统进入了一个更大的系统,软件的差异化很重要。再加上人工智能和机器学习需要使用智能传感器进行检测的能力,以及由于安全性和隐私性等原因而在边缘工作的能力,这需要嵌入式系统具有越来越大的灵活性。进入这种类型的系统,你首先需要了解如何对其进行编程以及如何区分它。”

例如,考虑一个具有多个传感设备的智能家居,例如智能扬声器摄像头和其他安全和安全传感器。这些可用于感知特定的东西,然后做出决定。

“这可以在针对不同产品重新定位的设备中实现,但芯片本身可能是相同的,”Thomas指出。“在这种情况下,你需要为想要为智能设备开发应用程序的人开放你的软件,以做一些与智能门铃不同的事情。然后,您开始拥有一个嵌入式系统,该系统在设计方式上更加灵活,因此可以针对不同的产品。在此方面,软件开始更容易地接收高端应用程序,并拥有可以编程和重用的应用程序,以便针对更高端的软件开发人员。这可能是下层之上的另一层,用于解决所有硬件问题。”

缺乏统一方法

现阶段,嵌入式软件开发面临的难题是没有统一的方法。Vtool的Turkmanovic称:“这是非常有问题的。一般来说,人们试图遵循一些方法,但没有一个标准的方式来做这些事情。特别是如果它不是一些时间关键或安全关键软件,项目团队没有任何规则。这对于维护、升级和改进来说可能是非常困难的。当得到一堆代码,而无法可视化它时,我们很难理解它是如何工作的。这对于开发软件的工程师来说很重要。如果它位于中间的某个地方,则没有规则,因此可以归结为满足功能。这就是问题所在。”

他认为,对嵌入式软件采用系统的方法要好得多。“从项目的开始到结束,你必须花很多时间组织它。您首先需要考虑有问题的关键路径。某些东西是实时的还是不实时的?您有多少个中断例程?您将如何组织它们?您将如何确定它们的优先级?在开始阶段,我们需要考虑很多问题。很多问题都是由项目的要求决定的。它们中的大多数都受我们使用的平台限制,因为我们不能在每个平台上都使用RTOS,而只能用于某些特定平台。如果某些要求在时间上非常严格,那么您就没有太多选择。您必须遵循一个方向。如果资源有限,则还需要更好地组织代码。我们需要的是一个统一的嵌入式软件框架。”

在汽车领域,这被称为“面向服务的架构”, Siemens的Morrison认为。“在汽车领域,多年来在全软件中出现的某些架构的采用率越来越高,但在过去10到20年中,嵌入式架构中出现的是分层架构的概念。最近在汽车领域,这已经演变成一种面向服务的架构。当分层在成熟的软件开发程序中正确应用时,整个概念是你仍然可以获得一些软件,这将非常依赖于硬件,但应该有一个非常清晰定义的API,甚至可能是一个行业标准的API。例如,使用AUTOSAR,您可以获得MCAL(微控制器抽象层),它通常随半导体公司的芯片或SoC一起提供。这是因为 AUTOSAR 标准机构在定义它方面做得非常出色,因此您可以将不同的 AUTOSAR 实现放在那里,并且它们通常可以正常工作。这意味着您基本上将所有不可重用或特定于芯片的软件绑定在最低级别,然后构建在其之上。你把AUTOSAR放在上面,它大部分时间都在运行。当然,您必须对其进行验证。然后,在 AUTOSAR 之上,有非常清晰定义的 API。这意味着您可以从过去的程序中获取应用程序并重用它们,或者将它们移动到不同的ECU上。您可以在车辆中重新配置软件,并且使用AUTOSAR Adaptive,它将其提升到一个新的水平,更像是面向服务的架构,基本上可以找到所需的信息。这样可以提高可更新性。”

结论

随着嵌入式软件与传统软件之间界限逐渐模糊,软件开发人员的职责也在发生变化。

“传统上,嵌入式开发源于OEM或硬件开发人员,即硬件的生产者,”Arm物联网和嵌入式副总裁Mohamed Awad表示。“从历史上看,软件团队和硬件团队需要密切合作,可能会在一天结束时向同一个经理报告,共同构建产品。两者之间的边界现在开始变得模糊,我们看到很多云服务提供商或软件服务提供商,无论是ML还是其他用例,都希望访问端点上的所有计算,并在向大量无法控制的硬件设备交付软件时带来更多价值。”

为了使这些软件供应商能够提供这种价值并在所有硬件之上进行创新,必须有一定程度的一致性,以便他们能够实现规模化,并证明这些投资的合理性。Awad表示:“他们为设备开发预定硬件是没有意义的,这些设备可能只出货1000或10000台,即使它们已经达到了数百万甚至数十亿台。简化的流程在这里至关重要。情况是一样的,如果每个手机制造商都必须自主开发手机中的每个应用程序,而他们无法利用现有的应用生态系统。最重要的是,这些手机供应商的出货量只占其出货设备数量的一小部分。你可以想象这些生态系统会有多小,它们不会那么丰富。”

这就解释了为什么半导体生态系统中的许多参与者都团结在一个共同的框架周围,以便软件开发人员可以轻松地从一个设备移植到另一个设备,将软件从一个设备移动到另一个设备,并实现设备的简单可测试性,最终为软件生态系统创造规模经济。

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
ABS05-32.768KHZ-9-T 1 Abracon Corporation CRYSTAL 32.7680KHZ 9PF SMD

ECAD模型

下载ECAD模型
$1.17 查看
XLH735016.000000I 1 Integrated Device Technology Inc HCMOS Output Clock Oscillator
暂无数据 查看
AT17F16A-30CU 1 Atmel Corporation Configuration Memory, 16MX1, Serial, CMOS, 6 X 6 MM, 1.04 MM HEIGHT, 1.27 MM PITCH, GREEN, LAP-8
$29.47 查看

相关推荐

电子产业图谱

“TechSugar”微信公众号分享独家观点,做你身边值得信赖的新媒体,提供有深度、有广度的原创文章。