2019个嵌入式市场研究,持续的C/C++优势

2019 Embedded Markets Study reflects emerging technologies, continued C/C++ dominance

根据Eee Times和嵌入式技术在今年早些时候发布的2019个嵌入式市场研究,虽然物联网(IOT)、嵌入式视觉、机器学习和其新兴技术在开发组织中的重要性日益提高,但C和C++仍然是嵌入式开发者中的主要编程语言。

2019年嵌入式市场研究延续了20多年的传统,提供了美洲、亚太地区(APAC)和欧洲、中东和非洲(EMEA)嵌入式发展状况的详细快照。在这张快照中,研究提供了一系列关键领域的见解,从受访者当前的应用焦点和设计环境到关键硬件组件和设计技术的作用。以下各节说明了这些领域的亮点。

应用程序焦点

在半数受访者中,物联网发展已经被认为是重要的,预计在未来的项目中,物联网发展将得到相当大的关注,超过65%的受访者表示,将有一个或多个项目致力于物联网(图1)。

图1.  2019年嵌入式市场研究

即便如此,在一个连接性基本上是一个基线设计需求的行业中,安全方法的使用充其量是混合使用的(图2)。纯软件安全方法通常比基于硬件的安全方法带来更多的安全漏洞。然而,目前约有26%的设计都是基于软件安全的。也许更令人担忧的是,20%的设计完全没有安全功能。调查并没有探究这些设计的本质,让了解这些设计的目标应用程序的性质,因此这些系统中的实际风险是未知的。然而,任何嵌入式系统仍然容易受到来自连接相关安全漏洞的威胁。

图2.  当前设计中采用的安全措施——2019年的新问题。

也许这项研究的一个更显著的结果在于对使用机器学习能力的期望。已经有32%的2019年研究受访者表示目前正在使用机器学习方法,但55%的受访者正在考虑使用机器学习方法,这一数字在欧洲、中东和非洲地区的开发者中升至68%(图3)。

图3.  正在使用或正在考虑的先进技术。

当前嵌入式设计环境

虽然对IEEE或GITHUB等编程语言的更一般的调查表明Python、java和JavaScript的统治,2019个嵌入式市场研究表明C++和C++仍然牢牢地处于嵌入式开发的顶层(图4)。

图4. 编程语言的使用。

开发人员可能将C/C++代码与汇编语言的结合,一方面用于关键循环,要么与Python、Matlab和LabVIEW进行建模和算法探索。Python在人工智能(AI)开发中的迅速普及可能会使这些数字略有改变,因为其研究结果表明边缘计算系统和基于AI的方法的重要性日益增加。然而,目前,C和C++仍然是嵌入式开发人员中首选的编程语言。

嵌入式设计过程

嵌入式设计过程仍然以详细设计阶段为主,占设计时间的30%——这一数字在过去几年中基本保持不变(图5)。在2019年的一个新问题中,花费在安全或隐私风险评估上的时间量引发了对在嵌入式设计中构建安全性和隐私性的更高级别方法的作用的质疑。

图5.  花在不同设计阶段的时间。

操作系统

嵌入式Linux和FreeRTOS继续超越嵌入式开发中使用的其操作系统。然而,在未来12个月内可能使用哪些操作系统方面,地区差异明显,尤其是Android操作系统(图6)。

图6.  正在考虑的主要操作系统的区域性突破。

除上述章节外,2019年嵌入式市场研究还对微处理器、FPGA和开发领域(包括硬件IP重用、设计技术、系统级工具以及项目和版本控制)的当前和预期作用提供了详细的见解。

