在过去 30 年中,嵌入式开发过程发生了很大变化。用於编码、编译和除错(debugging)的软体工具在不断发展,日益复杂和高度整合的硬体功能和行业趋势(例如低功耗、连通性和安全性)都要求整合新工具链功能,例如板级支援封装、驱动器和程式库等。
嵌入式开发之演化
不久前,大多数嵌入式系统都没有任何连通性,安全性也不在考量之列。这些系统目的是控制设备,例如工业锅炉控制器或家用洗衣机等。许多嵌入式开发人员学会了使用裸金属(bare-metal)机器代码技术对微控制器进行程式设计。使用操作代码进行程式设计非常耗时,令人费解且乏味。值得厌幸的是,下一步使用的组合语言(assembly language)减轻了早期开发人员负担,并为转向采用 C 等进阶语言铺平道路。
C 语言最初是与1980 年代初期 Unix 作业系统同步开发,旨在提供对记忆体资源高效、低级别连接,并映射到底层处理器机器代码指令,进而成为嵌入式系统自然选择。
为了鼓励采用他们的微控制器(MCU)和微处理器(MPU),晶片供应商开始致力於投资开发整合开发环境 (IDE) 工具链。开放生态系统概念并不存在,导致大多数开发人员构建和维护自己的程式库和函数集。此外,每个供应商的指令集架构都是独一无二,他们通常会出售驱动器、程式库和其他专有 IP 以配合设备使用。
时代发生了哪些改变!
当下嵌入式开发:如何实现
当下开始其职业生涯的嵌入式开发人员已经进入了一个非同寻常世界。整体来说,嵌入式开发行业是开放的。在Arm基於许可证的架构问世之际,许多晶片供应商发现自己在竞争日益激烈行业中背负着促进、推广和支援其专有架构之高昂成本。多年来,许多领先 MCU 和 MPU 供应商减少了基於自身专有架构的产品供应,并增加了基於 Arm 的产品阵列。借助於 Arm 核心方法,晶片供应商已从 Arm 架构的日益普及和 Arm 的研发投资中受益很多。这些供应商现在透过添加周边连通块、无线收发器、电源管理和类比功
能等方式,使他们的产品与其他 Arm 授权商实现差异化。
![图一 : 开发人员面临越来越复杂的硬体设备和大量功能,为了减轻这些负担,供应商现在正在投资於提供全面电路板级支援包和软体资源。(source:Mouser)](/art/2022/04/191052563450/p1S.JPG)
图一 : 开发人员面临越来越复杂的硬体设备和大量功能,为了减轻这些负担,供应商现在正在投资於提供全面电路板级支援包和软体资源。(source:Mouser) |
|
随着独立软体公司建立,业界转向 Arm 也标志着从供应商专有IDE 之转变。但供应商专有 IDE依然存在,在某些状况下,他们透过收购 IDE 初创公司可迅速提升器产品功能。
开发人员面临越来越复杂的硬体设备和大量功能,为了减轻这些负担,供应商现在正在投资於提供全面电路板级支援包和软体资源,例如可将低级硬体功能抽象为方便且直接的进阶功能调用开源库和韧体等。
Arduino和 BeagleBone 以及 Raspberry Pi 等类似单板电脑(SBC)的推出启动了开源开发时代。这些开发板构建了硬体和软体公司生态系统社群,并向创新者和学生开放了微控制器开发。Linux 成为许多 SBC 上主导作业系统,并且伴随 FreeRTOS 推出,即时作业系统的广泛采用得到实质性飞跃。
当下,嵌入式开发行行业包罗万象。为了进一步加快原型设计并缩短时间受限的开发周期,供应商提供了全面评估模组、开发板、软体开发套件和叁考设计。伴随工业物联网(IIoT)等确立了低功耗、电池供电连通系统等优先应用趋势,供应商已经为处理器内核和周边模组提供了额外睡眠模式。在快速回应应用中断同时,使处理器的待机和活动功耗特性实现最隹平衡已成为一项关键开发挑战。
低代码、事件驱动的脚本、Node-red 等语言以及 CoAP 和 MQTT 等羽量级通讯堆叠为嵌入式开发增添了令人兴奋一面。这些方法非常适合於采用资源受限超低功耗微控制器开发 IoT/IIoT 应用。
平台部署和云端 IDE推动嵌入式行业前进
![图二 : 对於工业自动化设备供应商而言,开发客制嵌入式系统并托管安全可靠云端计算基础设施是一项艰巨任务。(source:Mouser/Shutterstock)](/art/2022/04/191052563450/p2S.JPG)
图二 : 对於工业自动化设备供应商而言,开发客制嵌入式系统并托管安全可靠云端计算基础设施是一项艰巨任务。(source:Mouser/Shutterstock) |
|
嵌入式行业最近经历了一波硬体和软体解决方案整合的发展浪潮,其中之一是 Zerynth。这些系统可提供完整硬体平台和基於云端的基础架构方法,能够快速配置 IoT/IIoT 部署。例如,对於工业自动化设备供应商而言,开发客制嵌入式系统并托管安全可靠云端计算基础设施是一项艰巨任务。这需要大量时间,涉及相当高成本,并且需要获得熟练专业知识。而使用商用硬体则允许 IIoT 应用提供商透过软体功能使他们特性差异化,并可整合必要资料安全和加密功能。
伴随 TI Cloud Composer 和 Arm mbed 等许多 IDE 越来越多地走向线上,协作式嵌入式开发现在已经成为可能。一些基於云端 IDE 还支援共用私有和公共 GitHub 代码储存库,这是许多开源项目重要方面。多平台和多架构嵌入式开发平台(例如 PlatformIO)能够提供一个可行「一站式」协作替代方案,可以透过单一线上环境中完整的 IDE、储存库、除错器和静态代码分析工具来取代传统工具链。与此同时,独立 IDE 和MikroE 和 Segger等工具供应商正在改进他们的工具,以整合 RTOS 并支援RISC-V等新指令集架构。
未来发展?
在COVID-19疫情大流行期间,由於许多团队适应了远端工作,线上开发和协作平台的使用显着增多。早期迹象显示,这种趋势在可预见未来仍将持续。伴随嵌入式开发世界变得越来越虚拟,我们很可能会看到基於云端 IDE 和开发协作工具在来年包含更多功能和创新。
嵌入式工具供应商MikroE於2020年9月推出Planet Debug 服务。基於该公司的 Necto Studio IDE,他们不再需要开发人员桌面上的硬体目标设备。借助於嵌入式 Planet Debug,开发人员可以随时随地远端进行程式设计和除错。 MikroE 的远端 MikroE 开发平台可在 Necto Studio 中使用,并且视讯源会即时显示电路板正在发生的事件。
业界对於虚拟硬体平台采用还处於早期阶段,但创新则是嵌入式开发社群之核心理念。
(本文作者Mark Patrick任职於贸泽电子)