设计

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

字号+ 作者:Henrik Flodell 来源:eettaiwan 2016-11-15 15:13

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

 
再也没有比现在更容易创办一家硬件公司了。被许多人称为嵌入式运算未来的物联网(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堆栈的两倍。
 

图3:Atmel Data Visualizer可以辨识由程序代码特定部份导致的功耗突波 (来源:Atmel)
 
提示与技巧:
 
新一代的微控制器都配备了紧密耦合的内存(TCM)功能,可为CPU提供单周期存取,从而提升外围装置发出的高优先级延迟关键型请求。物联网开发人员可以校准要求零等待执行性能的程序代码数量,从而将TCM资源指定给这些程序代码区段和数据区块。
 
判断哪一部份的软件程序消耗太多功率是相当困难的。然而,透过像Atmel Power Probe等工具有助于开发人员快速确定哪一部份的程序代码的能耗较高。
 
接着,采用像Atmel Data Visualizer插件这一类工具,可以分析物联网应用的功率使用情况,作为标准除错过程的一部份。实时的功率测量可以在应用执行期间进行撷取,功耗使用情况也可以轻松地与应用程序的来源码直接关联。另外,藉由点选功率样本,该工具可以突显采样时执行的程序代码,使其易于针对低功耗应用实现优化,它还能以示波器的方式观察GPIO和UART等讯号。
 
新一代的高能效微控制器可以分别在工作和闲置期间智慧地通电和断电,并在睡眠时消耗极低电流。以电池供电的物联网应用有助于为永不断电的传感器作业节省大量功耗,其方式是唤醒硬件、执行任务以及回到睡眠模式。
 
云端与海量资料
 

云端和海量数据是物联网软件难题中第三个同样重要的部份。针对云端通讯的软件协议堆栈必须完成诸如装置配置、文件传输以及基于规则的数据分析与响应等任务。
 
首先也是最重要的,强大的数据分析功能为来自传感器、机器或连接云端的装置所产生的数据,发挥着创造实际价值的重要作用。其次,安全功能将透过应用白名单阻止未授权的程序代码,确保经验证的真实数据连接到云端。
 
中、小规模的物联网系统面临着获得且高效率使用软件工具链进行数据撷取、处理和分析的巨大挑战。此外,它们还要求软件生态系统能够应对高度分化的物联网设计领域。
 
这也表明了端到端解决方案在物联网环境中为什么至关重要,以及正确的工程决策在物联网软件生态系统中极其关键的原因。业界需要全新的设计工具以应对大量的连网传感器需求,这些工具将有助于中小规模的物联网设计团队应对云端服务不断增加、从而提高软件开销的问题。
 
提示与技巧:
 

一般来说,云端通讯超出了许多物联网产品开发人员的核心专业知识范畴,因此这些开发人员与基于云端的物联网平台供货商展开合作将更有意义。基于云端的物联网套件包括商业级嵌入式软件、用于嵌入式装置的SDK、物联网参考设计、装置和应用API以及高度可扩展的通讯服务。
 

为了能够快速部署连网装置,开发人员提供现成可用的组件连接库,并使其作为初始技术评估过程的一部份显得越来越重要。
 

诸如Atmel等公司与多家端对端云端解决方案供货商的合作,有助于为开发人员解决这些方面的所有问题。云端生态系统的合作伙伴们每一家都有自已的特色功能,很容易就能找到满足特定使用案例和需求的解决方案。






相关文章
  • 物联网引发嵌入式视觉革命

    物联网引发嵌入式视觉革命

    2018-07-07 11:25

  • 物联网用户体验设计:四个物联网产品分析

    物联网用户体验设计:四个物联网产品分析

    2018-04-19 13:46

  • 5个重要的物联网用户体验设计策略

    5个重要的物联网用户体验设计策略

    2018-04-17 07:15

  • 物联网产品用户体验设计的5个关键

    物联网产品用户体验设计的5个关键

    2018-04-10 14:07