物联网嵌入式软件设计的挑战及应对之道
扫描二维码
随时随地手机看文章
再也没有比现在更容易创办一家硬件公司了。被许多人称为嵌入式运算未来的「物联网」(IoT),如今被视为一种更可负担的软、硬件融合平台。然而,于此同时,软件的复杂性又使得物联网设计过程成为「适者生存」(survival of the fittest)的经典案例。
物联网设计无法「一劳永逸」,因为多样化的传感器和连接解决方案要求新的设计理念。另外,物联网项目一般被认为具有高性能、低成本和低功耗等特点,而这些特性都和嵌入式软件作业的某个方面密切相关。
例如,以高性能和低成本的特点而言,这意味着重复利用前项项目的可能性非常有限,软件工程团队也不可能因此而按比例扩增。由于无法随意扩大软件团队和提高项目的成本预算,物联网产品开发人员只能寄望于新一代的工具链,协助他们实现更高的软件生产力。
图1:在异质的物联网设计中,全方位的软件工具链至关重要 (来源:Atmel)
打造物联网设计必须善于权衡折衷,一方面也因为其中存在许多可变动组件,设计工程师承担不起先打造次系统后再观察是否有效作业的后果。而如果从头开始设计不仅增加项目成本,也会对于异质的物联网设计世界带来更严格的上市时间限制。
因此,物联网设计解决方案——从传感器的数据撷取到云端的数据分析——都要求必须提早在工程师为物联网产品进行芯片设计之前先进行设计验证。因此,无疑地,在处理伴随以无缝方式连接大量装置的挑战而来的复杂过程中,端到端的软硬件平台和连接解决方案套件至关重要。
本文将讨论物联网设计领域中的主要软件挑战,并介绍正确的工具链选择如何有助于因应这些嵌入式设计挑战。文中主要关注于物联网软件生态系统中的三大关键领域,以及引导思考如何以高效和高性价比的方式执行软件作业。
软件复杂性在嵌入式设计项目中,「硬件-软件」任务的比重分配一般是40:60。然而,针对物联网设计项目,更偏重于软件生态系统。
为了实现更高性能以及增强联机能力、绘图显示和云端运算等方面的功能,物联网开发人员正从8位和16位微控制器(MCU)转向32位组件。
这要求新的软件运用平台,以便高效率地执行通讯和云端运算协议堆栈。然后执行诸如实时采样传感器数据、组件配置、安全密钥、应用程序以及数据分析等任务。
另外,物联网设计中有许多软件涉及TCP/IP等通讯协议堆栈以及SSL、TLS等安全工具库;这些软件的编写必须符合特定的标准。这一类软件组成在很久以前即已编写,并经过时间的进展变得日益完善,因此,对于时间紧迫的物联网开发人员来说,如果还要重新编写而不善加利用这些现有软件,实在没什么道理。
事实上,从头开始开发这类软件可能面临的风险是发现一些现实中曾经出现过并已解决的问题。
图2:面对物联网设计的复杂性,建立完整的软件生态系统至关重要 (来源:Atmel)
提示与技巧:
· 因应物联网应用建置更多功能带来的软件复杂性,集成开发环境(IDE)是第一道防线。
· 当物联网设计者为其应用增加服务时,与其相关的软件部份和驱动程序会自动增加至物联网设计中。举例来说,如果一位嵌入式开发人员在其设计中增加了一个USB组件,Atmel Software Framework (ASF)会自动将底层的USB驱动程序加入设计中。
· 透过使用诸如Atmel START这样的在线软件配置和部署引擎,能够进一步加快嵌入式软件的创建。Atmel START是一种基于网络的工具,让开发人员能以图形化的方式选择和配置软件组件,并将其整合于所需的硬件和中间件等资源中。这种工具完全独立于操作系统,在使用前也不需要在使用者的PC上进行安装。此外,它所产生的项目可以成为任何嵌入式IDE的目标,因此具有无与伦比的灵活性。