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