嵌入式开发在过去20年中是如何演变的
How embedded development has evolved over the past two decades
与任何开发领域一样,嵌入式系统开发就像大海:深海洋流基本上保持不变,而表面却很少如此。冒着淹没在比喻中的风险,观点是,嵌入式开发的基础现在基本上是一样的,那时工程师必须在硬接线微型计算机上打开开关来运行机器代码。像那些工程师一样,仍在努力监控外部事件并做出适当的反应。到那里的方式一直在变化。
或者使用最少的硬件和方法来构建更好的嵌入式系统。作为对这种变化的某种程度上的衡量,Embedded 1999年、2009年和2019年的调查提供了过去20年嵌入式开发是如何演变的一个快照。
事实上,每个调查的问题本身都反映了这种变化。1999年的调查中,有大量的问题涉及交叉编译器、面向对象的设计方法和在线仿真器,但对操作系统的问题则相对较少。到了2009年,这项调查已经放弃了那些特定的部分,包括了更多关于多处理器设计、操作系统和特别是嵌入式Linux的内容,但是像物联网(IoT)和人工智能(AI)这样的话题并没有被任何人关注。在2019年的调查中,这些主题以及安全性都表现出广泛的兴趣和积极的使用。
很难尝试比较这些调查的细节,因为到2009年,调查方法发生了重大变化。在某些情况下,同一个一般问题被扩展到多项选择题,允许有多个答案。这增加了任何解释的不确定性。在设计功能的讨论中可以看到这一点。另外,下面的一些结果缺乏1999年调查的相应数据,所以只需看看2009年和2019年的数据。最后,请记住,结果的误差范围通常在3%到6%以上,因此详细的比较是有风险的。最后,作为一个研究过统计操纵的令人遗憾的深度(又一个隐喻)的人,在以前的职业生涯中做过定量调查研究和系统性能基准测试,<disclaimer>这些数字仅用于娱乐目的</disclaimer>。当然觉得是这样的。
应用程序重点和功能
在过去的十年里,嵌入式设计的主要应用领域发生了怎样的变化?尽管工业和消费类产品仍排在前五位,但汽车和物联网应用的设计已经开始占据主导地位(表1)。2009年,称之为datacomm的设计在2019年被归入通信领域,这可能是一个稳妥的赌注。
Table 1: Top 5 Application segments (% respondents)
表1:前5大应用领域(受访者百分比)
在过去的二十年里,设计的本质是如何改变的?1999年的调查提出了多个关于将Web技术融入设计的问题。在研究1999年的调查中特别有趣的是,43%的受访者表示不打算这么做,但14%的人说确实打算这么做。不知道这个问题中“Web技术”到底是什么意思,但希望没人试图在系统中嵌入httpd服务器。
更一般地说,表2显示了三个关键设计能力是如何演变的。唯一真正的变化是互联设计的巨大提升,从千年之初的35%上升到10年前的90%多一点。(认为调查方法让网络化和无线化成为可能互换的,但从统计上看,2009年和2019年的联网设计水平相同。)
类似地,嵌入式开发人员已经开发了至少10年的电池供电设计。有时,业界忘记了电池供电的设计早在物联网和可穿戴设备兴起之前就已经存在了。
Table 2: Key design capabilities (% respondents)
表2:关键设计能力(%受访者)
程序设计语言
记住C/C++不一定是嵌入式开发的主要语言(图1)。考虑到每项调查中隐藏的其一些响应,而且高性能处理器的出现很可能减少了对汇编级代码的需求。好吧,而且事实上,只有37%的项目如期完工——尽管2009年曾表示希望修复开发过程,但这一数字在2019年并没有显著变化(见下图1)。
图1:顶级开发语言(%受访者)。
到2009年底,开源操作系统(OS)开始取代商业操作系统的使用。到2019年,这一趋势仍在继续。开放源码软件的兴起并不仅仅是因为开源操作系统的兴起。定制/内部开放源码软件也继续得到更多的使用(图2)。
图2:操作系统类型(%受访者)。
处理器体系结构
尽管在过去的十年中,32位体系结构的使用保持不变,但64位体系结构却得到了显著的提高(图3)。有人可能会怀疑,这是一个简单的进化趋势,因为开发人员在寻找更高的处理器性能和更高效的内存周期(包括指令获取),而开发人员转向更宽的位宽度(从8位到16位、32位到64位)。
图3:处理器架构(%受访者)。
独立处理器与多核设备
也许2010年最明显的趋势是从多处理器芯片到多核设备的设计缩减——从具有相同处理器的多个芯片到同质的多核设备,或者从具有不同处理器的多个芯片到异构多核设备(图4)。
图4:单个处理器芯片与多核处理器(受访者百分比)。
处理器决策驱动程序
二十年来,驱动处理器选择的主要因素没有改变(图5)。软件开发工具的可用性仍然是首选。在面板上切换机器代码并不是任何人认为的好时机。有趣的是,自本世纪初以来,对体系结构的熟悉已经失去了重要意义,而且成本和IO/外围设备能力的重要性也在不断下降。
图5:处理器选择因素(%受访者)。
技术挑战
最后,对于即将到来的重大技术挑战,人的看法发生了怎样的变化?如果看看2009年和2019年调查中列出的前五大挑战,集成、代码复杂性和软件工具仍然是主要关注的问题。有趣的是,在过去的十年里,人对开发过程的担忧已经消退,取而代之的是对低功耗和安全性的担忧。事实上,安全担忧的上升和为缓解威胁而采取的措施构成了2019年调查的一大组成部分。2009年,只有3%的受访者表示担心安全问题。如前所述,2009年和2019年在统计上类似的低准时率表明,2019年开发过程中相对重要性的转变与这方面的任何明显成功关系不大,而更多的是与出现更多关键问题有关。
图6:最大的技术挑战(%受访者)。
那么这对2020年意味着什么呢?
可以从这些结果推断出软件开发工具和代码大小管理等问题仍然很重要,处理器特性(如性能和外围设备)的相对重要性将下降。另一方面,在2020年出现的一些新技术,如无代码开发工具、量子计算和支持现场可训练神经网络模型的人工智能核,似乎会导致设计挑战的巨大转变。但是会吗?
嵌入式系统仍然需要工具来编写(或生成)代码,对于更复杂的异构多处理器硬件设计,可能需要这样做。这些设计仍然需要与物理世界接口,但接口的性质可能会远离传感器或协作对等设备的硬连线接口。对更多功能的需求将继续上升,从而推动对能够运行更复杂应用程序的硬件的更高性能和增强功能的需求。最终,新十年的嵌入式系统设计仍然需要更有效地与数据源进行接口,以最小的延迟执行更复杂的代码,并应对更复杂的安全威胁,所有这些都需要消耗来自超低功率源的最小电流。可能会使用截然不同的方法,但目标将保持不变。