物联网(IoT)代表着一个重要的开展趋势,逐步将日常日子中的各个方面相互衔接在一起。不同于前期的路由器等无线设备(每个房间或许办公室装置一个)在数量上的局限性,物联网将会十分深化的渗透到方方面面,并且可以衔接很多的设备。简略举几个比如,譬如在一个家庭环境中,咱们可以长途锁门、开关窗布、操控照明以及办理温度和湿度等等。
物联网规模化布置面对着很多应战,例如:很多设备近距共终端和巨大数量的设备互连。这些应战催生出对无线(OTA)固件晋级的需求,它将是物联网体系必不行缺的一个组成部分。OTA的有效性已在许多运用程序中得到验证,例如手时机经过定时晋级来接纳新功用和修补缝隙。
依据BLE的OTA固件晋级功用相对而言是一个新生事物,试想,将一个beacon布置在一个大型商场中以推送在展的产品信息。这些beacon的方位有或许难以触及,并且它们的巨大数量也让用户不或许在布置后对它们进行逐一编程。因而,当有新功用或需求修补的缝隙出现时,OTA固件晋级就会成为一个重要的省时功用。
关于物联网而言,有三大原因正在推升商场对依据BLE的OTA固件晋级的需求:
- 广泛和品种各异的设备:设备的数量和品种在分布式网络中扮演重要人物,如体育场智能照明运用。一个规范OTA接口可保证其固件晋级架构通用于不同的节点。因而,尽管一个大型泛光灯和一个走廊灯在功用上不同,但一个依据BLE的规范OTA接口可以在它们之间通用。这意味着,向这些品种各异的设备推送新固件的主机设备可以是一个通用渠道。一起这还意味着,可以在一个操控室中晋级体育场中所有不同类型的照明灯,而不是对它们进行逐一晋级。
- 不断改变的需求和新功用:物联网是一个敏捷改变和开展的商场,新的产品需求和BLE功用不断涌现。例如,安全要挟和隐私走漏是物联网设备办理范畴面对的最大应战之一。为了防备病毒进犯,设备固件可经过OTA固件晋级流程取得最新补丁和更多安全算法。任何物联网体系都由两个部分组成:硬件和固件。在依据SoC的运用中,OTA固件晋级功用不只可以更新固件,并且还能重新装备片上硬件资源。
- 急迫的产品上市需求:物联网体系的规划周期很短,而商场需求继续创新和布置最新功用。一个总的开展进程是:对硬件进行过度规划,以便在一个较长的时期内满意不断升高的商场需求。OTA固件晋级可完成渐进式布置。例如,一个恒温器体系开始可以只布置一个热传感器完成快速布置,之后再布置湿度传感器。请注意,这种办法使得硬件规划成为一个深思熟虑的进程,在架构阶段从硬件视点考虑了未来的布置。
物联网范畴具有多样性,运用和终究解决方案需求也是如此。某些产品垂青本钱,而另一些则异乎寻常,旨在界说新的细分商场。为了坚持灵敏性,OTA bootloader(引导加载程序)架构应能习惯不同的需求。下面咱们讨论这种灵敏性的驱动要素和架构选项。
尽管OTA固件晋级是物联网运用的福音,但产品团队也有必要留心和防止一些圈套。现场晋级固件的才能外加急迫的上市需求有或许给团队带来压力,迫使其太快发布固件。例如,大规模布置产品的比赛或许让营销人员依靠以下现实:往后可以更新固件。这有或许导致企业发布不稳定、未经过全面验证或优化的软件或产品。产品团队应细心权衡这些决议计划的影响,经过运用约束条件到达不过度运用OTA的意图。此外,频频更新也或许不受终究用户的欢迎。
OTA的根本原理
让咱们了解一下OTA固件晋级的原理。就根本原理而言,OTA与UART 引导加载程序或USB 引导加载程序等其它引导加载程序没有什么差异。图1显现了一个可晋级、依据固件的体系的根本架构。
图1: UART 引导加载程序体系
如图所示,方针设备的非易失性存储器分为两个区:– 引导加载区和运用程序区。存储器的引导加载区存储代码,担任:1) 设备的引导操作;2) 查看主机是否有一个供可引导加载区运用的更新后的固件映像;3) 经过一个UART接口接纳更新后的固件映像;4) 将更新后的固件映像写入存储器的可引导加载区。存储器的运用程序区是担任界说体系功用的实践运用代码。
与此相似,为了了解OTA固件晋级,可将存储器分为引导加载区和运用程序区。与UART 引导加载程序比较,此处最大的不同是用于从主机接纳新固件的接口。OTA固件晋级运用一个无线通讯接口接纳更新后的固件映像。取决于详细运用,逐一接口或许是WiFi、ZigBee、蓝牙或任何其它无线接口。不管何种接口,其进程和根本原理都是相同的。
现在,蓝牙低功耗(BLE)规范无所不在,由于它功耗较低,并且取得了大多数PC和手机的支撑,这种遍及程度使其成为物联网运用的首选。提到这儿,BLE是一个不断演进的规范,简直每年都有一个新版别发布,其间包括更多新特性,以满意物联网运用不断改变的需求。商场中的各大芯片厂商正在打开一场比赛,推出遵照新版规范的解决方案。大多数状况下,芯片厂商在几个BLE协议栈、IDE版别中支撑这些特性。此外,规范的快速改变给版别之间留下的测验时刻也很短。因而,芯片厂商发布的每一个新的BLE协议栈版别一般都会被客户反应存在缺点,或由内部团队在测验期间发现缺点。因而,当运用BLE晋级物联网设备时,不只运用代码需求晋级,中心BLE协议栈或许也需求晋级。一个合理、牢靠的引导加载程序架构应能支撑这些不同的运用,并且应满意灵敏,可以满意不断改变的运用需求。
关于依据BLE的设备而言,有两种OTA bootloader架构:
固定协议栈OTA bootloader
可晋级协议栈OTA bootloader
固定协议栈OTA bootloader – 在一个固定协议栈OTA bootloader体系中,协议栈不晋级,只能晋级运用固件。协议栈存储在存储器的写维护/引导加载程序区。图2显现了一个典型的固定协议栈OTA bootloader体系。
图2:依据BLE的固定协议栈OTA bootloader
固定协议栈OTA bootloader的长处是:晋级固件的时刻较短,由于只能晋级运用代码;其缺点是:即便布置后发现重大问题也无法晋级协议栈代码。
可晋级协议栈OTA bootloader – 在可晋级协议栈bootloader体系中,协议栈和运用固件都能晋级。尽管不同厂商完成bootloader的办法不同,但在一个典型的可晋级协议栈体系中,存储器分为三个区:–
Launcher(启动器)区 – 根本上而言,launcher是一个无通讯接口的引导加载程序。它担任查看是否需求引导加载,然后相应地将操控权交给协议栈区或运用区。假如有一个新协议栈映像,它还担任晋级协议栈的存储区。
协议栈区 – 该区存储BLE协议栈。当主机设备有一个新映像时,协议栈区担任与主机设备通讯。此外,该区与运用同享,用于树立BLE衔接,该区即扮演引导加载程序区的人物,也扮演可运用程序区的人物。该区由launcher将新协议栈固件写入该区。然后,该区引导加载运用区。
运用区 – 与上述其它完成相同,该区是实践运用代码。
可晋级协议栈OTA bootloader的运转分为三步:
第1步:图3显现了方针设备(即需求得到OTA晋级的设备)和主机设备(即有新固件并担任将其发送给方针设备的设备)。方针设备运用其现有的BLE协议栈接纳新的BLE协议栈。这个新的BLE协议栈存储在存储器的运用固件区。运用固件区被新的BLE协议栈掩盖,由于物联网设备的内存一般有限。增大内存会添加设备本钱,并且出于引导加载原因而增大存储器也不合理。请注意,现有BLE协议栈不能被直接掩盖,由于这将损坏正与主机通讯的现有协议栈代码,然后在晋级完毕前中止通讯。
图3:第1步:现有协议栈从主机设备接纳新协议栈,并将其写入运用存储器
第2步: launcher仿制运用固件区的BLE协议栈,并将其写入现有BLE协议区(见图4)。此步完毕时,BLE协议区将有新的BLE协议栈。
图4:第2步: Launcher运用新协议栈掩盖现有协议栈
第3步:方针设备运用新的BLE协议栈从主机设备接纳新的运用固件,然后将其写入运用固件存储区(见图5)。
图5:第3步:新协议栈接纳新运用固件,然后将其写入运用区
此步之后,方针设备固件的装备如图6所示,协议栈和运用固件晋级悉数完毕。
图6:晋级完毕后,存储器有了新的BLE 协议栈和运用固件
可晋级协议栈bootloader的一大优势是:布置产品后,答应晋级协议栈和运用。
还可以依据OTA Bootloader用于存储更新的固件映像的存储器对它们进行分类:
1. 内部存储器OTA bootloader
2. 外部存储器OTA bootloader
内部存储器OTA bootloader – 关于这品种型的引导加载程序,更新后的固件映像 – 新的BLE协议栈及运用固件或新的运用固件 – 被直接写入设备的内部闪存。本文至此所描绘的引导加载程序架构都依据内部存储器。此类引导加载程序的优势是:无需外部存储器,因而下降了晋级功用的完本钱钱。
外部存储器OTA bootloader – 关于外部存储器OTA bootloader,现有协议栈接纳新的运用固件或新的协议栈固件及运用固件。它们被存储在外部存储器中。在今后的某个时刻,依据存储器类型(I2C、SPI或其它串口存储器),设备运用一个有线接口从外部存储器读取新固件,然后晋级内部闪存。这种办法添加了外部存储器的总本钱,用于设备内部存储器有限但却需求晋级其协议栈的状况。请注意,在某些运用中协议栈大于运用固件。
为某个物联网运用挑选组件时,必需了解芯片厂商和开发工具所支撑的OTA固件晋级办法。评价一个装备内部存储器的设备时,依据内部存储器的OTA晋级是一种经济高效的办法。某些设备或许不答应晋级协议栈,只答应晋级运用固件。某些可晋级协议栈OTA bootloader架构或许只答应独自晋级协议栈或运用固件,然后缩短晋级时刻。在为您的运用挑选设备时,最好提早了解这些局限性。
对设备固件进行OTA晋级时,经过在空中传输,简单遭受进犯。因而,必需保证主机设备只与相关方针设备通讯。此外,应对空中传输的数据进行加密,以便让其它监听BLE通讯的设备无法解码这些数据。BLE 4.2改进了安全机制,可以更好地防备中间人进犯和被迫监听进犯,下降IP被盗或设备被黑客绑架的危险。假如运用的是一个旧版BLE,正确的做法是手动添加一个加密层,以维护您的IP免遭被迫监听。
总而言之,物联网商场中的产品需求比传统产品改变更快。此外,已得到广泛遍及的BLE通讯规范仍在不断演进,芯片厂商需求较长时刻来支撑新特性。将产品更快推向商场的压力也或许影响测验时刻或产品的现场实验。鉴于这些原因,在布置产品后,OTA固件晋级可让开发人员跟着时刻的推移增强产品功用,并修补产品缺点。最终,挑选可满意您的运用需求、维护您的IP的OTA固件晋级办法也十分重要。