物联网设计:软件挑战及其应对之道

日期:2018-06-04 09:55:00 作者:admin 来源:未知

再也没有比现在更容易创办一家硬件公司了。被许多人称为嵌入式运算未来的物联网,如今被视为一种更可负担的软、硬件融合平台。然而,于此同时,软件的复杂性又使得物联网设计过程成为“适者生存”的经典案例。

 

 

 

 

 

物联网设计:软件挑战及其应对之道

 

 
再也没有比现在更容易创办一家硬件公司了。被许多人称为嵌入式运算未来的物联网(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的目标,因此具有无与伦比的灵活性。
 
程序代码规模和密度
 
对嵌入式设计者来说,同时影响硬件和软件效率的另一个关键挑战是程序代码的规模和密度。一方面,物联网系统要求更高的智能,这将导致更多的软件和算法;另一方面,物联网解决方案还必须具有低成本和低功耗的优点。
 
物联网应用很容易就堆积成千上万行程序代码,因此除了埋头编写应用程序代码外还有大量的任务必须完成。程序代码的数量增加意味着需要更多的闪存(flash)和RAM,进而导致更大且更昂贵的芯片。这不仅增加了物联网设计的成本,同时也提高了功耗。
 
在物联网设计领域,如果执行速度是管理软件复杂性的关键指针,那么能效将与大量程序代码的使用密切相关。对于新手来说,可以利用传感器网络程序代码将传感器数据移动到物联网边缘节点或网关。
 
另外,用于以太网络控制器的TCP/IP协议堆栈通常要占用50KB到100KB的空间。同样地,诸如蓝牙Wi-Fi、ZigBee等连接链路带来了由网络管理、认证和加密组成的协议堆栈,所需的内存空间将是TCP/IP堆栈的两倍。