2019个嵌入式市场研究,持续的C/C++优势的更多相关文章

  1. IntelliJ IDEA 最新版 2019.2.4 激活 (持续更新)(含windows和Mac)

    IntelliJ IDEA 最新版 2019.2.4 激活 最新版激活包下载地址: 百度网盘 提取码: i28c 转载: Neo Peng Jetbrains系列产品 激活方式 同下述方式相同,只需要 ...

  2. Linux嵌入式系统与硬件平台的关系

    一. Linux嵌入式系统 操作系统是一种在计算机上运行的软件,它的主要任务是管理计算机上的系统资源,为用户提供使用计算机及其外部设备的接口.它存在的目的是为了管理所有硬件资源,并且提供应用软件一个合 ...

  3. 使用buildbot实现持续集成(转载)

    转载自:http://www.oschina.net/p/buildbot 使用 Buildot 实现持续集成 使用基于 Python 的工具实现持续集成的理论与实践 牛仔式编码的日子在大多数组织中早 ...

  4. 构建基于Jenkins + Github的持续集成环境

    搭建持续集成首先要了解什么是持续集成,带着明确的目标去搭建持续集成环境才能让我们少走很多弯路.持续集成(Continuous integration)简称CI,是一种软件开发的实践,可以让团队在持续集 ...

  5. CI持续集成

    CI持续集成 “我的TDD实践”系列之CI持续集成 写在前面: 我的TDD实践这几篇文章主要是围绕测试驱动开发所展开的,其中涵盖了一小部分测试理论,更多的则是关注工具的使用及环境的搭建,做到简单实践先 ...

  6. 我的TDD实践---CI持续集成

    “我的TDD实践”系列之CI持续集成 写在前面: 我的TDD实践这几篇文章主要是围绕测试驱动开发所展开的,其中涵盖了一小部分测试理论,更多的则是关注工具的使用及环境的搭建,做到简单实践先行,后理论专精 ...

  7. 32位嵌入式微处理器(processor)一览

    32位嵌入式微处理器(processor)一览 由于嵌入式系统的专用型与定制性,与全球PC市场不同,没有一种微处理器或者微处理器公司可以主导嵌入式系统.本文分析了当前市场上主流的一些32位嵌入式微处理 ...

  8. 【译文】用Spring Cloud和Docker搭建微服务平台

    by Kenny Bastani Sunday, July 12, 2015 转自:http://www.kennybastani.com/2015/07/spring-cloud-docker-mi ...

  9. 如何自行搭建一个威胁感知大脑 SIEM?| 硬创公开课

    如何自行搭建一个威胁感知大脑 SIEM?| 硬创公开课 本文作者:谢幺 2017-03-10 10:09 专题:硬创公开课 导语:十年安全产品经验的百度安全专家兜哥,手把手教你用开源项目搭建SIEM安 ...

随机推荐

  1. 病毒木马查杀实战第023篇:MBR病毒之引导区的解析

    前言 引导型病毒指寄生在磁盘引导区或主引导区的计算机病毒.这种病毒利用系统引导时,不对主引导区的内容正确与否进行判别的缺点,在引导系统的过程中入侵系统,驻留内存,监视系统运行,伺机传染和破坏.按照引导 ...

  2. ZOJ3261并查集逆向处理

    题意:       给你一些点,还有一些边,每个点上都有一个权值,然后有一些询问,分为两种, query a 询问与a直接或者间接想连的点中最大权值的是那个点,输出那个点,如果那个点的权值小于等于a的 ...

  3. Tomcat PUT方法任意文件上传(CVE-2017-12615)

    目录 漏洞复现: 漏洞利用工具: 漏洞环境:当 Tomcat运行在Windows操作系统,且启用了HTTP PUT请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将 ...

  4. 前端不得不了解的TCP协议

    背景 早期的网络是基于OSI(开放式系统互联网,一般叫OSI参考模型)模型,该模型是由ISO国际标准组织制定的,包含了七层(应用层.表示层.会话层.传输层.网络层.数据链路层.物理层),即复杂又不实用 ...

  5. 【vue-07】vue-router

    Vue-router官网 安装 vue-router是一个插件包,所以我们还是需要用npm 来进行安装.打开命令行工具,进入你的项目目录,输入下面命令. npm install vue-router ...

  6. CentOS安装Redis报错[server.o] Error 1

    原因 准备安装的Redis服务版本为6.0.8, gcc的版本为4.8.5,可能是gcc版本过低到导致的 解决办法 安装低版本Redis或者安装高版本gcc

  7. (一)RabbitMQ安装与基本配置

    [博主使用的环境是阿里云ecs服务器,操作系统为centos] 安装erlang环境 RabbitMQ底层是Erlang语言,因此要先安装erlang环境,就像你要运行Java程序就必须先安装JRE/ ...

  8. 还不懂 redis 持久化?看看这个

    Redis 是一个内存数据库,为了保证数据不丢失,必须把数据保存到磁盘,这就叫做持久化. Redis 有两种持久化方法: RDB 方式以及 AOF 方式 RDB 持久化 前言 RDB持久化把内存中的数 ...

  9. Scrum Meeting 3

    Basic Info where:三号教学楼 when:2020/4/27 target: 简要汇报一下已完成任务,下一步计划与遇到的问题 Progress Team Member Position ...

  10. xxl-job源码阅读一(客户端)

    1.源码入口 使用xxl-job的时候,需要引入一个jar,然后还需要往Spring容器注入XxlJobSpringExecutor <dependency> <groupId> ...