一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种代码更新方法、装置、电子设备及计算机存储介质与流程

2021-12-17 18:22:00 来源:中国专利 TAG:


1.本技术涉及通信领域,尤其涉及一种代码更新方法、装置、电子设备及计算机存储介质。


背景技术:

2.目前,国内外研究人员主要从更新程序镜像的云端分发和嵌入式终端的本地引导两个方向进行嵌入式终端软件远程更新的研究。从更新程序镜像云端分发角度出发,终端程序更新技术可分一般采用整体更新方式更新终端程序。但采用整体更新方式更新终端程序时,需要通过无线网络的方式传输完整的新版程序镜像以实现对旧镜像的替换操作,此方法简单方便,程序复杂度低,但在更新终端程序时会占用较大的网络开销,对于终端程序的更新速度慢,影响云端以及终端其它业务的处理进程。
3.目前市场上对于远程代码的更新主要采用以下几种无线更新方式:使用紫峰协议(即zigbee)网络实现远程节点更新,但是zigbee只能实现自组网内部数据通信,易受外界环境影响;使用通用分组无线服务(gprs,general packet radio service)网络的flash更新,但是gprs通信模块功耗大,信号穿透能力有限。以窄带物联网(nb-iot,narrow band internet of things)为例,随着物联网终端的普及,传统的现场烧录芯片的更新方式已经无法满足当前对终端代码进行更新的需求,无线更新方式更适用于当前的物联网终端数量众多、分布广泛、无人值守的应用场景。国内外的物联网更新系统大多采用客户机/服务器(c/s,client/server)架构,服务器端负责管理和发布更新代码,客户端具体的硬件平台负责更新代码的接收、存储和更新操作。
4.在窄带物联网系统中,当大规模部署物联网设备后,很多部署于复杂环境中物联网终端的设备维护方式困难,维护成本高,需要耗费大量人力财力,不符合实际需求,对于nb-iot智能终端远程更新系统的设计和实现,可为解决数量众多、分布广泛的物联网设备的维护和更新问题提供解决方案。nb-iot传输技术具有大连接、广覆盖、深穿透、低成本、低功耗等优点,但是由于nb-iot作为新一代传输技术,存在软硬件开发复杂度高、开发成本大等特点。不同的nb-iot终端软件远程自动更新系统中使用到的硬件平台都不尽相同,这就使得终端的软件和硬件在不同更新系统之间的兼容性和移植性较差。
5.综上,现有的nb-iot终端软件远程自动更新的可复用性和可移植性较差,在不同硬件平台之间更新功能移植时开发难度较高,开发周期较长,并且在更新终端程序时会占用较大的网络开销,对于终端程序的更新速度慢,影响云端以及终端其它业务的处理进程。


技术实现要素:

