CN110750292B - 一种基于NB-IoT的终端远程自动更新系统 - Google Patents

一种基于NB-IoT的终端远程自动更新系统 Download PDF

Info

Publication number
CN110750292B
CN110750292B CN201911211590.1A CN201911211590A CN110750292B CN 110750292 B CN110750292 B CN 110750292B CN 201911211590 A CN201911211590 A CN 201911211590A CN 110750292 B CN110750292 B CN 110750292B
Authority
CN
China
Prior art keywords
data
update
program
terminal
updating
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201911211590.1A
Other languages
English (en)
Other versions
CN110750292A (zh
Inventor
王宜怀
施连敏
王进
陈成
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou University
Original Assignee
Suzhou University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Suzhou University filed Critical Suzhou University
Publication of CN110750292A publication Critical patent/CN110750292A/zh
Application granted granted Critical
Publication of CN110750292B publication Critical patent/CN110750292B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/66Updates of program code stored in read-only memory [ROM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于NB‑IoT的终端远程自动更新系统,包括人机交互系统以及终端,人机交互系统包括云服务器,云服务器读取端口数据接收缓冲区存储的终端发来的数据,以及将程序更新数据发送至终端。终端包括存储器、驱动模块和程序更新模块,存储器包括存储用户中断向量表和用户程序的用户程序存储区以及存储云服务器发来的程序更新数据的更新存储区,驱动模块对存储器存储的内容进行读取、擦除和写入,程序更新模块依据云服务器发来的程序更新数据,控制驱动模块对用户程序存储区内的程序进行更新。该系统能够使人机交互系统通过窄带物联网对终端进行程序的远程自动更新,无需维护人员进行现场程序更新,节省了时间成本、人力成本和设备回收成本。

Description

一种基于NB-IoT的终端远程自动更新系统
技术领域
本发明涉及终端设备程序更新技术领域,特别涉及一种基于NB-IoT的终端远程自动更新系统。
背景技术
终端软件作为物联网系统的核心,负责终端设备的数据采集、控制、运算等功能。在一般物联网系统开发过程中,系统开发者需要通过串行调试(Serial Wire Debug,SWD)、联合测试行为组织(Joint Test Action Group,JTAG)等接口将编译链接好的终端机器码文件烧录进芯片中。传统物联网系统在进行终端软件更新和维护时,需要维护人员携带烧录工具到现场进行烧录作业。但此类系统的硬件电路板往往会安装在设备内部,现场烧录作业的可操作性较差,导致只能进行终端设备的直接更换。并且由于物联网设备的部署往往分布较广,环境较为复杂,甚至可能部署在人类难以抵达的区域(如高山、深海),因此对于数量较多、分布较广、无人值守的终端设备而言会产生回收成本过高、更新过程繁琐的问题。
同时,当前国内外对物联网终端更新的研究着重于更新算法、可靠性、安全性等方面,对于物联网终端更新的通用性、可移植性的研究较少,然而与通用软件不同的是,终端软件高度依赖于系统开发软硬件平台,在不同的终端软件更新系统中使用到的硬件平台都不尽相同,这就使得终端软硬件在不同更新系统之间的移植性大打折扣,在不同芯片之间进行更新功能的移植所需工作量较大,不利于终端软件更新技术的移植和复用,也就不具有普遍适用性。
预计到2020年,全球将会有500亿个物联网设备,其中有200亿个设备将接入蜂窝网,这就需要一个可靠且稳定的、移植性和复用性较高并且能够远程自动更新的终端软件远程自动更新系统来支持设备的更新和维护。
发明内容
(一)发明目的
基于此,为了降低时间成本、人力成本和设备回收成本,增加系统的复用性和移植性以降低开发难度、缩短开发周期、提高开发效率,为适应不同的环境场景而提供多种不同的更新机制,并完善程序更新过程中的数据传输过程以增加数据安全性和完整性,对不同信号环境下采用不同覆盖类别以提升系统整体性能,本发明公开了以下技术方案。
(二)技术方案
本发明公开了一种基于NB-IoT的终端远程自动更新系统,其特征在于,包括NB-IoT人机交互系统以及与所述人机交互系统通信连接的至少一个终端;
所述人机交互系统包括云服务器,所述云服务器包括:
服务器收发模块,用于读取端口数据接收缓冲区存储的所述终端发来的数据,以及将程序更新数据发送至所述终端;另外,
所述终端包括微控制器,以及与所述微控制器连接并用于与所述人机交互系统进行数据通信的通信模组,其中,所述微控制器包括:
Flash存储器,其包括存储用户中断向量表和用户程序的用户程序存储区,以及存储所述云服务器发来的程序更新数据的更新存储区;
Flash驱动模块,用于对所述Flash存储器存储的内容进行读取、擦除和写入;
通信控制模块,用于控制所述通信模组与所述人机交互系统之间的数据通信;
程序更新模块,用于依据所述通信模组接收的所述云服务器发来的程序更新数据,控制所述Flash驱动模块对所述用户程序存储区内的程序进行更新。
在一种可能的实施方式中,所述Flash存储器还包括:
存储BIOS中断向量表和BIOS程序的BIOS区,所述BIOS程序包括底层驱动API接口,用于所述用户程序的调用。
在一种可能的实施方式中,所述程序更新模块包括:
整体更新子模块,用于在所述云服务器发来整体程序更新数据的情况下,控制所述Flash驱动模块对所述用户程序存储区内的程序进行替换更新;和/或,
增量更新子模块,用于在所述云服务器发来差分程序更新数据的情况下,控制所述Flash驱动模块对所述用户程序存储区内的程序进行组合更新。
在一种可能的实施方式中,所述整体更新子模块包括:
整体替换更新单元,用于在预知所述整体程序更新数据的数据量大于所述更新存储区容量的情况下,在接收所述整体程序更新数据时将所述整体程序更新数据直接写入所述用户程序存储区;和/或,
整体保留更新单元,用于在预知所述整体程序更新数据的数据量不大于所述更新存储区容量的情况下,在接收所述整体程序更新数据时将所述整体程序更新数据写入所述更新存储区,在全部写入所述更新存储区之后将所述整体程序更新数据写入所述用户程序存储区;另外,
所述增量更新子模块包括:
复制单元,用于将当前用户程序数据中的与所述整体程序更新数据之间相同的数据复制到所述更新存储区的设定位置;
插入单元,用于将所述差分程序更新数据插入到所述更新存储区的指定位置,形成所述整体程序更新数据;
覆盖单元,用于将所述更新存储区内的所述整体程序更新数据覆盖到所述用户程序存储区,完成对所述用户程序存储区内程序的更新。
在一种可能的实施方式中,所述云服务器包括:
数据比较模块,用于比对所述整体程序更新数据和所述终端的当前程序数据,得到两者的最长公共子序列;
差分获取模块,用于依据所述最长公共子序列从所述整体程序更新数据中分离出所述差分程序更新数据;
位置获取模块,用于得到所述最长公共子序列中包含的数据在所述终端的当前程序数据中的位置,作为终端进行程序更新时所述最长公共子序列中包含数据的设定位置;另外,
所述服务器收发模块还将所述最长公共子序列中包含的数据的设定位置发送至所述终端。
在一种可能的实施方式中,所述数据比较模块包括:
末位判断单元,用于判断所述整体程序更新数据的末位数据块和所述终端的当前程序数据的末位数据块是否相同;
序列形成单元,用于在判定两所述末位数据块相同的情况下,将所述末位数据块记录为相应判断路径下的公共子序列中的末位数据块,并将所述整体程序更新数据和所述终端的当前程序数据的次末位数据块作为新的末位数据块,
第一差位比较单元,用于在判定两所述末位数据块不同的情况下,以所述整体程序更新数据的次末位数据块作为新的末位数据块,并使所述末位判断单元继续进行末位数据块是否相同的判断;
第二差位比较单元,用于在判定两所述末位数据块不同的情况下,以所述终端的当前程序数据的次末位数据块作为新的末位数据块,并使所述末位判断单元继续进行末位数据块是否相同的判断;
序列比较单元,用于在完成所有判断路径之后,将所述序列形成单元记录的所有公共子序列中包含数据块最多的公共子序列作为所述最长公共子序列。
在一种可能的实施方式中,所述云服务器包括:
更新文件导入模块,用于导入所述程序更新数据的机器码文件;
第一数据组装模块,用于从所述机器码文件中提取出有效数据并组装成更新帧,以使所述服务器收发模块将组装得到的更新帧数据发送至所述终端;
第一数据解析模块,用于对接收到的所述终端发来的更新帧进行解析,并得到相应的数据;另外,
所述微处理器包括:
第二数据组装模块,用于将待发送给所述云服务器的数据组装成更新帧,以使所述通信模组将组装得到的更新帧数据发送至所述云服务器;
第二数据解析模块,用于对接收到的所述更新帧进行解析,并得到相应的数据;其中,
所述更新帧包括帧头字段、IMSI码字段、数据长度字段、程序更新数据字段、CRC校验码字段和帧尾字段。
在一种可能的实施方式中,所述云服务器发送给所述终端的更新帧数据依据其包含的程序更新数据的内容划分为不同的类别,包括:
更新开始帧,其程序更新数据字段包括帧标识、更新方式、总帧数、帧号、更新代码大小;
更新复制帧,其程序更新数据字段包括帧标识、帧号、复制个数、复制地址和复制长度;
更新命令帧,其程序更新数据字段包括帧标识和帧号。
在一种可能的实施方式中,所述终端还包括:
随机接入单元,用于依据下行参考信号接收功率判断终端的初始覆盖类别,选择与所述初始覆盖类别匹配的物理随机接入信道资源,进而利用前导码发起随机接入;
接入响应单元,用于在设定时间窗内未接收到正确的随机接入响应信号时,前导码全局传输次数N加1,当前覆盖类别下的前导码传输次数Ni加1,当Ni达到前导码最大传输次数时,使所述随机接入单元切换至下一覆盖类别并重新发起随机接入;
竞争触发单元,用于在设定时间窗内接收到正确的随机接入响应信号时,向所述人机交互系统发送无线资源控制连接请求,并触发竞争解决定时器;
竞争解决单元,用于接收所述人机交互系统反馈的竞争解决结果,在所述结果为竞争失败时对N加1,并使所述随机接入单元重新发起随机接入,在所述结果为竞争成功时触发所述终端进行数据传输。
在一种可能的实施方式中,所述终端还包括:
概率运算单元,用于确定各覆盖类别的接入失败概率和功耗,并利用各覆盖类别的稳态概率对所述接入失败概率和功耗进行加权,得到随机接入过程的平均接入失败概率和平均功耗;
模型建立单元,用于以第i个覆盖类别的前导码最大传输次数为变量,以所述平均接入失败概率Pc和平均功耗E为第一优先层次的目标函数,以所述前导码最大传输次数为第二优先层次的目标函数,建立分层多目标非线性整数规划模型;
模型求解单元,用于对所述模型进行求解,得到
其中,
所述模型为:min(L1(Pc,E),L2(NΣ)),
约束条件为:其中,
Li为优先层次的序号,NΣ为3个覆盖类别的前导码最大传输次数之和,Ni,max为第i个覆盖类别的前导码最大传输次数。
(三)有益效果
本实施例公开的终端远程自动更新系统,能够使人机交互系统通过窄带物联网对终端进行程序的远程自动更新,无需维护人员进行现场程序更新,节省了时间成本、人力成本和设备回收成本。
同时,将所有与底层硬件打交道的操作和远程代码更新的操作固化于BIOS程序中,并以驱动函数接口API的方式提供给用户程序使用,可避免用户程序对芯片底层寄存器直接干预,无需用户程序实现底层驱动,增强用户程序开发的安全性,增强用户程序的移植性,减少远程更新所需的网络开销。
另外,提供了多种不同的更新机制,能够满足不同Flash存储容量大小以及不同网络数据传输量要求的终端程序更新,提高了系统的适用性。
并且,针对NB-IoT单次连接通信数据量有限、传输速率较低、难免出现丢帧等异常错误的问题,设计了更新帧格式,使数据传输过程具备了应答、断点续传和丢帧重传等特点,防止通信过程中出现差错,避免数据丢包,保证了通信过程中数据的安全性和完整性。
再有,提供了能够为不同覆盖类别选用合适的覆盖策略的机制,以提高系统接入成功概率,降低系统功耗,提升系统整体性能。
附图说明
以下参考附图描述的实施例是示例性的,旨在用于解释和说明本发明,而不能理解为对本发明的保护范围的限制。
图1是本发明公开的终端远程自动更新系统实施例的结构框图。
图2是终端RAM存储器的分区示意图。
图3是增量更新过程的数据操作示意图。
图4是最长公共子序列的矩阵及反向回溯过程的示意图。
图5是更新操作成功率对比表。
图6是更新操作网络开销对比表。
具体实施方式
为使本发明实施的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行更加详细的描述。
下面参考图1-图6详细描述本发明公开的基于NB-IoT的终端远程自动更新系统实施例。如图1所示,本实施例主要包括有NB-IoT人机交互系统HCI,以及与人机交互系统通信连接的至少一个终端UE。
NB-IoT人机交互系统(Human-computer interaction,HCI)是实现信息交互、信息处理和信息服务的软硬件系统,目标是借助通用PC机、网页、手机等方式实现终端UE数据(包括运行状态、各传感器数据)的获取和开关量与模拟量执行机构的控制。
人机交互系统包括云服务器,云服务器包括服务器收发模块,服务器收发模块用于读取端口数据接收缓冲区存储的终端发来的数据,以及将程序更新数据发送至终端。人机交互系统通过信息邮局MPO与终端通信连接,信息邮局包括基站和基站云服务器。基站由户外的基站塔与NB-IoT基站路由器构成。基站塔是基站路由器支撑机构,作用是把NB-IoT基站路由器高高地挂起,提供更高的制高点,从而提升NB-IoT基站路由器的无线覆盖范围。
服务器端更新程序是人机交互系统HCI的核心,需运行在一个具有固定IP地址的云服务器上,负责与终端UE进行数据交互。在NB-IoT远程软件更新机制架构中,一旦终端UE与服务器的上位机更新程序发生数据交互,上位机更新程序可控制终端UE的更新进程,具体会判断当前终端是否处于更新操作中。若处于,则回发下一条更新数据至终端;若不处于,则提示当前终端未进行更新操作或更新已完成。
云服务器可以是一个实体服务器,也可以是几处分散的云服务器。云服务器负责对指定IP地址与端口号进行侦听操作,可实现与终端UE之间的数据交互。
终端UE包括微控制器MCU。微控制器MCU作为终端UE的核心要件,承担着数据采集、滤波处理、融合计算、通信、控制等功能。终端UE还包括通信模组,通信模组与微控制器连接,用于与人机交互系统进行数据通信。通信模组作为MCU与服务器之间通信的“桥梁”,负责MCU板内数据信号和互联网网络数据信号之间的转换工作,可实现微控制器与云服务器的数据交互功能。通信模组电路包含通信模组实体及其外围电路,外围电路包括主天线和GNSS天线电路、UART电平匹配电路和eSIM卡电路。
通信模组要实现连接基站并附着核心网,需借助客户识别模块(SubscriberIdentity Model,SIM)来进行网络身份的识别。SIM卡中内含唯一国际移动用户识别码(International Mobile Subscriber Identification Number,IMSI),可用于区别移动用户身份。
微控制器包括Flash存储器、Flash驱动模块、通信控制模块和程序更新模块。
Flash存储器包括用户程序存储区和更新存储区。用户程序存储区用于存储用户中断向量表和用户程序的用户程序存储区,用户程序(也称为用户程序)负责微控制器的具体功能实现,例如定期采集传感数据,定期通过通信模组向云服务器上传采集到的传感数据等。更新存储区用于存储云服务器发来的程序更新数据。在一些情况下,终端接收的云服务器发来的程序更新数据先存储在更新存储区,待程序更新数据全部接受完成后,终端在本地进行更新。详细实施方式见后文描述。
中断向量表指的是存放所有中断向量的一段地址空间。向量的内容是:相应的中断服务程序起始地址和处理机状态字(主要是指令地址)。在中断响应时,由中断部件提供中断向量的地址,就可取出该向量。
Flash驱动模块用于对Flash存储器存储的内容进行读取、擦除和写入。Flash模块具有电可擦除功能,在程序运行时,可对Flash存储区域的数据和程序进行擦除和写入操作。具体在终端的用户程序更新过程中,需要Flash驱动模块对更新存储区和用户程序存储区进行擦除和写入操作,以实现用户程序的更新。
通信控制模块用于控制通信模组与人机交互系统之间的数据通信。也就是说,微处理器通过通信控制模块来控制通信模组发出和接收数据等,实现终端的远程自动更新。
程序更新模块用于依据通信模组接收的云服务器发来的程序更新数据,控制Flash驱动模块对用户程序存储区内的程序进行更新。通信模组接收到数据后,微控制器通过程序更新模块分析接收到的命令与数据内容,控制Flash驱动模块对Flash存储器中的存储区进行擦除、写入等操作,实现终端的远程自动更新。
本实施例公开的终端远程自动更新系统,能够使人机交互系统通过窄带物联网对终端进行程序的远程自动更新,无需维护人员进行现场程序更新,也无需对终端设备进行更换,利于对数量庞大的终端设备以及地处偏远的终端设备进行快速地程序更新,节省了时间成本、人力成本和设备回收成本。
在一种实施方式中,Flash存储器还包括BIOS区,BIOS区存储BIOS中断向量表和BIOS程序,BIOS程序包括底层驱动API接口,用于用户程序的调用。
BIOS是指终端芯片上电后运行的一段代码,其在用户程序运行之前执行,为用户程序的执行准备好软硬件环境。
本实施例在BIOS程序中定义了一个驱动函数API表,存储了各个底层驱动函数的地址。因此用户程序只需知道该驱动函数API表的地址,再根据各个驱动函数在该API表中的偏移量,就可以获得BIOS程序中各个底层驱动函数的地址。这样,用户程序就可以调用BIOS程序中的底层驱动构件。
获得该API接口函数表可通过共享中断服务例程(即中断向量表重定向)的方式来实现该功能。微控制器主控芯片的内核提供了SVC中断(即软件中断)功能,可通过SVC指令主动触发SVC异常,进而执行SVC中断服务例程。在BIOS程序的SVC中断服务例程中实现获取API接口函数表地址并将其存入寄存器R0。用户程序共享该中断服务例程并主动触发SVC中断后,通过读取寄存器R0即可得到BIOS程序对外的API接口函数表地址,再根据各个底层驱动函数在API接口函数表中的偏移量,即可获得BIOS程序中各个底层驱动函数的地址。这样,用户程序就可以调用BIOS程序中的底层驱动构件。
将所有与底层硬件打交道的操作和远程代码更新的操作固化于BIOS程序中,并以驱动函数接口API的方式提供给用户程序使用,可避免用户程序对芯片底层寄存器直接干预,增强用户程序开发的安全性;底层驱动构件由API接口方式对外提供,无需用户程序实现底层驱动,从而增强用户程序的移植性、降低嵌入式开发难度、缩短开发周期;用户程序中无需实现底层驱动的开发,可降低用户程序代码量,从而减少远程更新所需的网络开销。
在一种实施方式中,微控制器还包括RAM存储器,RAM存储器包括第一BIOS区段。第一BIOS区段包括BIOS程序动态申请和释放的空间以及用于存储BIOS程序局部变量的空间。对于BIOS和用户两个程序而言,一般将RAM存储器一分为二,从而避免BIOS和用户程序运行时彼此间的数据重叠干扰。但这种方式对于RAM空间较少的芯片来说就显得很不适宜,若用户程序所使用的RAM空间过小则会影响程序中全局变量、局部变量的空间申请,严重影响用户程序功能实现。因此芯片RAM的合理分区就显得十分重要。
嵌入式芯片中RAM包含data段、bss段、heap段和stack段。data段中存放初始化过且值不为0的全局变量和静态变量;bss段中存放未初始化或初始化过且值为0的全局变量和静态变量;heap段一般由程序员动态分配和释放,如使用C语言中的malloc、free函数可用于在堆区动态申请和释放空间;stack段由编译器自动分配,保存函数中的局部变量和参数。
本实施例设计了一种RAM分配机制,当终端从BIOS程序跳转到用户程序之后,第一BIOS区段还接受用户程序的存储和使用,既保证了BIOS和用户程序的正常运行,又使得用户程序的RAM空间够大。
当终端UE从BIOS程序跳转用户程序后,BIOS的RAM空间中的heap段和stack段(也就是第一BIOS区段)中的临时变量就变得没有用处,无需保留,而data段和bss段中的全局变量和静态变量对于用户程序的执行十分重要,需要保留,如BIOS对外提供的系统时间变量就存储在bss段中。因此用户程序的RAM区域不能覆盖BIOS中的data段和bss段。终端芯片RAM分区图如图2所示,图中User标识用户。BIOS程序的RAM占据整个芯片的可用RAM空间,用户程序的RAM仅需避开BIOS中的data段和bss段,如此无需将终端芯片RAM一分为二,可大大增加用户程序的可用RAM空间大小。
对于用户程序通过中断服务例程来记成BIOS程序的功能,ARM Cortex系列内核机制中提供了中断向量表起始地址寄存器SCB->VTOR,只需在User程序中将该寄存器的值设置为BIOS程序的中断向量区的起始位置(地址0x0000_0000)即可实现用户程序的所有中断服务都将“继承”自BIOS程序。BIOS程序一上电即将Flash中断向量区的数据复制到RAM的中断向量表段中,并修改中断向量表起始地址寄存器SCB->VTOR为该中断向量表段的起始位置。User程序可通过修改中断向量段的数据来动态装载中断服务例程,从而实现User程序“继承”BIOS程序功能的同时不影响User程序的功能实现。
在一种实施方式中,程序更新模块包括整体更新子模块和/或增量更新子模块。整体更新子模块用于在云服务器发来的程序更新数据是整体程序更新数据的情况下,控制Flash驱动模块对用户程序存储区内的程序进行替换更新。整体更新子模块采用整体更新的更新方式,将更新数据中所有有效数据作为存储和传输形式的更新方式,也就是说,云服务器会将新版程序的所有数据内容分为若干数据包依次发送至终端,终端接收后对用户程序存储区内的旧版程序进行替换。此方法简单方便,程序复杂度低,但网络开销相对较大。
增量更新子模块用于在云服务器发来差分程序更新数据的情况下,控制Flash驱动模块对用户程序存储区内的程序进行组合更新。增量更新子模块采用增量更新的更新方式,以新旧两版更新文件之间的差分数据作为存储和传输形式的更新方式。当需要更新终端软件时,云服务器端先进行新旧版本代码文件的文本比较处理,得到新旧版本的差分数据,然后将新版程序的与旧版程序不同的数据内容分为若干数据包依次发送至终端。终端UE收到差分数据后,将结合Flash存储器中的旧版程序代码去恢复出新版的程序代码,从而实现嵌入式设备程序更新。增量更新可以有效的节省网络传输开销,缩短更新时间,但服务器端的系统运算开销较大。
在一种实施方式中,整体更新子模块包括整体替换更新单元和/或整体保留更新单元。整体替换更新单元用于在预知整体程序更新数据的数据量大于更新存储区容量的情况下,在接收整体程序更新数据时将整体程序更新数据直接写入用户程序存储区。
整体更新又分为整体替换更新和整体保留更新两种更新方式,而整体替换更新单元采用整体替换更新的更新方式。当待更新的用户程序大小超出更新存储区的容量大小时,只能进行整体替换更新操作。此时的更新代码区需包含更新存储区和用户程序区,在Flash资源受限情况下只能将用户区和更新区合二为一用于存放更新代码数据,并直接用新用户程序代码覆盖原用户程序所在区域。而整体替换更新单元如何预知整体程序更新数据的数据量与更新存储区容量之间的大小关系,详见后文中对更新握手帧等更新帧格式的介绍。
整体替换更新流程如下:当芯片接收到更新提示时,立刻从用户程序跳转至BIOS程序。在BIOS程序中将原有的用户程序擦除,等待接收新版用户程序代码并将新版程序代码写入。当新版用户程序的所有代码接收并写入成功后,跳转执行新版用户程序。
整体替换更新适合于Flash较小的芯片,但缺点是在更新过程中要将用户程序擦除,影响终端UE运行的实时性。若更新失败,原有用户程序也不能恢复,影响终端UE的安全性。
整体保留更新单元用于在预知整体程序更新数据的数据量不大于更新存储区容量的情况下,在接收整体程序更新数据时将整体程序更新数据写入更新存储区,在全部写入更新存储区之后将整体程序更新数据写入用户程序存储区。
整体保留更新单元采用整体保留更新的更新方式。当待更新的用户程序大小不超出更新存储区的容量大小时,可进行整体保留更新操作。此时的更新代码区需只包含更新存储区,并能够在用户程序正常运行的同时接收更新代码并将其存入更新代码区,当更新代码接收完毕后跳转BIOS程序进行更新代码的Flash替换,最后跳转执行新的用户程序。
整体保留更新流程如下:当芯片正常运行时接收到更新数据后,从当前用户程序的下一个扇区开始存放更新程序代码。待更新程序代码全部接收并校验完毕后,跳转BIOS程序进行新版用户程序代码的覆盖,最后转向执行新版用户程序。
整体替换更新避免了整体替换更新的实时性和安全性的缺失,但其对Flash存储器的容量大小有一定要求。
在一种实施方式中,增量更新子模块包括复制单元、插入单元和覆盖单元。如图3所示,增量更新过程中,终端UE接收到由文本比较算法得到的差分数据后,需进行新版用户程序的恢复操作。恢复过程主要执行三种操作:
第一是复制操作,复制单元将当前用户程序数据(旧版程序)中的与整体程序更新数据(新版程序)之间相同的数据块复制到更新存储区的设定位置。
第二是插入操作,插入单元将终端接收到的差分更新数据插入到更新存储区的指定位置,例如插入到上述数据块之间空出的位置,形成整体程序更新数据。
第三是覆盖操作,覆盖单元将更新存储区内的整体程序更新数据覆盖到用户程序存储区,完成对用户程序存储区内程序的更新。
增量更新是保留更新的一种,与整体保留更新一样,在更新过程中不直接擦除旧版用户程序。同时增量更新储存和传输的是新旧两个用户程序之间的差分数据,可减少更新过程中所需的网络开销,在传输过程中不会传输完整的更新程序,可增强网络安全性。但相对应的,增量更新会增加终端UE和服务器端更新软件的的操作复杂度。
在一种实施方式中,云服务器包括数据比较模块、差分获取模块和位置获取模块。数据比较模块用于比对整体程序更新数据和终端的当前程序数据,得到两者的最长公共子序列。增量更新的核心就是新旧版本文件的差分数据获取,可通过文本比较来获得,而文本比较的本质是最长公共子序列问题。最长公共子序列(LCS)是指两个序列的相同的最长顺序子串,该子串不要求在原序列中连续,但必须按原顺序依次排列。差分获取模块用于依据数据比较模块得到的最长公共子序列从整体程序更新数据中分离出差分程序更新数据,得到新旧版本的不同部分的数据块。位置获取模块用于得到最长公共子序列中包含的数据块在终端的当前程序数据中的位置,作为终端进行程序更新时最长公共子序列中包含数据块的设定位置,另外,服务器收发模块还将最长公共子序列中包含的数据的设定位置发送至终端。在终端的复制单元进行复制操作时,需要知道将已有的旧版程序中的最长公共子序列数据块复制到新版程序中的哪个位置,此时就需要位置获取模块获取到各数据块的位置并发送给终端,以使终端实现本地旧版程序与差分程序更新数据的结合,得到完整的新版程序。
在一种实施方式中,数据比较模块包括末位判断单元、序列形成单元、第一差位比较单元、第二差位比较单元和序列比较单元。
设有序列X={x1,x2,x3...xm},Y={y1,y2,y3...yn}。Xi={x1,x2,x3...xi}为序列X的前i个字符集合(1≤i≤m),Yj={y1,y2,y3...yj}为序列Y的前j个字符集合(1≤j≤n),LCS(Xi,Yj)为前缀Xi和前缀Yj的最长公共子序列的集合,C[i,j]为前缀Xi和前缀Yj的最长公共子序列长度。末位判断单元用于判断整体程序更新数据的末位数据块和终端的当前程序数据的末位数据块是否相同,也就是xm与yn是否相等。
序列形成单元用于在末位判断单元判定两末位数据块相同的情况下,将末位数据块记录为相应判断路径下的公共子序列中的末位数据块,并将整体程序更新数据和终端的当前程序数据的次末位数据块作为新的末位数据块。也就是说,如果xm=yn,即序列X和Y的最后一个元素相同,则LCS(Xm,Yn)可由序列Xm-1和Yn-1的最长公共子序列与xm或yn得到,公式如下:
LCS(Xm,Yn)=LCS(Xm-1,Yn-1)∧xm 公式(1)
C[m,n]=C[m-1,n-1]+1 公式(2)
第一差位比较单元用于在判定两末位数据块不同的情况下,以整体程序更新数据的次末位数据块作为新的末位数据块,并使末位判断单元继续进行末位数据块是否相同的判断。
第二差位比较单元用于在判定两末位数据块不同的情况下,以终端的当前程序数据的次末位数据块作为新的末位数据块,并使末位判断单元继续进行末位数据块是否相同的判断。
也就是说,如果xm≠yn,即序列X和Y的最后一个元素不同,则LCS(Xm,Yn)可由序列Xm-1和Yn或序列Xm和Yn-1中较多的公共子序列得到,公式如下:
LCS(Xm,Yn)=max{LCS(Xm,Yn-1),LCS(Xm-1,Yn)} 公式(3)
C[m,n]=max{C[m,n-1],C[m-1,n]} 公式(4)
序列比较单元用于在完成所有判断路径之后,将序列形成单元记录的所有公共子序列中包含数据块最多的公共子序列作为最长公共子序列。
从以上情况可以分析,LCS问题具有最优子结构特征,可用动态规划实现求解。LCS问题的递推关系如下所示。
以序列X={A,B,C,D,B,C,A},Y={B,A,C,B,D,A}为例,构造序列X,Y的最长公共子序列。由公式(6)可求得二维数组C,并可通过反向回溯获得最长公共子序列,LCS(X,Y)={A,B,D,A}。如图4所示,序号④代表了第一个相同的元素A,但两个序列的次末位不同,分别为C和D,因此开始分为多种情况继续推算,最终得到①②③④四个元素(沿图中加粗黑框所示的路线)。
本实施例提供的数据比较模块适用于Hex文本的文本比较,将Hex文件的一行记录作为文本比较的基本单位,其中数据区信息作为待比较的元素,其他字段数据作为辅助信息。如此进行新旧Hex文件的文本比较,可以得到两个文件行记录中有效数据相同的行号,和数据区有效数据不相同的行号。从而可在旧版程序代码中获得的复制代码块,以及需要网络传输至终端UE的插入代码块,再将这些信息告知终端,即可实现增量更新功能。增量更新所需网络开销较少,且无需传输完整的更新程序,有较强的网络安全性。
在一种实施方式中,云服务器还包括更新文件导入模块、第一数据组装模块和第一数据解析模块。
更新文件导入模块用于导入程序更新数据的机器码文件。本实施例选择Hex作为机器码文件的机器码形式。Hex文件是遵循Intel HEX格式的ASCII文本文件,是可烧录到芯片并被执行的文本文件。Hex文件以行为单位,每行Hex记录以冒号作为开始符号,接下来的十六进制编码数字分别表示记录长度、偏移量、记录类型、记录数据和校验和。Hex文件共有6种记录类型00至05,以此表示数据记录、文件结束记录、扩展段地址记录、开始段地址记录、扩展线性地址记录、链接开始地址记录。校验和可用于烧录器校验本行记录的正确性,保证Hex文件不被篡改。
第一数据组装模块用于从机器码文件中提取出有效数据并组装成更新帧,以使服务器收发模块将组装得到的更新帧数据发送至终端。其中,更新帧包括帧头字段、IMSI码字段、数据长度字段、程序更新数据字段、CRC校验码字段和帧尾字段。IMSI是区别移动用户的标志,存储在移动设备的用户识别卡中,每张SIM卡只有一个国际移动用户识别码IMSI,作为终端UE的唯一标识。帧头占用2字节,IMSI码占用15字节,数据长度占用2字节,程序更新数据占用N字节,CRC校验码占用2字节,帧尾字段占用2字节。第一数据解析模块用于对接收到的终端发来的更新帧进行解析,并得到相应的数据。
另外,微处理器还包括第二数据组装模块和第二数据解析模块。第二数据组装模块用于将待发送给云服务器的数据组装成更新帧,以使通信模组将组装得到的更新帧数据发送至云服务器。第二数据解析模块用于对接收到的更新帧进行解析,并得到相应的数据。
从终端远程软件更新的不同操作角度来划分,更新数据字段可分为多种不同类型的帧,以在更新终端用户程序的过程中实现不同的功能。在人机交互系统对终端进行远程自动更新的过程中,会涉及到云服务器对终端发送不同类型的更新帧,终端对收到的不同更新帧进行解析后得到的信息类型可能并不完全相同;更新的过程中也会涉及到终端对云服务器发送另一些不同类型的更新帧,云服务器对收到的不同更新帧进行解析后得到的信息类型也可能并不完全相同。具体过程详见后文描述。
通过设计更新帧格式,实现了第一层的丢帧重传机制。第一层防护是本系统采用有应答的传输机制,在每帧更新帧中都有CRC校验码,若该帧数据的CRC校验码错误,则上传返回状态字段为1的更新返回帧数据,通知服务器端更新软件重传当前帧数据。丢帧重传机制会在终端UE检测到有丢帧时,发送丢帧信息给服务器,服务器再重发这些数据,保证了通信过程中数据的安全性和完整性。
在一种实施方式中,云服务器发送给终端的更新帧数据依据其包含的程序更新数据的内容划分为不同的类别,包括更新开始帧、更新复制帧和更新命令帧。
更新开始帧用于在服务器端更新程序启动终端软件更新操作后,先向指定终端UE下发更新开始提示,通知终端UE本次更新方式、更新总帧数以及当前更新代码总大小。
更新开始帧的程序更新数据字段包括帧标识、更新方式、总帧数、帧号、更新代码大小。更新开始帧帧标识为0,占用1字节。更新方式占用1字节,有3种选择,其中0表示整体替换更新,1表示整体保留更新,2表示增量更新。总帧数表示当前更新操作数据帧个数,占用2字节。帧号用于标记第几帧数据,占用2字节,若某帧数据丢失可通知服务器端软件帧号来实现丢帧重传操作。服务器端软件通过解析Hex机器码文件可计算获得待更新代码大小,更新代码大小占用4字节,可用于定位终端Flash擦除时的扇区位置和大小。
更新复制帧用于增量更新过程中配合复制单元实现复制操作。更新复制帧的程序更新数据字段包括帧标识、帧号、复制个数、复制地址和复制长度。更新复制帧帧标识为1,占用1字节。帧号用于标记第几帧数据,占用2字节。复制个数表示本帧需进行的复制操作次数,最大为47,占用1字节。目前嵌入式芯片大多数是32位处理器,每个Flash地址占4字节,因此在复制地址字段中每4字节表示一个Flash地址。每两个Flash地址为一组,分别表示复制操作的源地址和目标地址,复制地址占用376字节。复制长度字段中每2个字节为一个复制操作长度,且与复制地址字段中的每组地址一一对应,表示该组复制操作字节个数,复制长度占用94字节。
更新命令帧用于指示终端进行更新操作。更新命令帧的程序更新数据字段包括帧标识和帧号。更新命令帧帧标识为4,占用1字节。帧号用于标记第几帧数据,占用2字节。具体的,在整体更新情况下,程序运行在BIOS程序中,此时新版用户程序已准备完毕,可以直接跳转并执行新版用户程序。在保留更新情况下,程序运行在旧版用户程序中,此时需跳转BIOS程序并用新版用户程序直接覆盖旧版用户程序,再跳转并执行新版用户程序,从而实现终端UE的远程软件更新功能。
在一种实施方式中,云服务器发送给终端的更新帧数据依据包含的程序更新数据的内容划分的类别还包括更新插入帧。更新插入帧用于整体更新和增量更新中配合插入单元实现插入操作。
更新插入帧的程序更新数据字段包括帧标识、帧号、插入个数、插入地址、插入长度和插入数据。更新插入帧帧标识为2,占用1字节。帧号用于标记第几帧数据,占用2字节。插入个数表示本帧需进行的插入操作次数,最大为12,占用1字节。插入地址字段中每4个字节表示一个Flash地址,该Flash地址为插入操作的目标地址,占用48字节。插入长度字段中每2个字节为一个插入操作长度,且与插入操作的目标地址一一对应,表示该插入操作字节个数,占用48字节。插入数据字段表示待插入目标地址的有效代码数据,每组插入数据的偏移量由插入长度字段数据决定,占用400字节。
在一种实施方式中,终端发送给云服务器的更新帧数据依据其包含的程序更新数据的内容划分为不同的类别,包括更新握手帧。更新握手帧用于终端UE运行时向云服务器需提供一些必要的信息数据,以供服务器端更新程序判断,进而实现服务器端更新程序的硬件无关性以及终端UE更新方式的可选择性。
更新握手帧的程序更新数据字段包括微控制器类型、通信模组类型、用户程序起始地址、用户程序代码大小、替换更新最大字节和保留更新最大字节。其中,MCU类型占用25字节,通信模组类型占用10字节、用户程序起始地址占用4字节、用户程序代码大小(也就是代码的数据量)占用4字节、替换更新最大字节占用4字节和保留更新最大字节占用4字节。服务器端更新程序可通过将待更新程序的字节数与替换更新最大字节和保留更新最大字节进行比较来判断终端UE可选的更新方式。
在一种实施方式中,终端发送给云服务器的更新帧数据依据其包含的程序更新数据的内容划分为不同的类别,包括更新校验帧。更新校验帧用于在更新复制和更新插入操作完成之后,并且在更新命令(更新命令帧)之前时进行的更新校验操作,即检查是否有丢帧情况,若有则通知服务器端更新软件进行丢帧重传操作。当更新校验成功后,云服务器即可发送更新命令帧,以进行更新命令操作。
更新校验帧的程序更新数据字段包括帧标识、帧号、丢失帧数、丢失帧号。更新校验帧帧标识为3,占用1字节。帧号用于标记第几帧数据,占用2字节。丢失帧数字段表示当前更新操作丢帧的个数,默认最多40个,占用1字节。丢失帧号字段每两个字节表示一个帧号,服务器更新软件将根据该字段数据重传丢帧的数据,占用80字节。
通过更新帧格式结合更新校验帧实现具有两层防护的丢帧重传机制。第二层防护是在接收完所有复制和插入帧数据后,在更新命令操作之前,需进行一次整体的更新数据帧的校验操作。若出现丢帧现象,则上传更新校验帧数据,通知服务器端更新软件重传所有丢帧的数据。然后再进行校验操作,直到所有更新帧数据都接收成功,最后进行更新命令操作。
在一种实施方式中,终端发送给云服务器的更新帧数据依据其包含的程序更新数据的内容划分为不同的类别,包括更新返回帧,在每次服务器端软件发送更新数据帧给终端UE后,终端UE须得返回一个更新返回帧数据,以应答通知服务端更新软件当前帧数据的执行状态。
更新返回帧的程序更新数据字段包括帧标识、帧号和返回状态。更新返回帧帧标识为5,占用1字节。帧号用于标记第几帧数据,占用2字节。返回状态字段表示当前更新数据帧的执行状态,0表示成功,其他数值表示失败,占用1字节。
通过更新返回帧实现了应答机制,应答机制是当终端接收到服务器数据或命令后会返回一个应答信息,以告知后台服务器当前数据或命令的执行情况。本实施例中提供了更新返回帧数据,每当终端接收到更新数据或命令后会进行相应的Flash初始化、复制、插入等操作,紧接着会将相应的终端执行情况以更新返回帧的形态返回给服务器,服务器再依据接收到的更新返回帧的返回状态字段数据来获取到终端执行状态。若返回状态为0,表示当前帧在终端中执行成功,可下发下一条更新数据或命令;若返回状态为1,表示当前帧在终端中执行失败,需重发当前更新数据或命令。
在本实施例中的高效握手重传机制中,服务器端更新软件仅需根据接收到的更新返回帧和更新校验帧数据来判断需重传的帧号。
在一种实施方式中,Flash存储器还包括用于存储用户程序更新进度的更新进度区。并且,程序更新模块还包括进度记录单元,用于在微控制器接收到云服务器发来的程序更新数据后,向更新进度区写入能够指示出已接收到当次更新帧的记录,并在更新过程完成后擦除更新进度区的记录。
更新进度区的更新进度记录提供了断点续传机制,当终端UE在更新过程中发生断电、掉线等异常状况,断点续传机制支持设备从上次中断的地方继续进行更新操作,无需重头开始。为了实现终端UE“记住”每次接收到的更新数据帧,本文在芯片Flash中开辟了一块区域用于存储更新进度信息,该块区域叫更新进度区。终端UE接收到更新开始帧数据时进入更新状态,向更新进度区中写入本次更新操作的总帧数,并标记第一帧数据已收到。之后一旦收到更新数据或命令时,在更新进度区中标记当前帧已收到。当终端接收到最后的更新命令帧后会将更新进度区数据全部擦除,再进行更新程序的覆盖与跳转执行。
终端UE断电并重新上电后,会检查更新进度区中是否有数据。若没有,表示终端未处于更新状态,正常运行BIOS和用户程序。若有,表示终端处于更新状态,可从更新进度区中获取终端UE未收到的数据帧号,并发送给服务器,告知服务器缺少的帧数据。服务器再进行补发操作,从而实现了断点续传机制。
在一种实施方式中,通信控制模块包括电源控制单元、通信初始化单元、连接建立单元和通信收发单元。电源控制单元用于控制通信模组的供电。通信初始化单元用于对通信控制模块进行初始化,建立与通信模组的串口通讯并获取SIM卡的IMSI号。连接建立单元用于建立与信息邮局的连接。通信收发单元用于将数据通过连接建立单元建立的连接发送至云服务器,以及通过连接建立单元建立的连接接收云服务器发来的数据。
连接建立单元首先建立与通信运营商的基站之间的连接,然后建立与指定服务器ip和端口port之间的连接。其中,ip为待连接服务器的IP地址,port为待连接服务器的端口号。数据发送单元基于数据发送缓存区data将长度为length的待发送数据通过连接建立单元建立的连接发送至云服务器。数据接收单元在接收到数据之后将自动跳转至注册的中断服务函数内执行。
终端UE联网流程可通过通信控制模块实现,通信控制模块的运行流程如下:首先通过电源控制单元打开通信模组电源,使通信模块处于供电状态。若需重启通信模组,先关闭电源,短暂延时后再开启模组电源。然后通信初始化单元初始化通信控制模块,建立与通讯模组的串口通讯,并获取SIM卡的IMSI号。之后连接建立单元与通信运营商的基站建立连接,并在基站连接成功后与指定的服务器和端口建立连接。若连接失败,返回失败提示,并继续尝试连接。之后获取通信模组相关信息,获得GNSS定位信息,获取与基站相关的信息。在有发送请求时,数据发送单元开启发送模式,将数据通过已经建立的通道发送出去。在需要接收网络数据时,数据接收单元开启串口中断,通过串口中断接收网络发送来的数据,再进行相关数据处理。
本实施例中,微控制器芯片选用FS32K144UAT0VLLA(简称S32K144)型号的芯片,通信模组选用ME3616型号的通信模组。
当NB-IoT基站的覆盖半径较大或NB-IoT终端被部署在信道较差的工作环境时(如车库、地下室等),若是所有终端均采用相同的覆盖策略,会导致处于较差工作环境中的终端的性能发挥大幅下降,因此需要采取一种能够为不同覆盖类别选用合适的覆盖策略的机制,以提高系统接入成功概率,降低系统功耗,提升系统整体性能。因此,在一种实施方式中,终端还包括随机接入单元、接入响应单元、竞争触发单元和竞争解决单元。
覆盖类别有3种:常规覆盖、扩展覆盖和极端覆盖。常规覆盖的最小耦合损耗(Minimum Coupling Loss,MCL):MCL<144dB,扩展覆盖的最小耦合损耗:144dB<MCL<154dB,极端覆盖的最小耦合损耗:MCL>154dB。
随机接入单元测量下行参考信号接收功率(Reference Signal ReceivingPower,RSRP)的平均值,并判断其初始覆盖类别,选择与当前覆盖类别匹配的物理随机接入信道(NB-Physical Random Access Channel,NB-PRACH)资源,例如子载波序号、前导码重复次数与发送功率等,发送辅以单音跳频技术(Single-tone Frequency Hopping)的全1序列作为前导序列发起随机接入。
接入响应单元在随机接入单元发送前导码后需要在特定的时间窗内接收随机接入响应(Random Access Response,RAR),随机接入响应包含定时偏移量、小区无线网络临时标识(Cell Radio Network Temporary Identifier,C-RNTI)和调度信息等内容。若接入响应单元在随机接入响应的响应窗内没有接收到正确的随机接入响应,则前导码全局传输次数N加1,用于统计终端在当前覆盖类别下的前导码传输次数Ni也加1,当Ni达到最大值时接入响应单元将切换至下一覆盖类别继续发送前导码。如果当前已是最大覆盖类别,则停留在当前覆盖类别继续发送前导码。每个覆盖类别的前导码传输次数Ni不能超过前导码最大传输次数Nimax,前导码全局传输次数N用于判定整个随机接入过程是否失败。
竞争触发单元接收到正确的随机接入响应消息时,获得上行时间同步和上行资源,由于此时并不能确定随机接入响应消息是发送给自己还是发送给其他终端,因此需向人机交互系统发送无线资源控制连接(Radio Resource Control,RRC)请求,该请求包含待传数据量和功率量冗余等信息。竞争触发单元发送无线资源控制连接请求后立即启动竞争解决定时器,等待竞争解决。
人机交互系统收到无线资源控制连接请求后需进行竞争解决并将结果发送给终端的竞争解决单元,竞争解决单元接收竞争解决的结果。如果竞争解决失败,将对前导码全局传输次数N加1并重新发送前导码以发起随机接入。若竞争解决成功,终端开始进行数据传输。
NB-IoT随机接入过程以增加前导码传输和重复次数的方式降低接入失败概率,即以增加功耗和时延的方式换取覆盖增强。由于终端一般采用电池供电,因此需要在满足一定接入失败概率的条件下尽可能减小系统功耗。因此,在一种实施方式中,终端还包括概率运算单元、模型建立单元和模型求解单元。
概率运算单元用于确定各覆盖类别的接入失败概率和功耗,并利用各覆盖类别的稳态概率对接入失败概率和功耗进行加权,得到随机接入过程的平均接入失败概率和平均功耗。
模型建立单元用于以第i个覆盖类别的前导码最大传输次数为变量,以平均接入失败概率Pc和平均功耗E为第一优先层次的目标函数,以前导码最大传输次数为第二优先层次的目标函数,建立分层多目标非线性整数规划模型。
其中,模型为:min(L1(Pc,E),L2(NΣ)),
约束条件为:
其中,Li为优先层次的序号,NΣ为3个覆盖类别的前导码最大传输次数之和,Ni,max为第i个覆盖类别的前导码最大传输次数。
模型求解单元用于对模型进行求解,例如,采用遗传算法,模拟退火算法,或者约束发和穷举搜索法进行求解,以在保证平均接入失败概率较小的情况下实现超低功耗。
以下为NB-IoT终端软件远程自动更新系统在供电正常、eSIM卡不欠费、NB-IoT基站信号良好情况下进行系统稳定性测试和网络开销对比测试的情况。
在系统稳定性测试中,使用服务器更新软件对3套终端设备分别进行了100次整体替换更新、整体保留更新和增量更新的测试,其中待更新用户程序的更新Hex机器码文件大小为105197个字节,旧版用户程序的Hex机器码文件大小为105181个字节。更新操作成功率对比如图5所示,测试结果表明本实施例的更新应答机制、断点续传机制和丢帧重传机制效果明显,不管是整体更新还是增量更新,更新成功率都达到了100%。
在网络开销对比测试中,进行了3组的网络开销对比。组别1采用上述稳定性测试中使用的Hex文件样例,组别2和组别3是另外新建的两组测试样例。其中组别2中新旧程序代码变动较少,组别3中新旧程序代码变动相对较大。其中,总字节表示Hex机器码文件中所有有效数据的大小;复制字节表示可从芯片复制得到的代码数据块大小;插入字节表示需从服务器端发送给终端UE的代码数据块大小;网络传输字节表示将更新代码块和插入代码块信息按照更新帧格式进行组帧操作后,最终发送给终端的总字节数;节约百分比表示增量更新相较于整体更新节约的网络开销百分比。网络开销对比测试结果如图6所示,测试结果表明增量更新机制可有效降低更新操作过程中的网络开销。
以下为选用智能水表作为终端与本实施例提供的NB-IoT终端远程自动更新系统进行结合复用,形成一套支持远程软件更新的NB-IoT智能水表系统的实施例。NB-IoT智能水表的系统架构从上至下依次是智能水表后台管理系统,NB-IoT网络通信系统(含NB-IoT基站、核心网等),NB-IoT智能水表。后台管理系统通过NB-IoT网络通信系统与智能水表进行数据的双向通信。
NB-IoT智能水表终端采用S32K144作为微控制器MCU芯片,并采用ME3616作为NB-IoT通信模组,同时结合了NB-IoT智能水表功能需求,添加了计量模块、显示模块、报警模块、按键模块和检测模块等。
微控制器的用户程序实现具体的智能水表功能,包括用水量采集和发送、电压检测、阀门开关控制、段式LCD显示、蜂鸣器报警等功能。
终端软件远程更新功能已封装在微控制器的BIOS控制模块中,NB-IoT智能水表用户程序在运行时通过共享中断服务例程的方法可“继承”BIOS程序的更新功能,从而可以实现NB-IoT智能水表程序代码的远程更新功能。
在测试水表过程中中使用后台管理系统配置NB-IoT智能水表每隔20分钟进行一次数据采集和上传操作。经过20次实验,无论是整体更新还是增量更新,NB-IoT智能水表的程序都能被正确更新。实验结果表示NB-IoT终端软件远程自动更新系统在NB-IoT智能水表中的应用效果良好,可稳定、可靠的实现远程软件更新。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (5)

1.一种基于NB-IoT的终端远程自动更新系统,其特征在于,包括NB-IoT人机交互系统以及与所述人机交互系统通信连接的至少一个终端;
所述人机交互系统包括云服务器,所述云服务器包括:
服务器收发模块,用于读取端口数据接收缓冲区存储的所述终端发来的数据,以及将程序更新数据发送至所述终端;另外,
所述终端包括微控制器,以及与所述微控制器连接并用于与所述人机交互系统进行数据通信的通信模组,其中,所述微控制器包括:
Flash存储器,其包括存储用户中断向量表和用户程序的用户程序存储区,以及存储所述云服务器发来的程序更新数据的更新存储区;
Flash驱动模块,用于对所述Flash存储器存储的内容进行读取、擦除和写入;
通信控制模块,用于控制所述通信模组与所述人机交互系统之间的数据通信;
程序更新模块,用于依据所述通信模组接收的所述云服务器发来的程序更新数据,控制所述Flash驱动模块对所述用户程序存储区内的程序进行更新;
所述云服务器还包括:数据比较模块,用于比对整体程序更新数据和所述终端的当前程序数据,得到两者的最长公共子序列;差分获取模块,用于依据所述最长公共子序列从所述整体程序更新数据中分离出差分程序更新数据;位置获取模块,用于得到所述最长公共子序列中包含的数据在所述终端的当前程序数据中的位置,作为终端进行程序更新时所述最长公共子序列中包含数据的设定位置;另外,所述服务器收发模块还将所述最长公共子序列中包含的数据的设定位置发送至所述终端;
其中,所述数据比较模块包括:末位判断单元,用于判断所述整体程序更新数据的末位数据块和所述终端的当前程序数据的末位数据块是否相同;序列形成单元,用于在判定两所述末位数据块相同的情况下,将所述末位数据块记录为相应判断路径下的公共子序列中的末位数据块,并将所述整体程序更新数据和所述终端的当前程序数据的次末位数据块作为新的末位数据块;第一差位比较单元,用于在判定两所述末位数据块不同的情况下,以所述整体程序更新数据的次末位数据块作为新的末位数据块,并使所述末位判断单元继续进行末位数据块是否相同的判断;第二差位比较单元,用于在判定两所述末位数据块不同的情况下,以所述终端的当前程序数据的次末位数据块作为新的末位数据块,并使所述末位判断单元继续进行末位数据块是否相同的判断;序列比较单元,用于在完成所有判断路径之后,将所述序列形成单元记录的所有公共子序列中包含数据块最多的公共子序列作为所述最长公共子序列;
所述云服务器包括:更新文件导入模块,用于导入所述程序更新数据的机器码文件;第一数据组装模块,用于从所述机器码文件中提取出有效数据并组装成更新帧,以使所述服务器收发模块将组装得到的更新帧数据发送至所述终端;第一数据解析模块,用于对接收到的所述终端发来的更新帧进行解析,并得到相应的数据;微处理器包括:第二数据组装模块,用于将待发送给所述云服务器的数据组装成更新帧,以使所述通信模组将组装得到的更新帧数据发送至所述云服务器;第二数据解析模块,用于对接收到的所述更新帧进行解析,并得到相应的数据;其中,所述更新帧包括帧头字段、IMSI码字段、数据长度字段、程序更新数据字段、CRC校验码字段和帧尾字段;
所述云服务器发送给所述终端的更新帧数据依据其包含的程序更新数据的内容划分为不同的类别,包括:更新开始帧,其程序更新数据字段包括帧标识、更新方式、总帧数、帧号、更新代码大小;更新复制帧,其程序更新数据字段包括帧标识、帧号、复制个数、复制地址和复制长度;更新命令帧,其程序更新数据字段包括帧标识和帧号;终端发送给云服务器的更新帧数据依据其包含的程序更新数据的内容划分为不同的类别,包括更新返回帧,在每次服务器端软件发送更新数据帧给终端UE后,终端UE须得返回一个更新返回帧数据,以应答通知服务端更新软件当前帧数据的执行状态;更新返回帧的程序更新数据字段包括帧标识、帧号和返回状态;
并且,Flash存储器还包括用于存储用户程序更新进度的更新进度区;并且,程序更新模块还包括进度记录单元,用于在微控制器接收到云服务器发来的程序更新数据后,向更新进度区写入能够指示出已接收到当次更新帧的记录,并在更新过程完成后擦除更新进度区的记录;更新进度区的更新进度记录提供了断点续传机制,断点续传机制支持设备从上次中断的地方继续进行更新操作,无需重头开始;
所述终端还包括:随机接入单元,用于依据下行参考信号接收功率判断终端的初始覆盖类别,选择与所述初始覆盖类别匹配的物理随机接入信道资源,进而利用前导码发起随机接入;接入响应单元,用于在设定时间窗内未接收到正确的随机接入响应信号时,前导码全局传输次数N加1,当前覆盖类别下的前导码传输次数Ni加1,当Ni达到前导码最大传输次数时,使所述随机接入单元切换至下一覆盖类别并重新发起随机接入;竞争触发单元,用于在设定时间窗内接收到正确的随机接入响应信号时,向所述人机交互系统发送无线资源控制连接请求,该请求包含待传数据量和功率量冗余信息,并触发竞争解决定时器;竞争解决单元,用于接收所述人机交互系统反馈的竞争解决结果,在所述结果为竞争失败时对N加1,并使所述随机接入单元重新发起随机接入,在所述结果为竞争成功时触发所述终端进行数据传输;
所述人机交互系统收到无线资源控制连接请求后需进行竞争解决并将结果发送给终端的竞争解决单元,如果竞争解决失败,将对前导码全局传输次数N加1并重新发送前导码以发起随机接入;若竞争解决成功,终端开始进行数据传输。
2.如权利要求1所述的终端远程自动更新系统,其特征在于,所述Flash存储器还包括:
存储BIOS中断向量表和BIOS程序的BIOS区,所述BIOS程序包括底层驱动API接口,用于所述用户程序的调用。
3.如权利要求1所述的终端远程自动更新系统,其特征在于,所述程序更新模块包括:
整体更新子模块,用于在所述云服务器发来整体程序更新数据的情况下,控制所述Flash驱动模块对所述用户程序存储区内的程序进行替换更新;和/或,
增量更新子模块,用于在所述云服务器发来差分程序更新数据的情况下,控制所述Flash驱动模块对所述用户程序存储区内的程序进行组合更新。
4.如权利要求3所述的终端远程自动更新系统,其特征在于,所述整体更新子模块包括:
整体替换更新单元,用于在预知所述整体程序更新数据的数据量大于所述更新存储区容量的情况下,在接收所述整体程序更新数据时将所述整体程序更新数据直接写入所述用户程序存储区;和/或,
整体保留更新单元,用于在预知所述整体程序更新数据的数据量不大于所述更新存储区容量的情况下,在接收所述整体程序更新数据时将所述整体程序更新数据写入所述更新存储区,在全部写入所述更新存储区之后将所述整体程序更新数据写入所述用户程序存储区;另外,
所述增量更新子模块包括:
复制单元,用于将当前用户程序数据中的与所述整体程序更新数据之间相同的数据复制到所述更新存储区的设定位置;
插入单元,用于将所述差分程序更新数据插入到所述更新存储区的指定位置,形成所述整体程序更新数据;
覆盖单元,用于将所述更新存储区内的所述整体程序更新数据覆盖到所述用户程序存储区,完成对所述用户程序存储区内程序的更新。
5.如权利要求1所述的终端远程自动更新系统,其特征在于,所述终端还包括:
概率运算单元,用于确定各覆盖类别的接入失败概率和功耗,并利用各覆盖类别的稳态概率对所述接入失败概率和功耗进行加权,得到随机接入过程的平均接入失败概率和平均功耗;
模型建立单元,用于以第i个覆盖类别的前导码最大传输次数为变量,以所述平均接入失败概率Pc和平均功耗E为第一优先层次的目标函数,以所述前导码最大传输次数为第二优先层次的目标函数,建立分层多目标非线性整数规划模型;
模型求解单元,用于对所述模型进行求解,得到
其中,
所述模型为:min(L1(Pc,E),L2(N)),
约束条件为:其中,
Li为优先层次的序号,N为3个覆盖类别的前导码最大传输次数之和,Ni,max为第i个覆盖类别的前导码最大传输次数。
CN201911211590.1A 2019-07-02 2019-12-02 一种基于NB-IoT的终端远程自动更新系统 Active CN110750292B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN2019105920243 2019-07-02
CN201910592024.3A CN110457053A (zh) 2019-07-02 2019-07-02 一种基于NB-IoT的终端远程自动更新系统

Publications (2)

Publication Number Publication Date
CN110750292A CN110750292A (zh) 2020-02-04
CN110750292B true CN110750292B (zh) 2024-05-24

Family

ID=68482134

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201910592024.3A Pending CN110457053A (zh) 2019-07-02 2019-07-02 一种基于NB-IoT的终端远程自动更新系统
CN201911211590.1A Active CN110750292B (zh) 2019-07-02 2019-12-02 一种基于NB-IoT的终端远程自动更新系统

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201910592024.3A Pending CN110457053A (zh) 2019-07-02 2019-07-02 一种基于NB-IoT的终端远程自动更新系统

Country Status (1)

Country Link
CN (2) CN110457053A (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111522588B (zh) * 2020-04-16 2023-05-05 珠海泰芯半导体有限公司 一种基于swd协议的芯片运行交互方法及通信系统
CN113805927A (zh) * 2020-06-11 2021-12-17 中移(苏州)软件技术有限公司 一种代码更新方法、装置、电子设备及计算机存储介质
CN111679608A (zh) * 2020-06-16 2020-09-18 南通大学 一种基于NB-IoT的湿地生态环境监测系统
CN111897560A (zh) * 2020-08-27 2020-11-06 吉林大学 基于NB-IoT模块的程序升级系统、方法、设备以及存储介质
CN112052019B (zh) * 2020-09-11 2022-10-14 上海庆科信息技术有限公司 模组烧录授权追踪系统、模组烧录方法及装置
CN112256596B (zh) * 2020-10-23 2022-07-05 英业达科技有限公司 一种电子装置固件中讯号中继器的刷新方法
TWI773089B (zh) * 2021-01-15 2022-08-01 安瀚科技股份有限公司 用於遠端更新控制腳本之控制系統
JP2022160125A (ja) * 2021-04-06 2022-10-19 トヨタ自動車株式会社 センタ、配信制御方法、及び配信制御プログラム
CN113590165A (zh) * 2021-09-27 2021-11-02 成都千嘉科技有限公司 智能远传表嵌入式软件远程升级方法
CN115086169A (zh) * 2022-05-23 2022-09-20 宿迁学院产业技术研究院 一种基于5g nr的远程程序更新方法和系统
CN115033264A (zh) * 2022-05-25 2022-09-09 苏州大学 一种供暖阀门控制系统的远程更新方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102510409A (zh) * 2011-12-19 2012-06-20 厦门雅迅网络股份有限公司 一种利用无线网络对移动终端程序快速远程更新的方法及系统
CN105022646A (zh) * 2015-07-13 2015-11-04 苏州大学 一种数据无损的远程代码更新方法和装置
CN109828769A (zh) * 2018-12-24 2019-05-31 同济大学 一种基于tcp/ip的嵌入式程序远程更新系统及方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030182414A1 (en) * 2003-05-13 2003-09-25 O'neill Patrick J. System and method for updating and distributing information
US10866798B2 (en) * 2017-12-28 2020-12-15 Intel Corporation Firmware upgrade method and apparatus

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102510409A (zh) * 2011-12-19 2012-06-20 厦门雅迅网络股份有限公司 一种利用无线网络对移动终端程序快速远程更新的方法及系统
CN105022646A (zh) * 2015-07-13 2015-11-04 苏州大学 一种数据无损的远程代码更新方法和装置
CN109828769A (zh) * 2018-12-24 2019-05-31 同济大学 一种基于tcp/ip的嵌入式程序远程更新系统及方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
简鑫等.窄带物联网覆盖类别更新机制性能分析与优化.通信学报.2018,第70-79页. *
陈成等.基于NB-IoT的嵌入式远程软件更新系统设计.微电子学与计算机.2019,第12-22页. *

Also Published As

Publication number Publication date
CN110457053A (zh) 2019-11-15
CN110750292A (zh) 2020-02-04

Similar Documents

Publication Publication Date Title
CN110750292B (zh) 一种基于NB-IoT的终端远程自动更新系统
CN106569847B (zh) 一种用于车载系统基于移动网络实现iap远程升级的方法
CN101557583B (zh) 直放站设备嵌入式软件的远程升级与版本切换方法
CN109101261A (zh) 一种数据采集传输仪终端的远程在线升级方法及系统
CN103530146B (zh) 低功耗嵌入式设备远程无线升级方法
CN102830984B (zh) 固件更新的方法、芯片以及通信终端
CN102665196B (zh) 一种无线传感器网络的在线渐进式程序更新方法
CN103677869B (zh) 无线传感器网络节点远程代码更新系统及方法
CN106257417A (zh) 引导程序升级方法、嵌入式设备、控制设备及嵌入式系统
CN108733797B (zh) 文件处理方法及相关装置
CN108829477A (zh) 界面跳转方法、装置、计算机设备和存储介质
CN101615128B (zh) 一种单片机在线升级的方法及装置
CN110636537B (zh) 一种基于ttcn-3的多卡移动终端测试系统及其方法
CN109144532B (zh) 升级方法及装置
CN109189434A (zh) 一种电能表的在线升级方法
CN108510287A (zh) 客户回访的判断方法、电子装置及计算机可读存储介质
CN109982355B (zh) 保存和恢复网络通路的方法及其装置、终端和存储介质
CN105187390B (zh) 主动式移动终端恶意软件网络流量数据集获取方法及系统
CN113110860A (zh) 一种嵌入式终端远程软件更新方法
CN113608772A (zh) 一种应用程序升级方法及装置
CN112698857A (zh) 一种数据刷写的方法及设备
CN110673862A (zh) 兼用多模式的嵌入式设备固件无线升级方法、设备、介质
CN104199661A (zh) 一种面向mc1321x的无线传感器网络wsn重编程方法
CN105760777A (zh) 一种基于智能平台的安全信息管理方法及系统
CN108763357B (zh) 文件处理方法及相关装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant