嵌入式开发在过去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%以上,因此详细的比较是有风险的。最后,作为一个研究过统计操纵的令人遗憾的深度(又一个隐喻)的人,在以前的职业生涯中做过定量调查研究和系统性能基准测试,这些数字仅用于娱乐目的。当然觉得是这样的。

应用程序重点和功能

在过去的十年里,嵌入式设计的主要应用领域发生了怎样的变化?尽管工业和消费类产品仍排在前五位,但汽车和物联网应用的设计已经开始占据主导地位(表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年出现的一些新技术,如无代码开发工具、量子计算和支持现场可训练神经网络模型的人工智能核,似乎会导致设计挑战的巨大转变。但是会吗?

嵌入式系统仍然需要工具来编写(或生成)代码,对于更复杂的异构多处理器硬件设计,可能需要这样做。这些设计仍然需要与物理世界接口,但接口的性质可能会远离传感器或协作对等设备的硬连线接口。对更多功能的需求将继续上升,从而推动对能够运行更复杂应用程序的硬件的更高性能和增强功能的需求。最终,新十年的嵌入式系统设计仍然需要更有效地与数据源进行接口,以最小的延迟执行更复杂的代码,并应对更复杂的安全威胁,所有这些都需要消耗来自超低功率源的最小电流。可能会使用截然不同的方法,但目标将保持不变。

嵌入式开发在过去20年中是如何演变的相关推荐

  1. [嵌入式开发模块]SHT30/20 温湿度传感器 驱动模块

    文章目录 前言 SHT30简介 概述 通信协议 驱动文件 SHT30Driver.h SHT30Recver.c SHT30Cmder.c 依赖 使用示例 更新历史 前言 干活中用到了SHT30,其实 ...

  2. 基于c语言的linux嵌入式开发入门

    前言 本文主要包含,c语言基本结构与语法.make及makefile的使用.main函数参数与返回值的说明.标准输入.输出.错误流的介绍以及linux管道的应用. 语言数据类型 联合体也有翻译为共用体 ...

  3. rust做嵌入式开发_Redox:一款纯用Rust语言开发的操作系统

    Redox:一款用Rust语言开发的操作系统 汪明军 崔广章 译 Redox是纯用rust实现的通用操作系统.目标是提供一个功能完整的类Unix微内核,既安全又是免费的.Redox操作系统兼容POSI ...

  4. 2013-2014嵌入式开发从业人员调查报告

    调查背景 在嵌入式.移动互联网.物联网等热门技术日益普及的今天,以实现智能化为核心目标的典型技术,已经成为了整个信息产业毋庸置疑的主旋律.特别是近1年,以智能家居.智能医疗.可穿戴设备等为首的大量智能 ...

  5. 重磅直播|嵌入式开发漫漫之路—从小白到技术骨干

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 大家好,本公众号现已开启线上视频公开课,主讲人通过B站直播间,对3D视觉领域相关知识点进行讲解,并在微 ...

  6. 嵌入式开发试题1-100

    嵌入式开发试题1-100题目1:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去掉不满足条 ...

  7. 嵌入式开发/调试辅助工具

    开发辅助工具开发环境组成通常开发环境由三部分组成: 构建环境:包括代码编写,程序编译,版本控制等功能. 调试环境:用于定位问题的辅助工具集 测试环境:用于验证目标程序是否满足用户要求的显性需求和隐性需 ...

  8. 合理的嵌入式开发学习路线

    最近网上好多新手问我,怎么样学习嵌入式开发?其实这个问题很复杂,因为嵌入式开发是个非常复杂的领域,既有深度,也有广度,是个软硬结合的领域...我研究的时间也不长,不过以后可能会研究RTOS这一块(最近 ...

  9. 嵌入式开发中常用的几种通信接口总结

    关注.星标公众号,直达精彩内容 在嵌入式系统中,板上通信接口是指用于将各种集成电路与其他外围设备交互连接的通信通路或总线. 以下内容为常用板上通信接口:包括I2C.SPI.UART.1-Wire: I ...

最新文章

  1. VC下提前注入进程的一些方法1——远线程不带参数
  2. 大学计算机基础课程报告python-基于Python的“大学计算机基础”课程教学设计.doc...
  3. facebook海量图片存储系统与淘宝TFS系统比较
  4. Linux 下Oracle Client JAVA JDBC 集成点滴
  5. 前端设定项目奖金有多少_华为资深HR:年终奖不是一个合理的奖金制度
  6. CXF学习(4) 处理无法自动转换的复合数据类型
  7. 关于ireport制作报表模版时的一些注意
  8. 【codevs1116】四色问题,深搜入门题目
  9. 7年前的200电话卡帐号
  10. Linux基础命令与进阶
  11. 各位学Python的要小心了!!!
  12. python 爬虫 爬取糗事百科段子
  13. SpringBoot电脑商城系统源码
  14. GA-T1400协议--人脸数据
  15. Linux Shell脚本教程(bash)
  16. 蓝牙sbc怎么解决_谈一谈蓝牙协议?
  17. java 右下角_java实现桌面右下角弹窗效果
  18. 计算机如何回到桌面,windows下电脑怎么回到桌面主页?
  19. csgo国服文件转国际服务器,CSGO国服怎样转国际服 1个打开项搞定
  20. 公司上市需要具备的条件有哪些

热门文章

  1. 2022-2028年中国防臭袜行业投资分析及前景预测报告
  2. Linux shell 学习笔记(1)— 文件和目录(查看、创建、复制、软硬链接、重命名及删除操作)
  3. html 实现动态在线预览word、excel、pdf等文件
  4. 显卡不够时,如何训练大型网络
  5. flash,tornada demo
  6. 将TVM集成到PyTorch
  7. MindSpore张量mindspore::tensor
  8. 基于Kaggle的图像分类(CIFAR-10)
  9. Python爬虫实战糗事百科实例
  10. python的服务器、客户端被拒绝访问_python – uWSGI服务器日志…权限被拒绝读取......