6.为解决上述技术问题,本技术提供了一种代码更新方法、装置、电子设备及计算机可读存储介质。
7.本技术提供的代码更新方法,应用于第一设备,所述方法包括:
8.确定第一代码数据以及第二代码数据的最长公共子序列;
9.基于所述最长公共子序列确定所述第一代码数据的目标更新信息;
10.将所述目标更新信息发送至第二设备,以通过第二设备基于所述目标更新信息对所述第二设备中的第二代码数据进行更新。
11.在本技术一可选实施方式中,所述基于所述最长公共子序列确定所述第一代码数据的目标更新信息,包括:
12.基于所述最长公共子序列确定所述第一代码数据中的第一目标更新信息以及第二目标更新信息;所述第一目标更新信息用于确定所述第二代码数据中需要更新的代码数据,所述第二目标更新信息用于确定所述第二代码数据中不需要更新的代码数据。
13.在本技术一可选实施方式中,所述基于所述最长公共子序列确定所述第一代码数据中的第一目标更新信息以及第二目标更新信息,包括:
14.基于所述最长公共子序列在所述第一代码数据中的位置,确定所述第一代码数据中的第一目标代码数据以及第二目标代码数据;所述第一目标代码数据为所述第二代码数据中不需要更新的代码数据,所述第二目标代码数据为所述第二代码数据中需要更新的代码数据;
15.基于所述第一目标代码数据确定所述第一目标更新信息以及基于所述第二目标代码数据确定所述第二目标更新信息。
16.在本技术一可选实施方式中,所述基于所述第一目标代码数据确定所述第一目标更新信息以及基于所述第二目标代码数据确定所述第二目标更新信息,包括:
17.基于所述第一目标代码数据的源地址信息、目标地址信息、数据长度信息以及第一标识信息确定所述第一目标更新信息;其中,所述第一标识信息用于表征所述第一目标代码数据为所述第二代码数据中不需要更新的代码数据;
18.基于所述第二目标代码数据的目标地址信息、数据长度信息、数据信息以及第二标识信息确定所述第二目标更新信息;其中,所述第二标识信息用于表征所述第二目标代码数据为所述第二代码数据中需要更新的代码数据。
19.在本技术一可选实施方式中,所述确定所述第一代码数据以及第二代码数据的最长公共子序列,包括:
20.基于所述第一代码数据确定所述第一代码数据的第一链表数据以及基于所述第二代码数据确定所述第二代码数据的第二链表数据;
21.基于所述第一链表数据以及第二链表数据确定所述第一代码数据以及第二代码数据的最长公共子序列。
22.在本技术一可选实施方式中,所述基于所述第一代码数据确定所述第一代码数据的第一链表数据以及基于所述第二代码数据确定所述第二代码数据的第二链表数据,包括:
23.提取所述第一代码数据中第一目标数据,基于所述第一目标数据得到所述第一链表数据;所述第一目标数据为所述第一代码数据中满足目标数据类型的一行或多行代码数据;
24.提取所述第二代码数据中的第二目标数据,基于所述第二目标数据得到所述第二链表数据;所述第二目标数据为所述第二代码数据中满足所述目标数据类型的一行或多行代码数据。
25.本技术还提供了一种代码更新方法,应用于第二设备,所述方法包括:
26.接收第一设备发送的目标更新信息,所述目标更新信息是基于第一代码数据以及第二代码数据的最长公共子序列确定的;
27.基于所述目标更新信息,对第二代码数据进行更新。
28.在本技术一可选实施方式中,所述目标更新信息包括第一目标更新信息以及第二目标更新信息;所述第一目标更新信息用于确定所述第二代码数据中需要更新的代码数据,所述第二目标更新信息用于确定所述第二代码数据中不需要更新的代码数据。
29.在本技术一可选实施方式中,所述第一代码数据包括第一目标代码数据以及第二目标代码数据;
30.所述第一目标更新信息包括所述第一目标代码数据的源地址信息、目标地址信息、数据长度信息以及第一标识信息;其中,所述第一标识信息用于表征所述第一目标代码数据为所述第二代码数据中不需要更新的代码数据;
31.所述第二目标更新信息包括所述第二目标代码数据的目标地址信息、数据长度信息、数据信息以及第二标识信息;其中,所述第二标识信息用于表征所述第二目标代码数据为所述第二代码数据中需要更新的代码数据。
32.在本技术一可选实施方式中,所述基于所述目标更新信息,对第二代码数据进行更新,包括:
33.基于所述第一目标更新信息确定所述第二代码数据中不需要更新的代码数据为所述第一目标代码数据;以及,
34.基于所述第二目标更新信息确定所述第二代码数据中需要更新的代码数据为所述第二目标代码数据,并基于所述第二目标代码数据的源地址信息、目标地址信息以及数据信息对所述第二代码数据进行更新。
35.本技术还提供一种代码更新装置,应用于第一设备,所述装置包括:
36.第一确定单元,用于确定第一代码数据以及第二代码数据的最长公共子序列;
37.第二确定单元,用于基于所述最长公共子序列确定所述第一代码数据的目标更新信息;
38.发送单元,用于将所述目标更新信息发送至第二设备,以通过第二设备基于所述目标更新信息对所述第二设备中的第二代码数据进行更新。
39.在本技术一可选实施方式中,所述第二确定单元具体用于:基于所述最长公共子序列确定所述第一代码数据中的第一目标更新信息以及第二目标更新信息;所述第一目标更新信息用于确定所述第二代码数据中需要更新的代码数据,所述第二目标更新信息用于确定所述第二代码数据中不需要更新的代码数据。
40.在本技术一可选实施方式中,所述第二确定单元还具体用于:基于所述最长公共子序列在所述第一代码数据中的位置,确定所述第一代码数据中的第一目标代码数据以及第二目标代码数据;所述第一目标代码数据为所述第二代码数据中不需要更新的代码数据,所述第二目标代码数据为所述第二代码数据中需要更新的代码数据;基于所述第一目标代码数据确定所述第一目标更新信息以及基于所述第二目标代码数据确定所述第二目标更新信息。
41.在本技术一可选实施方式中,所述第二确定单元还具体用于:基于所述第一目标
代码数据的源地址信息、目标地址信息、数据长度信息以及第一标识信息确定所述第一目标更新信息;其中,所述第一标识信息用于表征所述第一目标代码数据为所述第二代码数据中不需要更新的代码数据;
42.基于所述第二目标代码数据的目标地址信息、数据长度信息、数据信息以及第二标识信息确定所述第二目标更新信息;其中,所述第二标识信息用于表征所述第二目标代码数据为所述第二代码数据中需要更新的代码数据。
43.在本技术一可选实施方式中,所述第一确定单元具体用于:基于所述第一代码数据确定所述第一代码数据的第一链表数据以及基于所述第二代码数据确定所述第二代码数据的第二链表数据;
44.基于所述第一链表数据以及第二链表数据确定所述第一代码数据以及第二代码数据的最长公共子序列。
45.在本技术一可选实施方式中,所述第一确定单元还具体用于:提取所述第一代码数据中第一目标数据,基于所述第一目标数据得到所述第一链表数据;所述第一目标数据为所述第一代码数据中满足目标数据类型的一行或多行代码数据;
46.提取所述第二代码数据中的第二目标数据,基于所述第二目标数据得到所述第二链表数据;所述第二目标数据为所述第二代码数据中满足所述目标数据类型的一行或多行代码数据。
47.本技术还提供一种代码更新装置,应用于第二设备,所述装置包括:
48.接收单元,用于接收第一设备发送的目标更新信息,所述目标更新信息是基于第一代码数据以及第二代码数据的最长公共子序列确定的;
49.更新单元,用于基于所述目标更新信息,对第二代码数据进行更新。
50.在本技术一可选实施方式中,所述目标更新信息包括第一目标更新信息以及第二目标更新信息;所述第一目标更新信息用于确定所述第二代码数据中需要更新的代码数据,所述第二目标更新信息用于确定所述第二代码数据中不需要更新的代码数据。
51.在本技术一可选实施方式中,所述第一代码数据包括第一目标代码数据以及第二目标代码数据;
52.所述第一目标更新信息包括所述第一目标代码数据的源地址信息、目标地址信息、数据长度信息以及第一标识信息;其中,所述第一标识信息用于表征所述第一目标代码数据为所述第二代码数据中不需要更新的代码数据;
53.所述第二目标更新信息包括所述第二目标代码数据的目标地址信息、数据长度信息、数据信息以及第二标识信息;其中,所述第二标识信息用于表征所述第二目标代码数据为所述第二代码数据中需要更新的代码数据。
54.在本技术一可选实施方式中,所述更新单元具体用于:基于所述第一目标更新信息确定所述第二代码数据中不需要更新的代码数据为所述第一目标代码数据;以及,基于所述第二目标更新信息确定所述第二代码数据中需要更新的代码数据为所述第二目标代码数据,并基于所述第二目标代码数据的源地址信息、目标地址信息以及数据信息对所述第二代码数据进行更新。
55.本技术提供一种电子设备,包括:处理器和存储器,该存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,执行上述数据传输方法。
56.本技术提供一种计算机可读存储介质,其特征在于,用于存储计算机程序,所述计算机程序使得计算机执行上述数据传输方法。
57.本技术的上述一个或多个技术方案,至少具有如下一种或多种技术效果:
58.1、本技术提供的一种代码更新方法和装置,确定第一代码数据以及第二代码数据的最长公共子序列;基于所述最长公共子序列确定所述第一代码数据的目标更新信息;将所述目标更新信息发送至第二设备,以通过第二设备基于所述目标更新信息对所述第二设备中的第二代码数据进行更新。整个代码更新过程,采用增量更新的方式,在第一设备向第二设备传输代码数据时由于无需传输完整的更新程序,只需传输产生更新部分的代码数据,可以有效的节省网络传输开销,缩短更新时间,且具有较强的网络安全性。第二设备在对第二代码数据更新时,只需要基于接收到的目标更新信息对第二目标代码数据中需要更新的部分进行更新。
59.2、本技术提供的一种代码更新方法和装置,基于所述最长公共子序列确定所述第一代码数据中的第一目标更新信息以及第二目标更新信息;所述第一目标更新信息用于确定所述第二代码数据中需要更新的代码数据,所述第二目标更新信息用于确定所述第二代码数据中不需要更新的代码数据。基于此,能够基于最长公共子序列确定出第二代码数据中需要更新的代码数据和不需要更新的代码数据。
60.3、本技术提供的一种代码更新方法和装置,基于所述最长公共子序列在所述第一代码数据中的位置,确定所述第一代码数据中的第一目标代码数据以及第二目标代码数据;所述第一目标代码数据为所述第二代码数据中不需要更新的代码数据,所述第二目标代码数据为所述第二代码数据中需要更新的代码数据;基于所述第一目标代码数据确定所述第一目标更新信息以及基于所述第二目标代码数据确定所述第二目标更新信息。基于此,能够在基于最长公共子序列在第一代码数据中的位置和长度,进一步确定出第二代码数据中需要更新的代码数据和不需要更新的代码数据后,将需要更新的代码数据封装为第二目标更新信息,将不需要更新的代码数据封装为第一目标更新信息。
61.4、本技术提供的一种代码更新方法和装置,基于所述第一目标代码数据的源地址信息、目标地址信息、数据长度信息以及第一标识信息确定所述第一目标更新信息;其中,所述第一标识信息用于表征所述第一目标代码数据为所述第二代码数据中不需要更新的代码数据;基于所述第二目标代码数据的目标地址信息、数据长度信息、数据信息以及第二标识信息确定所述第二目标更新信息;其中,所述第二标识信息用于表征所述第二目标代码数据为所述第二代码数据中需要更新的代码数据。基于此,能够具体将不需要更新的代码数据的源地址、目标地址、数据长度信息以及标识信息进行封装,封装成复制帧;将需要更新的代码数据的的目标地址信息、数据长度信息、数据信息以及标识信息进行封装,封装称为插入帧。
62.5、本技术提供的一种代码更新方法和装置,基于所述第一代码数据确定所述第一代码数据的第一链表数据以及基于所述第二代码数据确定所述第二代码数据的第二链表数据;基于所述第一链表数据以及第二链表数据确定所述第一代码数据以及第二代码数据的最长公共子序列。基于此,能够将第一代码数据和第二代码数据分别以链表的形式表示,从而基于第一代码数据形成的链表以及基于第二代码数据确定的链表,进一步利用最长公共子序列的方法确定出两种链表相同的部分。
63.6、本技术提供的一种代码更新方法和装置,提取所述第一代码数据中第一目标数据,基于所述第一目标数据得到所述第一链表数据;所述第一目标数据为所述第一代码数据中满足目标数据类型的一行或多行代码数据;提取所述第二代码数据中的第二目标数据,基于所述第二目标数据得到所述第二链表数据;所述第二目标数据为所述第二代码数据中满足所述目标数据类型的一行或多行代码数据。基于此,能够从第一代码数据中提取满足一定类型的代码数据,组成第一链表数据,从第二代码数据中提取满足一定类型的代码数据,组成第二链表数据。
附图说明
64.图1为物联网系统整体架构图;
65.图2为me3616模组的电路图;
66.图3为本技术实施例的代码更新方法实现过程的代码数据交互示意图;
67.图4为本技术实施例提供的代码更新方法的流程示意图一;
68.图5为本技术实施例提供的hex机器码数据中有效数据的提取流程图;
69.图6为确定序列x和y的lcs的算法矩阵及回溯图;
70.图7为本技术实施例提供的代码更新方法的流程示意图二;
71.图8为本技术实施例提供的第二设备进行代码更新的流程图;
72.图9为nb-iot智能水表系统架构;
73.图10为本技术实施例提供的一种代码更新装置的结构组成示意图一;
74.图11为本技术实施例提供的一种代码更新装置的结构组成示意图二;
75.图12为本技术实施例提供的一种电子设备示意性结构图;
76.图13为本技术实施例的芯片的示意性结构图。
具体实施方式
77.为了能够更加详尽地了解本技术的特点与技术内容,下面结合附图对本技术的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本技术。
78.本技术首先提供了一套稳定可靠、可复用和可移植的nb-iot智能终端远程更新系统,为nb-iot系统中的终端代码的自动更新提供系统架构,本技术提供的智能终端远程更新系统及代码更新方法能够应用于多种需要实现远程代码更新的场景中。
79.图1为物联网系统整体架构图,如图1所示,nb-iot的物联网智能终端远程更新系统主要由物联网智能终端、nb-iot中继站以及人机交互终端3个部分组成:
80.1、物联网智能终端。物联网智能终端以微控制器为核心,并集成了嵌入式用户身份识别卡(esim,embedded subscriber identification module)通信模组,具有数据采集、简单运算、控制等基本功能。
81.本技术对于nb-iot智能终端远程更新系统的物联网智能终端的设计主要包括硬件设计和软件设计两部分。
82.智能终端软件和硬件设计对于整个远程更新系统的非常重要,因为终端的设备形式有很多种,例如nb-iot智能抄表(例如:智能燃气表,水表,电表)、nb-iot智慧城市(例如:路灯、停车、垃圾桶管理)、nb-iot智能农业等,这些终端设备功能不一,需统一设计出一套
统一的终端架构,具体包括软硬件设计及更新机制的实现。智能设备硬件一般由主控芯片外接通信模组构成,为了提高nb-iot智能终端的复用性和可移植性,本技术选用恩智浦公司的k64,该芯片外设接口多,计算主频能够达到112兆赫兹(mhz),充分满足对于代码数据更新的需求。通信模组选用基于nb-iot通信协议的me3616,图2为me3616模组的电路图,me3616模组尺寸较小、功耗低、集成定位芯片,能满足绝大部分的工作场,芯片集成硬件最小系统,包括电源电路、滤波电路、晶振电路和烧写器电路,各个电路完成其基本功能无差错的情况下,芯片集成的最小硬件系统可以运行,提供基本的运行功能。通信模组采用现成模块,设计的外围电路包括天线、esim卡电路以及通用异步收发传输器(uart,universal asynchronous receiver/transmitter)串口通信电路。
83.终端的软件是整个远程更新系统的核心之一。终端软件的设计主要包括内核程序基本输入输出系统(bios,basic input output system)和用户程序(即user程序)设计和代码更新机制设计。bios程序主要完成的功能如下:(1)初始化系统时钟。芯片上电启动,首先运行bios,进行系统时钟初始化,给出确定的内核时钟与总线时钟;(2)启动定时器;(3)给出底层驱动调用方式;(4)提供远程更新user程序功能;(5)其他功能。bios程序启动后会为终端中user程序的执行准备好软硬件环境,包括启动看门狗、判断user程序以及跳转user程序等功能。nb-iot的物联网智能终端远程更新系统的终端的软件的设计具体包括链接文件的设计、操作系统的设计、构件设计以及更新功能的设计等4个部分,具体介绍如下:
84.1)链接文件修改
85.终端程序中的user程序是真正的用户编程程序,程序的具体功能按照实际项目需求而定。物联网项目中user程序的常用功能包括传感器数据的采集与存储、远程网络的连接与数据发送、硬件执行机构的运行等。在前述的nb-iot智能终端远程更新系统的架构下,user程序可调用bios内驻留的应用程序接口(api,application programming interface)来实现大部分功能。将所有与底层硬件打交道的操作和远程代码更新的操作固化于bios程序中,user程序可将重心集中于应用层软件的开发与实现。
86.为实现bios和user程序共享中断服务例程,本技术的nb-iot智能终端远程更新系统在bios程序中随机存取存储器(ram,random access memory)的起始位置开辟了interrupts_ram段,该段占据1kb空间大小,用于存储bios程序flash中的中断向量区数据。bios程序开辟段操作,可通过修改链接文件来实现,具体实现代码为:
[0087][0088]
主控芯片上电后会将bios程序中的中断向量表区数据复制至interrupts_ram段中,并修改中断向量表起始地址寄存器scb->vtor为interrupts_ram段首地址,从而实现bios和user程序的中断服务例程共享。同时,bios程序为user程序提供一个修改指定中断服务的接口函数setvector,user程序可使用该函数动态装载自己的中断服务例程。
[0089]
上面介绍了bios和user程序如何共享中断服务例程,其中就包括了svc中断服务例程。user程序只需主动软件触发管理程序调用(svc,supervisor call)中断后将读取寄存器r0中的值即可获得bios程序对外提供的api函数接口表地址。user程序主动触发svc中断函数svc1_init如下,汇编语句“svc1”可触发svc中断,r0作为输出寄存器保存api函数接口表地址,实现代码如下:
[0090][0091]
2)操作系统部分:
[0092]
实时操作系统(rtos,real time operating system)是指具有较高实时性的嵌入式操作系统,其能够在较短的确定时间内完成特定的系统功能或中断响应,主要用于对响应时间有较高实时性要求的嵌入式系统,如物联网终端、工业控制设备、军事设备、航空航天等领域。本技术在bios程序中驻留了mbedos实时操作系统,mbedos的运行依赖于系统节拍定时器(即systick)、svc和可悬起异常(即pendsv)中断,而bios对外驱动构件api的实现
也依赖于svc中断,因此user程序启动mbedos时需避免两个svc中断之间的相互干扰,本技术采用svc中断动态装载来同时实现提供对外函数接口功能和操作系统的内核功能调度功能,实现具体代码如下:
[0093]
setvector(svcall_irqn,(uint_32)&svc_irq);
[0094]
//重定向svc中断,方便user获取函数接口api
[0095]
projectjump(userbase);
[0096]
//跳转user程序
[0097]
若user程序中执行启动mbedos,再将svc中断重新装载成svc_handler即可。bios程序已将mbedos的启动操作封装成函数os_start,在该函数中重新装载了svc中断并实现了mbedos的启动,具体实现代码如下:
[0098][0099]
3)构件设计
[0100]
构件主要包括驱动构件和应用构件,底层的驱动构件包括模/数转换器(adc,analog-to-digital converter)、flash、通用型输入输出(gpio,general-purpose input/output)、i2c总线、uart等和硬件直接打交道,很多厂商的软件开发工具包(sdk,software development kit)都提供了基本的api接口程序,我们只需简单的封装下,适用于我们的系统即可。应用构件需要完成u_com和u_update。u_com构件是微控制单元(mcu,microcontroller unit)与通信模组的沟通桥梁,其使用基础构件uart将一条条分散的at(即attention)指令封装成带有独立功能的驱动函数,实现主控芯片与通信模组之间的数据通信,从而实现终端的联网和数据远传等功能。从功能角度出发,u_com构件提供了初始化、数据发送与数据接收功能。此外,u_com构件还提供了较为常用的其它接口函数,例如:开关通信模块电源函数、获取基站信息函数及获取模组信息函数等。
[0101]
u_update是用于实现终端软件远程更新的函数构件。在终端使用u_com构件获取到更新帧数据后,u_update构件使用基础构件flash进行更新复制、插入、校验等操作。u_update构件提供了初始化,接收更新数据,返回更新数据、数据帧检查等功能。还将所有与硬件相关的系数作为函数参数,方便实现本构件在不同芯片之间的移植操作。u_update构件中对flash复制、插入等操作实现了构件内部封装,应用层软件无需了解具体flash的操作,可降低开发难度。
[0102]
4)更新功能设计
[0103]
更新功能主要包含2个部分,第一部分是终端联网,这部分由之前设计好的通信组
件u_com,具体流程不赘述;第二部分是远程更新操作流程,在终端联网后,更新数据是在u_com的串口中断中实现,终端一旦接收到完整的一帧更新数据,按照帧标识的不同,转向相应的操作,当所有数据接收完毕后,进行更新代码的覆盖并转向新的代码运行。
[0104]
2、nb-iot中继站。nb-iot中继站是一种基于nb-iot的协议的信息传递系统,由nb-iot基站和云服务器组成,起到中转传输数据的作用。
[0105]
nb-iot中继站一般使用的是运营商提供的环境及相应通信模块。
[0106]
3、人机交互终端。人机交互终端可以为网页、app(即手机软件)、微信小程序等,主要用于获取远程终端信息或者向远程终端传递信息,达到控制目的。
[0107]
人机交互终端需要做的工作是将代码数据中有效数据的解析与提取、侦听指定端口实现与终端的数据交互和代码数据的增量更新机制的实现。
[0108]
下面基于上述nb-iot的物联网智能终端远程更新系统来说明并实现本技术的代码更新方法的各个实施例。
[0109]
图3为本技术实施例的代码更新方法实现过程的代码数据交互示意图,如图3所示,本技术实施例通过在服务器端获取新代码数据和旧代码数据(即新版user和旧版user)的差分数据,将该差分数据传输至终端设备,由终端设备根据接收到的新版user和旧版user的差分数据确定新版user,从而最终实现对终端代码的更新。这里,服务器即属于本技术实施例的第一设备,终端ue即为本技术实施例的第二设备,新版user即为本技术实施例的第一代码数据,旧版user即为本技术实施例的第二代码数据。
[0110]
图4为本技术实施例提供的代码更新方法的流程示意图一,如图4所示,所述方法应用于第一设备,包括如下步骤:
[0111]
步骤401:确定第一代码数据以及第二代码数据的最长公共子序列。
[0112]
这里,第一代码数据为新版的user程序,第二代码数据为旧版的user程序,作为一种优选的实施方式,本技术实施例的第一代码数据可以为新版user程序的hex(即十六进制)机器码数据,第二代码数据可以为旧版user程序的hex机器码数据。
[0113]
本技术一可选实施方式中,所述确定所述第一代码数据以及第二代码数据的最长公共子序列,包括:
[0114]
基于所述第一代码数据确定所述第一代码数据的第一链表数据以及基于所述第二代码数据确定所述第二代码数据的第二链表数据;
[0115]
基于所述第一链表数据以及第二链表数据确定所述第一代码数据以及第二代码数据的最长公共子序列。
[0116]
作为一种具体的实施方式,所述基于所述第一代码数据确定所述第一代码数据的第一链表数据以及基于所述第二代码数据确定所述第二代码数据的第二链表数据,包括:
[0117]
提取所述第一代码数据中第一目标数据,基于所述第一目标数据得到所述第一链表数据;所述第一目标数据为所述第一代码数据中满足目标数据类型的一行或多行代码数据;
[0118]
提取所述第二代码数据中的第二目标数据,基于所述第二目标数据得到所述第二链表数据;所述第二目标数据为所述第二代码数据中满足所述目标数据类型的一行或多行代码数据。
[0119]
具体的,第一设备可以为服务器或人机交互终端。本技术实施例通过在第一设备
侧导入新版user程序的hex机器码程序和旧版user程序的hex机器码数据,并分别提取新版user程序的hex机器码数据以及旧版user程序的hex机器码数据中的有效数据,图5为本技术实施例提供的hex机器码数据中有效数据的提取流程图,按照图5所示的流程,即可分别提取新版user程序的hex机器码有效数据以及旧版user程序的hex机器码数据中的有效数据,进而构造新版user程序的hex机器码有效数据的行记录链表以及旧版user程序的hex机器码有效数据的行记录链表。
[0120]
需要说明的是,图5中的每行hex机器码数据中,记录类型“00”代表用来记录数据,记录类型“02”代表标识扩展段地址,记录类型“03”代表开始段记录。通过按照设定的记录类型提取hex机器码数据中的有效数据,能够同时将提取hex机器码有效数据的地址信息存入hex机器码有效数据的行记录链表中。本技术实施例在构建hex行记录链表时,hex数据行以结构体作为存储形式,在结构体中记录了hex数据中每行记录的行号、偏移量信息和有效数据等内容。
[0121]
基于新版user程序的hex机器码有效数据的行记录链表以及旧版user程序的hex机器码有效数据的行记录链表进一步确定新版user程序的hex机器码有效数据以及旧版user程序的hex机器码有效数据的最长公共子序列。
[0122]
这里,确定新版user程序的hex机器码有效数据以及旧版user程序的hex机器码有效数据的最长公共子序列,主要是为了比较新版user程序的hex机器码有效数据以及旧版user程序的hex机器码有效数据的区别,从而确定新版user程序的hex机器码有效数据相对于旧版user程序的hex机器码有效数据产生更新的部分,为第一设备向第二设备发送第一代码数据和第二代码数据的差分数据提供数据基础。
[0123]
这里,最长公共子序列(lcs,longest common subsequence)是指两个序列的相同的最长顺序子串,该子串不要求在原序列中连续,但必须按原顺序依次排列。
[0124]
设有序列x={x1,x2,x3...x
m
},y={y1,y2,y3...y
n
}。x={x1,x2,x3...x
m
}为序列x的前i个字符集合(1≤i≤m),y={y1,y2,y3...y
n
}为序列y的前j个字符集合(1≤j≤n),lcs(x
i
,y
j
)为前缀x
i
和前缀y
j
的最长公共子序列的集合,c[i,j]为前缀x
i
和前缀y
j
的最长公共子序列长度。
[0125]
(1)如果x
m
=y
n
,即序列x和y的最后一个元素相同,则lcs(x
m
,y
n
)可由序列x
m-1
和y
n-1
的最长公共子序列与x
m
或y
n
得到,公式如下:
[0126]
lcs(x
m
,y
n
)=lcs(x
m-1
,y
n-1
)∧x
m
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
[0127]
c[m,n]=c[m-1,n-1] 1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
[0128]
(2)如果x
m
≠y
n
,即序列x和y的最后一个元素不同,则lcs(x
m
,y
n
)可由序列x
m-1
和y
n
或序列x
m
和y
n-1
中较多的公共子序列得到,公式如下:
[0129]
lcs(x
m
,y
n
)=max{lcs(x
m
,y
n-1
),lcs(x
m-1
,y
n
)}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
[0130]
c[m,n]=max{c[m,n-1],c[m-1,n]}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
[0131]
从以上情况可以分析,lcs问题具有最优子结构特征,可用动态规划实现求解。lcs问题的递推关如下:
[0132][0133][0134]
以序列x={a,b,c,d,b,c,a},y={b,a,c,b,d,a}为例,构造序列x,y的最长公共子序列。通过公式(1)~(6)可求得二维数组c,并可通过反向回溯获得序列x和y最长公共子序列为lcs(x,y)={a,b,d,a}。图6为确定序列x和y的lcs的算法矩阵及回溯图。
[0135]
本技术实施例通过上述确定lcs的方法,即可确定新版user程序的hex机器码有效数据以及旧版user程序的hex机器码有效数据的最长公共子序列,相当于确定第一代码数据和第二代码数据的最长公共子序列。
[0136]
步骤402:基于所述最长公共子序列确定所述第一代码数据的目标更新信息。
[0137]
本技术一可选实施方式中,所述基于所述最长公共子序列确定所述第一代码数据的目标更新信息,包括:
[0138]
基于所述最长公共子序列确定所述第一代码数据中的第一目标更新信息以及第二目标更新信息;所述第一目标更新信息用于确定所述第二代码数据中需要更新的代码数据,所述第二目标更新信息用于确定所述第二代码数据中不需要更新的代码数据。
[0139]
作为一种实施方式,所述基于所述最长公共子序列确定所述第一代码数据中的第一目标更新信息以及第二目标更新信息,包括:
[0140]
基于所述最长公共子序列在所述第一代码数据中的位置,确定所述第一代码数据中的第一目标代码数据以及第二目标代码数据;所述第一目标代码数据为所述第二代码数据中不需要更新的代码数据,所述第二目标代码数据为所述第二代码数据中需要更新的代码数据;
[0141]
基于所述第一目标代码数据确定所述第一目标更新信息以及基于所述第二目标代码数据确定所述第二目标更新信息。
[0142]
具体的,本技术实施例利用了hex机器码文件格式的特点,将hex文件的一行记录作为文本比较的基本单位,将其中数据区信息作为待比较的元素,其他字段数据作为辅助信息。如此进行新版user程序的hex机器码有效数据中以及旧版user程序的hex机器码有效数据文本的比较,将hex行记录链表中每行记录中的有效数据作为构造最长公共子序列的基本比较单元,通过确定新版user程序的hex机器码有效数据以及旧版user程序的hex机器码有效数据的最长公共子序列,根据最长公共子序列在新版user程序的hex机器码数据的行号,得到新版user程序的hex机器码数据行记录链表以及旧版user程序的hex机器码数据中数据区有效数据相同的行号以及数据区有效数据不相同的行号。进而确定新版user程序的hex机器码有效数据中相对于旧版user程序的hex机器码有效数据需要变动和不需要变动的程序代码块。这里,不需要变动的代码块即为第一目标代码数据,需要变动的代码块即为第二目标代码数据。
[0143]
本技术一可选实施方式中,所述基于所述第一目标代码数据确定所述第一目标更
新信息以及基于所述第二目标代码数据确定所述第二目标更新信息,包括:
[0144]
基于所述第一目标代码数据的源地址信息、目标地址信息、数据长度信息以及第一标识信息确定所述第一目标更新信息;其中,所述第一标识信息用于表征所述第一目标代码数据为所述第二代码数据中不需要更新的代码数据;
[0145]
基于所述第二目标代码数据的目标地址信息、数据长度信息、数据信息以及第二标识信息确定所述第二目标更新信息;其中,所述第二标识信息用于表征所述第二目标代码数据为所述第二代码数据中需要更新的代码数据。
[0146]
具体的,在确定新版user程序的hex机器码有效数据中相对于旧版user程序的hex机器码有效数据不需要变动和需要变动的程序代码块后,即确定第一目标代码数据以及第二目标代码数据后,将无需变动的代码数据块的源地址和目标地址以及无需变动的代码数据块的长度组装成更新复制帧,该更新复制帧即为第一目标更新信息,这里,该第一目标更新信息中还包括由第一标识信息,用于表征该第一目标更新信息中的代码数据为不需要更新的代码数据;将需要变动的代码块的目标地址、数据长度和有效代码数据组帧成更新插入帧,该更新插入帧即为第二目标更新信息,需要说明的是,该第二目标更新信息中还包括由第二标识信息,用于表征该第二目标信息中的代码数据为需要更新的代码数据。
[0147]
步骤403:将所述目标更新信息发送至第二设备,以通过第二设备基于所述目标更新信息对所述第二设备中的第二代码数据进行更新。
[0148]
这里,目标更新信息主要包括步骤402所确定的更新插入帧和更新复制帧,第一设备最终将更新插入帧和更新复制帧以套接字网络通信方式或其它发送方式发送给第二设备,由第二设备根据接收到的更新插入帧和更新复制帧完成对自身原有的代码的更新。
[0149]
需要说明的是,当采用整体更新方式更新第二设备的代码数据时,可以在第一设备侧将新版user程序的hex机器码有效数据所构成的链表数据全部按照更新插入帧的形式进行组帧;之后再将新版user程序的hex机器码有效数据组成更新插入帧发送给第二设备,由第二设备实现对自身代码数据的整体更新。
[0150]
本技术实施例的技术方案,能够通过提取第一代码数据和第二代码数据的有效数据,将第一代码数据和第二代码数据的有效数据按行以链表形式存储,通过第一代码数据的有效数据和第二代码数据的有效数据的链表能够确定二者的最长公共子序列,通过该最长公共子序列能够确定第一代码数据的有效数据和第二代码数据的有效数据中无需变动和需要变动的程序代码块,将无需变动的程序代码块组帧成更新复制帧,将需要变动的程序代码块组帧成更新插入帧,从而由第一设备将更新插入帧和更新复制帧发送至第二设备,由第二设备根据接收到的更新插入帧和更新复制帧完成自身代码数据的增量更新。
[0151]
图7为本技术实施例提供的代码更新方法的流程示意图二,如图7所示,所述方法应用于第二设备,所述方法包括以下步骤:
[0152]
步骤701:接收第一设备发送的目标更新信息,所述目标更新信息是基于第一代码数据以及第二代码数据的最长公共子序列确定的。
[0153]
本技术一可选实施方式中,所述目标更新信息包括第一目标更新信息以及第二目标更新信息;所述第一目标更新信息用于确定所述第二代码数据中需要更新的代码数据,所述第二目标更新信息用于确定所述第二代码数据中不需要更新的代码数据。
[0154]
在一种实施方式中,所述第一代码数据包括第一目标代码数据以及第二目标代码
数据;
[0155]
所述第一目标更新信息包括所述第一目标代码数据的源地址信息、目标地址信息、数据长度信息以及第一标识信息;其中,所述第一标识信息用于表征所述第一目标代码数据为所述第二代码数据中不需要更新的代码数据;
[0156]
所述第二目标更新信息包括所述第二目标代码数据的目标地址信息、数据长度信息、数据信息以及第二标识信息;其中,所述第二标识信息用于表征所述第二目标代码数据为所述第二代码数据中需要更新的代码数据。
[0157]
这里,第二设备可以为物联网设备中的终端设备,第二设备中存储有第二代码数据,源地址信息可以为第二设备中的代码数据的flash源地址,目标地址信息可以为第二设备中的代码数据的flash目标地址。数据长度信息为代码数据块的数据长度信息。
[0158]
步骤702:基于所述目标更新信息,对第二代码数据进行更新。
[0159]
在本技术一可选实施方式中,所述基于所述目标更新信息,对第二代码数据进行更新,包括:
[0160]
基于所述第一目标更新信息确定所述第二代码数据中不需要更新的代码数据为所述第一目标代码数据;以及,
[0161]
基于所述第二目标更新信息确定所述第二代码数据中需要更新的代码数据为所述第二目标代码数据,并基于所述第二目标代码数据的源地址信息、目标地址信息以及数据信息对所述第二代码数据进行更新。
[0162]
具体的,图8为本技术实施例提供的第二设备进行代码更新的流程图。在第二设备联网后,更新数据在第二设备的u_com的串口中断中实现,第二设备在接收到目标更新信息后,通过判断所接收的目标更新消息中的每个数据帧的标识信息,进行相应的代码的更新操作,完成第二设备的存储区域中所存储的代码数据的更新。其中,若目标更新消息中的数据帧的标识信息为第一标识信息,则根据该数据帧中所指示的地址信息以及数据长度信息不更新该数据帧所指示的第一目标更新信息中的代码数据,若目标更新消息中的数据帧的标识信息为第二标识信息,则根据该数据帧中所指示的地址信息、数据长度信息以及具体的代码数据更新该数据帧所指示的第一目标更新信息中的代码数据。这里,当第二设备对所有数据接收完毕后,进行更新代码的覆盖并转向新的代码运行。
[0163]
本技术实施例中,通过第二设备实现对接收的更新复制帧和更新插入帧的识别,实现第二设备中的flash中的代码的复制操作以及第二设备中的flash中的代码的更新插入操作,在第二设备中只需要更新部分代码数据即可,实现过程简单,占用第二设备的运行内存较少。
[0164]
本技术实施例的技术方案通过在第一设备中实现对第一代码数据以及第二代码数据的有效数据的解析与提取,最终实现与第二设备的代码数据交互和代码数据的增量更新,通过传输新旧代码的差异数据完成软件更新,可以有效的节省网络传输开销,缩短更新时间,并且在传输代码数据时由于无需传输完整的更新程序,因此具有较强的网络安全性。
[0165]
图9为nb-iot智能水表系统架构,本技术实施例基于该智能水表系统架构,验证本技术实施例的代码更新方法的代码数据传输成功率。表1为代码数据传输成功率对比表;表1中,组别1表示使用前述的nb-iot智能终端远程更新系统实现的nb-iot智能水表,组别2表示未使用前述的nb-iot智能终端远程更新系统的实现的nb-iot智能水表。
[0166]
组别总帧数成功次数失败次数成功率组别1360351997.5%组别23603471396.4%
[0167]
表1
[0168]
表1的测试结果表明使用前述的nb-iot智能终端远程更新系统的不影响nb-iot智能水表的代码数据传输成功率,nb-iot智能水表对于代码数据传输的成功率能达到97%。
[0169]
图10为本技术实施例提供的一种代码更新装置的结构组成示意图一,如图10所示,所述装置包括:
[0170]
第一确定单元1011,用于确定第一代码数据以及第二代码数据的最长公共子序列;
[0171]
第二确定单元1012,用于基于所述最长公共子序列确定所述第一代码数据的目标更新信息;
[0172]
发送单元1013,用于将所述目标更新信息发送至第二设备,以通过第二设备基于所述目标更新信息对所述第二设备中的第二代码数据进行更新。
[0173]
在本技术一可选实施方式中,所述第二确定单元1012具体用于:基于所述最长公共子序列确定所述第一代码数据中的第一目标更新信息以及第二目标更新信息;所述第一目标更新信息用于确定所述第二代码数据中需要更新的代码数据,所述第二目标更新信息用于确定所述第二代码数据中不需要更新的代码数据。
[0174]
在本技术一可选实施方式中,所述第二确定单元1012还具体用于:基于所述最长公共子序列在所述第一代码数据中的位置,确定所述第一代码数据中的第一目标代码数据以及第二目标代码数据;所述第一目标代码数据为所述第二代码数据中不需要更新的代码数据,所述第二目标代码数据为所述第二代码数据中需要更新的代码数据;基于所述第一目标代码数据确定所述第一目标更新信息以及基于所述第二目标代码数据确定所述第二目标更新信息。
[0175]
在本技术一可选实施方式中,所述第二确定单元1012还具体用于:基于所述第一目标代码数据的源地址信息、目标地址信息、数据长度信息以及第一标识信息确定所述第一目标更新信息;其中,所述第一标识信息用于表征所述第一目标代码数据为所述第二代码数据中不需要更新的代码数据;
[0176]
基于所述第二目标代码数据的目标地址信息、数据长度信息、数据信息以及第二标识信息确定所述第二目标更新信息;其中,所述第二标识信息用于表征所述第二目标代码数据为所述第二代码数据中需要更新的代码数据。
[0177]
在本技术一可选实施方式中,所述第一确定单元1011具体用于:基于所述第一代码数据确定所述第一代码数据的第一链表数据以及基于所述第二代码数据确定所述第二代码数据的第二链表数据;
[0178]
基于所述第一链表数据以及第二链表数据确定所述第一代码数据以及第二代码数据的最长公共子序列。
[0179]
在本技术一可选实施方式中,所述第一确定单元1011还具体用于:提取所述第一代码数据中第一目标数据,基于所述第一目标数据得到所述第一链表数据;所述第一目标数据为所述第一代码数据中满足目标数据类型的一行或多行代码数据;
[0180]
提取所述第二代码数据中的第二目标数据,基于所述第二目标数据得到所述第二链表数据;所述第二目标数据为所述第二代码数据中满足所述目标数据类型的一行或多行代码数据。
[0181]
本领域技术人员应当理解,图10所示的代码更新装置中的各单元的实现功能可参照前述代码更新方法的相关描述而理解。图10所示的代码更新装置中的各单元的功能可通过运行于处理器上的程序而实现,也可通过具体的逻辑电路而实现。
[0182]
图11为本技术实施例提供的一种代码更新装置的结构组成示意图二,如图11所示,所述装置包括:
[0183]
接收单元1111,用于接收第一设备发送的目标更新信息,所述目标更新信息是基于第一代码数据以及第二代码数据的最长公共子序列确定的;
[0184]
更新单元1112,用于基于所述目标更新信息,对第二代码数据进行更新。
[0185]
在本技术一可选实施方式中,所述目标更新信息包括第一目标更新信息以及第二目标更新信息;所述第一目标更新信息用于确定所述第二代码数据中需要更新的代码数据,所述第二目标更新信息用于确定所述第二代码数据中不需要更新的代码数据。
[0186]
在本技术一可选实施方式中,所述第一代码数据包括第一目标代码数据以及第二目标代码数据;
[0187]
所述第一目标更新信息包括所述第一目标代码数据的源地址信息、目标地址信息、数据长度信息以及第一标识信息;其中,所述第一标识信息用于表征所述第一目标代码数据为所述第二代码数据中不需要更新的代码数据;
[0188]
所述第二目标更新信息包括所述第二目标代码数据的目标地址信息、数据长度信息、数据信息以及第二标识信息;其中,所述第二标识信息用于表征所述第二目标代码数据为所述第二代码数据中需要更新的代码数据。
[0189]
在本技术一可选实施方式中,所述更新单元1112具体用于:基于所述第一目标更新信息确定所述第二代码数据中不需要更新的代码数据为所述第一目标代码数据;以及,基于所述第二目标更新信息确定所述第二代码数据中需要更新的代码数据为所述第二目标代码数据,并基于所述第二目标代码数据的源地址信息、目标地址信息以及数据信息对所述第二代码数据进行更新。
[0190]
本领域技术人员应当理解,图11所示的代码更新装置中的各单元的实现功能可参照前述代码更新方法的相关描述而理解。图11所示的代码更新装置中的各单元的功能可通过运行于处理器上的程序而实现,也可通过具体的逻辑电路而实现。
[0191]
图12为本技术实施例提供的一种电子设备示意性结构图。该电子设备可以是服务器,该电子设备包括图12所示的数据处理装置,图12所示的电子设备1200包括处理器1210,处理器1210可以从存储器中调用并运行计算机程序,以实现本技术实施例中的方法。
[0192]
可选地,如图12所示,电子设备1200还可以包括存储器1220。其中,处理器1210可以从存储器1220中调用并运行计算机程序,以实现本技术实施例中的方法。
[0193]
其中,存储器1220可以是独立于处理器1210的一个单独的器件,也可以集成在处理器1210中。
[0194]
可选地,如图12所示,电子设备1200还可以包括收发器1230,处理器1210可以控制该收发器1230与其他设备进行通信,具体地,可以向其他设备发送信息或数据,或接收其他
设备发送的信息或数据。
[0195]
其中,收发器1230可以包括发射机和接收机。收发器1230还可以进一步包括天线,天线的数量可以为一个或多个。
[0196]
可选地,该电子设备1200具体可为本技术实施例的网络设备,并且该电子设备1200可以实现本技术实施例的各个方法中由网络设备实现的相应流程,为了简洁,在此不再赘述。
[0197]
可选地,该电子设备1200具体可为本技术实施例的移动终端/终端设备,并且该电子设备1200可以实现本技术实施例的各个方法中由移动终端/终端设备实现的相应流程,为了简洁,在此不再赘述。
[0198]
图13为本技术实施例的芯片的示意性结构图。图13所示的芯片1300包括处理器1310,处理器1310可以从存储器中调用并运行计算机程序,以实现本技术实施例中的方法。
[0199]
可选地,如图13所示,芯片1300还可以包括存储器1320。其中,处理器1310可以从存储器1320中调用并运行计算机程序,以实现本技术实施例中的方法。
[0200]
其中,存储器1320可以是独立于处理器1310的一个单独的器件,也可以集成在处理器1310中。
[0201]
可选地,该芯片1300还可以包括输入接口1330。其中,处理器1310可以控制该输入接口1330与其他设备或芯片进行通信,具体地,可以获取其他设备或芯片发送的信息或数据。
[0202]
可选地,该芯片1300还可以包括输出接口1340。其中,处理器1310可以控制该输出接口1340与其他设备或芯片进行通信,具体地,可以向其他设备或芯片输出信息或数据。
[0203]
可选地,该芯片可应用于本技术实施例中的网络设备,并且该芯片可以实现本技术实施例的各个方法中由网络设备实现的相应流程,为了简洁,在此不再赘述。
[0204]
可选地,该芯片可应用于本技术实施例中的移动终端/终端设备,并且该芯片可以实现本技术实施例的各个方法中由移动终端/终端设备实现的相应流程,为了简洁,在此不再赘述。
[0205]
应理解,本技术实施例提到的芯片还可以称为系统级芯片,系统芯片,芯片系统或片上系统芯片等。
[0206]
应理解,本技术实施例的处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
[0207]
可以理解,本技术实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。应注意,本技术描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
[0208]
应理解,上述存储器为示例性但不是限制性说明,例如,本技术实施例中的存储器还可以是静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synch link dram,sldram)以及直接内存总线随机存取存储器(direct rambus ram,dr ram)等等。也就是说,本技术实施例中的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
[0209]
本技术实施例还提供了一种计算机可读存储介质,用于存储计算机程序。
[0210]
可选的,该计算机可读存储介质可应用于本技术实施例中的网络设备,并且该计算机程序使得计算机执行本技术实施例的各个方法中由网络设备实现的相应流程,为了简洁,在此不再赘述。
[0211]
可选地,该计算机可读存储介质可应用于本技术实施例中的移动终端/终端设备,并且该计算机程序使得计算机执行本技术实施例的各个方法中由移动终端/终端设备实现的相应流程,为了简洁,在此不再赘述。
[0212]
本技术实施例还提供了一种计算机程序产品,包括计算机程序指令。
[0213]
可选的,该计算机程序产品可应用于本技术实施例中的网络设备,并且该计算机程序指令使得计算机执行本技术实施例的各个方法中由网络设备实现的相应流程,为了简洁,在此不再赘述。
[0214]
可选地,该计算机程序产品可应用于本技术实施例中的移动终端/终端设备,并且该计算机程序指令使得计算机执行本技术实施例的各个方法中由移动终端/终端设备实现的相应流程,为了简洁,在此不再赘述。
[0215]
本技术实施例还提供了一种计算机程序。
[0216]
可选的,该计算机程序可应用于本技术实施例中的网络设备,当该计算机程序在计算机上运行时,使得计算机执行本技术实施例的各个方法中由网络设备实现的相应流程,为了简洁,在此不再赘述。
[0217]
可选地,该计算机程序可应用于本技术实施例中的移动终端/终端设备,当该计算机程序在计算机上运行时,使得计算机执行本技术实施例的各个方法中由移动终端/终端
设备实现的相应流程,为了简洁,在此不再赘述。
[0218]
本领域普通技术人员可以意识到,结合本技术中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0219]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0220]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0221]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0222]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0223]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,)rom、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0224]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应所述以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献