在过去两个世纪,硬件编程已取得了巨大进步,19世纪早期发明的提花织机系统可以被看作是第一个工业规模的硬件编程案例。工程师们通过使用一连串的打孔卡片系统来设置他们想要编织的图案(参见图1)。这一发明使发明家JosephMarieJacquard成为纺织业的知名人物,并展示了硬件编程取得很大进展。如今,他的名字已成为他在织布机上制作出的织物类型的代称。
图1.提花织机使用一系列打孔卡片来简化制造具有复杂图案的纺织品,如锦缎、绫和马特拉塞提花织物
近200年见证了向更可编程硬件发展的趋势。机械自动化首先转型为可编程,随后转向机械电子和电子逻辑,最后由微控制器、微处理器和软件实现了嵌入式控制。今天,各种机器和设备的可编程性取决于不同的应用和行业,涵盖从完全不可编程的固定功能设备到完全可编程和可升级的设备,如智能手机等。
传统的可编程硬件设计方式很大程度上沿袭了工程设计方式,在某种程度上,嵌入式设备是在模拟过去使用机械或机电方式完成的工作。公用仪表就是一个很好的例子:起初,电表简单取代了机械仪表,使用LCD显示器代替印着号码的转轮以优化成本和提高可靠性,之后又增加了更多功能,如自动抄表加了进来以减少了运营成本而没有改变仪表的用途或使用场景。
将嵌入式软件或实时软件应用到这些设备需要专业技能,而这些知识在大学的课程中是很少学到的,一般在工作上才能学到。嵌入式软件开发和硬件开发一样需要大量的专业知识,原因有二。首先,修复嵌入式软件错误成本非常高,因为设备很难升级。其次,许多嵌入式设备必须符合严格的安全规范,这需要额外的专业知识和时间资源,以确保符合IEC61508、IEC62304、UL60730-1H、CSAE60730-1H、IEC60730-1H、UL60335-1R、IEC60335-1R、UL1998等规范。
然而,在物联网(IoT)的趋势推动下,嵌入式软件开发模式正在发生一场无声的变革,并且每天都在不断发展壮大。随着设备间的互联日益紧密,这些设备突然就全面开放了。好的物联网设备必须允许开发人员必须能够通过定义良好的API进行访问,如NEST、Fitbit和Withings(诺基亚)数字健康等应用。相反,任何联网设备都可以访问云端近乎无限的资源。随着语音识别、人工智能和个人助理功能(如亚马逊Alexa)越来越普及,这些给传统嵌入式设备带来了新的应用空间。
因此,新一代开发人员(互联网开发者社区)开始研究这些新设备。他们从开发板入手,使用他们所擅长的工具开发——ObjectOriented编程、API、脚本和框架(如Java、JavaScript、Python、Lua、JSON和RESTAPI)。为了验证嵌入式开发的易用性,Arduino平台(基于Wiring和C++)对对象语言概念(如方法和属性)进行普及。RaspberryPi让每个人都可以使用Linux和Python。它们教用户如何使用包含预定框架的集成工具,让编写简单的应用程序轻松得像“在公园里散步”。
这个全新的开发者社区正在重塑嵌入式的世界,使得硬件趋于“软件化”。他们迫使嵌入式工程师像软件开发人员一样研究其他对IT系统和Web应用程序有效的技术。例如,瑞萨电子的合作伙伴之一MediumOne,这家初创IoT公司能够利用云端的Python脚本对现场设备进行编程,这简直令人难以置信。
重复做已经做过的事情的时代已经过去了,嵌入式行业有能力彻底改变定义和设计产品的方式。在当今激烈的市场竞争中,工程师必须善于重复使用经过验证、具有高抽象度的产品化的软件组件。以前,这些组件主要由特定的公司提供而且非常昂贵,不过一些成本较低的替代方案让他们更容易被用户获得,例如开源方式,虽然开源同时也会带来未知的质量问题和其他风险。另一种选择是与芯片制造商合作,他们会将专业软件与其硬件设备集成在一起,纳入统一的平台成本结构。
这种“软件化”趋势会将传统固件开发人员转变为一个非常专业化的群体,就像硬件开发人员现在已经是嵌入式开发团队的一个专业的细分部分。他们的职责是确保在硬件上能够运行完整的电路板支持包(BSP),并且帮助越来越多的软件开发人员使用框架和高级语言编写应用程序和脚本。
这种趋势还拓宽了嵌入式开发人员的职业道路。以下是核心知识帮助适应这种转换:
-了解如何使用中间件和RTOS,这些是成为硬件工程师的基本知识要求。
-学习使用架构。汽车开发使用Autosar,工业开发人员可以从嵌入式Linux开始,例如从开发一款Android或IOS应用程序,甚至是MinecraftMod,来理解架构开发好的方式。
-研究开发板。虽然看起来像玩具,但它们提供的可能性令人赞叹。
-如果想训练软件方面的技能,可以尝试使用C++、Java和ObjectiveC等对象语言,并尝试使用XML等标记语言以及JavaScript、Python或Lua等脚本语言。可以先从移动应用程序或Web入门,很快就会接触到使用更小的微控制器的嵌入式选项。
-熟悉RESTfullAPI和JSON数据格式。它们是互联网通信的基础,大多数物联网服务都会使用到其中一种。
开发者社区提供互动的同行交流,可以用来提升软件技巧,特别是围绕着新的嵌入式框架进行合作。
对于用户来说,可以决定加入变革并成为一名应用软件开发者,挑战更高级别的框架,也可以选择留在硬件/固件层面,而此时,了解软件开发人员的需求也将成为物联网时代嵌入式工程师的基本要求。