开发嵌入式软件并不像以前那么简单。对许多开发团队而言,创建独立设备 直是 项挑战。在物联网时代,我们开始连接所有东西 - 包括牙刷 - 系统的复杂性正在飙升。传统的,不连贯的开发人员发现,为了取得成功,需要解决多个新的挑战:
挑战1 - 连通性
这听起来很简单,但有很多不同的方式可以连接到互联网。开发人员可以通过WiFi,以太网,蜂窝,LoRa,蓝牙桥和许多其他来源进行连接。每个都有自己的优点和缺点,以及开发人员需要学习和理解的不同软件堆栈,以使硬件正常工作。这甚至不涉及使用什么协议的其他软件考虑因素,例如UDP,COAP,TCP / IP和其他几种协议,或者是否同时使用多个协议。然后是学习和使用TLS和/或MQTT的挑战,并了解当你投入服务器时这 切是如何工作的。当然,开发人员可以使用预 存在的软件堆栈来帮助减少挑战,但是他们仍然需要了解正在发生的事情,以防出现故障或需要修改。
挑战2 - 通过空中更新
现在设备 终连接到互联网,我们可以远程更新其固件,这听起来是个好主意。使用独立设备,开发人员过去只需将新固件映像发布到安全站点,然后通过电子邮件将所有客户发送给“来获取它!”使用物联网,软件更新只会奇迹般地出现并在其上执行拥有。即使在涉及数千个设备的小型部署中,开发人员也需要弄清楚如何:
生成固件更新作业
保护他们的更新
验证它们来自可信来源
如果出现问题,请回滚更新
确定何时更新设备
这是开发人员现在需要了解的所有耗时,棘手的业务,以便成功部署他们的产品。
现在连接的设备连接得很好,互联网上的任何东西都可以看到它们。因此,开发人员不仅需要了解如何连接,还需要了解如何保护其设备免受不断变化且变得更加复杂的安全威胁。安全性不是可以在设计周期结束时添加到系统中的东西。而且这不是可以在 夜之间学到的东西。需要仔细考虑如何对系统进行分区,隔离以及需要保护哪些信息。开发人员需要清楚地确定他们的系统需要多么安全。毫无疑问,电动牙刷的安全性远远低于智能电表的安全性。
挑战4 - 调试
随着更多团队构建连接设备,复杂性也会增加 调试所花费的时间也很可能会增加。随着开源软件和其他软件包的集成,奇怪的和新的行为肯定会导致系统,除非它们都被设计为 起工作。嵌入式调查显示,开发人员平均已经花费了40%的时间进行调试。调试在每个嵌入式项目上都需要花费大量的时间和金钱。出于这个原因,开发人员必须了解他们可用的所有调试技术以及如何 防止这些技术。
挑战5 - 变化率
它可能只是我,但在我职业生涯的前10年,感觉就像我们设计嵌入式系统的方式和我们使用的技术相对相同。当然,每年都会出现 个功能更强大的处理器,但这种改进是渐进式的。在过去五年多的时间里,可用技术和他们需要做的事情大幅增加。它始于连通性,但它正迅速扩展到安全性,还包括人工智能和系统。开发人员开始发现可用技术的变化速度超过了他们学习的速度。
这些是我看到开发团队开始从设计独立设备转向连接设备时遇到的主要挑战。这些挑战当然不是不可克服的。在许多情况下,解决方案已经以各种形式存在。诀窍在于开发人员和团队如何加快速度,然后维护每个开发人员所需的新技能。
我还忽略了其他挑战吗?请评论您在设计中遇到的挑战以及您尝试克服这些挑战的来源。