CN110391931A - 一种管理服务器与远端嵌入式设备的通信方法 - Google Patents
一种管理服务器与远端嵌入式设备的通信方法 Download PDFInfo
- Publication number
- CN110391931A CN110391931A CN201910346913.1A CN201910346913A CN110391931A CN 110391931 A CN110391931 A CN 110391931A CN 201910346913 A CN201910346913 A CN 201910346913A CN 110391931 A CN110391931 A CN 110391931A
- Authority
- CN
- China
- Prior art keywords
- data
- embedded device
- management server
- message
- app
- 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.)
- Pending
Links
- 238000004891 communication Methods 0.000 title claims abstract description 38
- 238000000034 method Methods 0.000 claims abstract description 52
- 230000005540 biological transmission Effects 0.000 claims abstract description 33
- 238000012856 packing Methods 0.000 claims abstract description 5
- 238000007726 management method Methods 0.000 claims description 62
- 238000012795 verification Methods 0.000 claims description 37
- 238000003780 insertion Methods 0.000 claims description 3
- 230000037431 insertion Effects 0.000 claims description 3
- 235000013399 edible fruits Nutrition 0.000 claims description 2
- 238000013524 data verification Methods 0.000 claims 1
- 230000004044 response Effects 0.000 description 25
- 238000012545 processing Methods 0.000 description 23
- 238000004364 calculation method Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 10
- 238000005538 encapsulation Methods 0.000 description 8
- 238000012360 testing method Methods 0.000 description 6
- 238000007493 shaping process Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 241000406668 Loxodonta cyclotis Species 0.000 description 2
- 208000033748 Device issues Diseases 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 239000011449 brick Substances 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000036962 time dependent Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/02—Standardisation; Integration
- H04L41/0246—Exchanging or transporting network management information using the Internet; Embedding network management web servers in network elements; Web-services-based protocols
- H04L41/0266—Exchanging or transporting network management information using the Internet; Embedding network management web servers in network elements; Web-services-based protocols using meta-data, objects or commands for formatting management information, e.g. using eXtensible markup language [XML]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/03—Protocol definition or specification
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/26—Special purpose or proprietary protocols or architectures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
Abstract
本发明提供一种管理服务器与远端嵌入式设备的数据通信方法,管理服务器把需要传输的数据分成多个段,每次传输一段数据到远端的嵌入式设备,直到最后一段传输完毕;每一段打包,数据包包括数据搬运报文和设备对象访问报文,管理服务器与远程的嵌入式设备之间传送的数据包称为数据搬运报文,管理服务器通过对对象的读/写操作,获取远端嵌入式设备各种状态、采样值或者控制远端嵌入式设备进行操作的设备对象访问报文;本发明的管理服务器与远端嵌入式设备的数据通信方法协议简洁,适合于具有较小的FLASH空间的嵌入式设备软件更新。
Description
技术领域
本发明涉及通信领域,特别是一种管理服务器与远端嵌入式设备的通信方法。
背景技术
嵌入式设备如图1所示,包括以下资源。
首先是MCU微处理器。
MCU上电时会从固定的FLASH地址取指令执行,这个固定地址也是可以预先配置的,并且可以是FLASH任意地址;MCU也支持在运行嵌入式软件任何时刻可以通过特定指令让MCU跳转到指定的某个固定地址上运行代码。
其次是存储器,存储器包括RAM内存和FLASH存储,其中RAM内存可以集成在MCU中,容量单位为KBytes。FLASH存储也可以集成在MCU中,容量单位为KBytes。
一般嵌入式设备也还有无线/有线通讯模块,通讯模块作为外围设备与MCU相连接,2G/3G/4G无线通讯模块或者有线通讯模块。MCU可以通过它与管理端服务程序通讯。
AC-DC电源系统是嵌入式设备必备的,电源适配器,转换交流电为直流电,提供给嵌入式硬件所需要的电压和电流。
目前,嵌入式设备如路灯的控制系统,其嵌入式软件一般是业务功能简单类嵌入式软件,该种嵌入式软件功能简单,需要很少的存储容量,包括启动程序BOOT和应用程序APP,是KBytes级别嵌入式设备的软件。
其中, Boot程序是启动程序,MCU上电后运行该程序代码,主要功能是用于更新嵌入式软件,不关心设备业务功能,Boot程序设计为不可远程更新,保证设备发生任何非硬件的故障,MCU都能从Boot程序启动,可供管理端服务程序再次更新嵌入式软件。
App程序是业务程序,Boot程序运行结束后转到App程序运行,主要功能是执行设备具体业务功能。由于业务逻辑复杂会存在Bug、需求变化需更新功能等原因,都需要对App程序进行更新,因此把App程序设计为需要远程更新。
程序代码不能直接被MCU运行,需要通过开发工具对程序代码的编译,才可以把程序代码转换为MCU可以识别的指令集合。Boot程序和App程序对应的指令集合就是对应的两份二进制文件。在设备出厂时,Boot二进制文件和App二进制文件内容会通过烧写工具写入设备;在更新嵌入式软件时,App二进制文件内容就是更新数据。
嵌入式软件等是存储在嵌入式设备的存储器中,如FlASH中,一台嵌入式设备的FLASH内存储内容如图2所示:
Boot FLASH段。
存放Boot程序,MCU上电后,直接从Boot起始地址处取出指令执行,进入Boot程序的运行。设备出厂前由其他软件更新方式把Boot程序写入该FLASH段中,因此该FLASH段具备一次写入、多次读取的特点,FLASH就不容易损坏,保证Boot程序的正确运行。
App FLASH段。
存放App程序,Boot程序运行完毕后,执行MCU固有的跳转指令,转到App起始地址处取出指令运行,进入App程序的运行。“存储更新数据”这一步骤指的是把更新数据存储在该FLASH段中。该FLASH段具备多次写入、多次读取的特点,FLASH损坏的风险较高,需要有额外的机制保证MCU运行正确、完整的App程序。
Data FLASH段。
存放配置数据,出厂时设备FLASH数据初始化设备出厂时,需要使用开发工具编译Boot程序代码和App程序代码,分别得到两份二进制数据文件,然后通过烧写工具写入BootFLASH段和App FLASH段,并且把Data FLASH段复位为全0。
嵌入式设备软件启动机制如图3所示,式中:设备掉电状态时,MCU是不运行任何嵌入式软件的。
运行Boot状态下,MCU运行Boot程序。设备上电后,由设备掉电状态进入运行Boot状态。
运行App状态下,MCU运行App程序。在运行Boot状态下执行跳转指令,进入运行App状态;在运行App状态下执行软复位指令,返回运行Boot状态。这两种状态可以自由切换,是实现防变砖机制的重要条件。
目前,对于路灯控制系统这样的业务功能简单类嵌入式设备,实现管理服务器与其进行通信时,所采用的通信协议大都是TCP/IP等通用的协议,有些不能满足用户的需要。
发明内容
本发明针对目前管理服务器对路灯控制系统等业务功能简单类嵌入式设备进行访问时采用TCP/IP协议所带来的问题,设计一种针对管理服务器与路灯控制系统等业务功能简单类嵌入式设备通信的方法。
本发明为实现其技术目的所采用的技术方案是:一种管理服务器与远端嵌入式设备的数据通信方法,管理服务器把需要传输的数据分成多个段,每次传输一段数据到远端的嵌入式设备,直到最后一段传输完毕;每一段打包,数据包包括数据搬运报文和设备对象访问报文,管理服务器与远程的嵌入式设备之间传送的数据包称为数据搬运报文,管理服务器通过对对象的读/写操作,获取远端嵌入式设备各种状态、采样值或者控制远端嵌入式设备进行操作的设备对象访问报文;所述的数据搬运报文的传输数据依次为:4bit的版本号(Ver)、28bit的报文长度(Len)、32bit的设备业务标识(BID)、16bit校验和(SUM)、16bit的报文序号(SNo);所述的设备对象访问报文的传输数据依次为:4bit的版本号(Ver)、4bit的命令(CMD)、8bit的错误码(Err)、16bit的对象ID(OID)、16bit的通知属性(NYA)、16bit的校验和(Sum)、32bit的对象数据长度(OLen)、10bit的分段数据长度(SgLen)、22bit的分段数据序号(SgNo)、对象数据(OData);所述的版本号(Ver)说明当前传输协议的版本信息;所述的报文长度(Len)为数据搬运报文和设备对象访问报文的报文总字节数;所述的设备业务标识(BID)用于设备路由,标识哪个设备发出的报文,或者标识哪个设备需要处理的报文;数据搬运报文中的校验和(SUM)是对数据搬运数据包头部校验和;所述的报文序号(SNo)是标识报文顺序发送,初始值为0,管理服务器每发出一个报文该序号加1,增加到最大值则重新从0开始;远端嵌入式设备需要记着对端的报文序号,遇到序号不相等则做丢弃处理;管理服务器也需要记住当前已发报文的序列号,遇到嵌入式设备的响应报文的序号不相等也需要做丢弃处理。
所述的命令(CMD)包括对象读、对象写、对象读写响应和事件/状态通知;所述的错误码(Err)标识对象访问命令为“对象读/写的响应”时的错误码;所述的对象ID(OID)是对象的标识;所述的通知属性(NYA)标识该命令为“事件/状态通知”时的特定属性;所述的设备对象访问协议的校验和(Sum)是对整个设备对象访问协议报文的校验和;所述的对象数据长度(OLen)中,命令为“对象读”、“对象写”及“对象读/写的响应”时,标识该对象的总字节数,对象数据接收时,通过该长度把整个对象数据接收完整;命令为“事件/状态通知”时,标识事件状态数据的总字节数;所述的分段数据长度(SgLen)为每次携带对象数据的字节数;所述的分段数据序号(SgNo)为标识对象数据顺序发送,用于多次数据传输,初始值为0,发送端每发出一个报文该序号加1,接收端严格按照该序号把分段数据存放在对应的位置上;所述的对象数据(OData)紧跟设备对象访问协议头部后面,已知数据类型或者数据结构则采用网络字节序。
本发明的管理服务器与远端嵌入式设备的数据通信方法协议简洁,适合于具有较小的FLASH空间的嵌入式设备软件更新。
进一步的,上述的管理服务器与远端嵌入式设备的数据通信方法中:所述的对象包括:APP软件版本号、更新软件的命令、APP更新数据、APP更新数据校验和。
进一步的,上述的管理服务器与远端嵌入式设备的数据通信方法中:所述的APP软件版本号的内容是:VvRrBbYyMmDd,其中Vv表示4bit的主版本号、Rr表示8bit的次版本号、Bb表示4bit构建版本的序号,ymd上次更新的年月日。
进一步的,上述的管理服务器与远端嵌入式设备的数据通信方法中:所述的APP软件版本号的比较步骤包括:A001、管理服务器向远端嵌入式设备发出读取APP软件版本号的设备对象访问数据包;A002、远端嵌入式设备接收并解析后,返回保存到FLASH中Data段中设定位置的APP软件版本号的数据搬运数据包;A003、管理服务器收到并解析,获得远端嵌入式设备内APP软件版本号Vv′Rr′Bb′YyMmDd;A004、在管理服务器中,判断:Vv== Vv′、Rr==Rr′、Bb== Bb′;只有三个都相等地,才能判断版本号相等。
进一步的,上述的管理服务器与远端嵌入式设备的数据通信方法中:管理端服务器程序和设备的对象访问报文包括:对象读/写操作命令和响应报文、事件/状态通知报文。
进一步的,上述的管理服务器与远端嵌入式设备的数据通信方法中:所述的数据搬运报文接收从报文接收开始包括以下步骤:S101、调用通讯模块接收CARE头部长度为12字节的数据;S102、接收完毕以后,调用校验和计算方法对头部数据校验,若校验成功转向步骤S103,否则为非法数据,丢弃所述的非法数据,结束;S103、对数据搬运报文头部解码得到报文总长度Len;S104、检查Len是否合法,如果合法转向步骤S105、否则为非法数据,丢弃所述的非法数据,结束;S105、调用通讯模块接收长度为Len-12字节的数据。
进一步的,上述的管理服务器与远端嵌入式设备的数据通信方法中:数据搬运报文的编码流程包括以下步骤:S201、设置Ver=当前协议版本号、Sum=0、其它Len、SNo、BID根据实际情况填充;S202、将Ver和Len组成的32bit值、BID、SNo分别转换成网络字节序;S203、调用校验和计算方法对头部数据得到校验和的值,重新设置Sum=校验和的值;S204、将重新设置的Sum转换为网络字节序。
数据搬运报文解码包括以下步骤:S301、调用校验和计算方法对数据搬运报文头部数据进行校验,若校验成功转向步骤S302、否则为非法数据,解码失败,停止解码;S302、将Ver和Len组成的32bit值、BID、Sum、SNo分别转换成本地字节序;S303、检查Ver是否是支持的版本。如果是则转向步骤S304,否则为非法数据,解码失败,停止解码。
S304、检查Len是否合法,如果合法,则解码完成,否则为非法数据,解码失败,停止解码。
进一步的,上述的管理服务器与远端嵌入式设备的数据通信方法中:设备对象访问报文的编码包括以下步骤:S401、设置Ver=当前版本号,Sum=0,其它CMD 、Err、 OID、NYA、 Olen 、SgLen 、SgNo根据实际情况填充;S402、如有对象数据,把对象数据复制到设备对象访问报文头部后面;S403、将SgLen和SgNo组成的32bit值,OID、 NYA、 Olen分别转换成网络字节序;S404调用校验和计算方法对头部数据得到校验和的值,重新设置校验和的值;S405、将重新设置的Sum转换为网络字节序;设备对象访问报文的解码包括以下步骤:S501、调用校验和计算方法对头部数据进行校验,若校验成功转向步骤S502、否则为非法数据,解码失败,停止解码;S502、将SgLen和SgNo组成的32bit值,OID、 NYA、 Olen分别转换成本地字节序;S503、检查Ver是否是支持的版本。如果是则转向步骤S504,否则为非法数据,解码失败,停止解码;S504、检查总长度是否大于设备对象访问报文头部,如果大于,获得OData,否则是无OData;解码结束。
进一步的,上述的管理服务器与远端嵌入式设备的数据通信方法中:远程嵌入式设备端报文包括如下步骤:S601、数据搬运报文解码,若解码成功,转向步骤S602、否则丢弃结束远程嵌入式设备端报文处理;S602、验证BID是否是本设备,如果是转向步骤转向S603,否则丢弃结束远程嵌入式设备端报文处理;S603、设备对象访问报文解码,若解码成功,转向步骤S604、否则丢弃结束远程嵌入式设备端报文处理;S604、CMD是读操作还是写操作,如果都不是丢弃结束远程嵌入式设备端报文处理,否则转向步骤605;S605、根据OID进行对应的对象处理,并将处理结果封装成响应报文;S605、设备对象访问报文编码;S606、数据搬运报文编码;S607、调用通讯模块发送响应报文;管理服务器端文处理包括以下步骤:S701、将对象读/写操作封装成命令报文;S702、设备对象访问报文编码;S703、数据搬运报文编码;S704、调用通讯模块发送命令报文,设置超时,等待响应报文;S705、数据搬运报文接收,判断接收是否超时,若不超时转向步骤706,否则命令失败、处理结束;S706、接收数据搬运报文是否完整,或完整转向步骤707,否则丢弃;S707、数据搬运报文解码,并判断数据搬运报文解码是否成功,若解码成功转向步骤708,否则丢弃;S708、验证BID是否是管理设备,若是转向步骤S709,否则丢弃;S709、设备对象访问报文解码,并判断设备对象访问报文解码是否成功,若解码成功转向步骤710,否则丢弃;S710、判断CMD是否响应,若CMD响应转向步骤S711,否则丢弃;S711、判断OID是否匹配,若OID匹配转向S712、否则丢弃;S712、进行对应的对象处理。
进一步的,上述的管理服务器与远端嵌入式设备的数据通信方法中:管理服务器事件事件/状态通知处理包括如下步骤:S801、接收数据搬运报文报文,并解码,解码成功转向步骤802,否则丢弃;S802、验证BID是否是管理设备,若是,转向步骤S803,否则丢弃;S803、设备对象访问报文解码。解码成功转向步骤S804,否则丢弃;S804、CMD是事件/状态通知,若是转向步骤S805、否则转向CMD其它处理;S805、处理事件/状态通知。
以下结合附图和具体实施方式对本发明进行进一步的说明。
附图说明
附图1为管理服务器与远端嵌入式设备的数据通信方法的传输协议分层。
附图2为数据搬运报文的传输格式。
附图3为设备对象访问报文传输格式。
附图4是APP软件版本号比较流程图。
附图5对象读/写操作命令访问方式图。
附图6是事件/状态通知访问方式图。
附图7是对象写操作命令报文封装图。
附图8是对象写操作响应报文封装。
附图9是对象读操作命令报文封装。
附图10是对象读操作响应报文封装。
附图11是事件/状态通知报文封装。
附图12是对象写操作的多次传输的报文传输流程前面部分。
附图13是对象写操作的多次传输的报文传输流程后面部分。
附图14是对象读操作的多次传输的报文传输流程前面部分。
附图15是对象读操作的多次传输的报文传输流程后面部分。
附图16是CARE传输协议的报文接收流程图。
附图17是CARE传输协议的报文编码流程图。
附图18是CARE传输协议的报文解码流程图。
附图19是DOAS传输协议的报文编码流程图。
附图20是DOAS传输协议的报文解码流程图。
附图21是远程嵌入式设备端传输报文的处理流程图。
附图22是管理服务器端传输报文的处理流程图。
附图23是管理端服务器事件/状态通知处理流程图。
具体实施方式
实施例1,本实施例是一种管理服务器与远端嵌入式设备的数据通信方法,管理服务器把需要传输的数据分成多个段,每次传输一段数据到远端的嵌入式设备,直到最后一段传输完毕;具体分层协议如图1所示,每一段打包,数据包包括数据搬运报文(CARE)和设备对象访问报文(DOAS),管理服务器与远程的嵌入式设备之间传送的数据包称为数据搬运报文,管理服务器通过对对象的读/写操作,获取远端嵌入式设备各种状态、采样值或者控制远端嵌入式设备进行操作的设备对象访问报文。以下为了叙述方便,也使用CARE代指数据搬运报文,DOAS代指设备对象访问报文。
数据搬运报文的传输数据依次为:4bit的版本号(Ver)、28bit的报文长度(Len)、32bit的设备业务标识(BID)、16bit校验和(SUM)、16bit的报文序号(SNo);如图2所示。
设备对象访问报文的传输数据依次为:4bit的版本号(Ver)、4bit的命令(CMD)、8bit的错误码(Err)、16bit的对象ID(OID)、16bit的通知属性(NYA)、16bit的校验和(Sum)、32bit的对象数据长度(OLen)、10bit的分段数据长度(SgLen)、22bit的分段数据序号(SgNo)、对象数据(OData);如图3所示。
版本号(Ver)说明当前传输协议的版本信息;报文长度(Len)为数据搬运报文和设备对象访问报文的报文总字节数;设备业务标识(BID)用于设备路由,标识哪个设备发出的报文,或者标识哪个设备需要处理的报文;数据搬运报文中的校验和(SUM)是对数据搬运数据包头部校验和;报文序号(SNo)是标识报文顺序发送,初始值为0,管理服务器每发出一个报文该序号加1,增加到最大值则重新从0开始;远端嵌入式设备需要记着对端的报文序号,遇到序号不相等则做丢弃处理;命令(CMD)包括对象读、对象写、对象读写响应和事件/状态通知;错误码(Err)标识对象访问命令为“对象读/写的响应”时的错误码;对象ID(OID)是对象的标识;通知属性(NYA)标识该命令为“事件/状态通知”时的特定属性;设备对象访问协议的校验和(Sum)是对整个设备对象访问协议报文的校验和;对象数据长度(OLen)中,命令为“对象读”、“对象写”及“对象读/写的响应”时,标识该对象的总字节数,对象数据接收时,通过该长度把整个对象数据接收完整;命令为“事件/状态通知”时,标识事件状态数据的总字节数;分段数据长度(SgLen)为每次携带对象数据的字节数;分段数据序号(SgNo)为标识对象数据顺序发送,用于多次数据传输,初始值为0,发送端每发出一个报文该序号加1,接收端严格按照该序号把分段数据存放在对应的位置上;对象数据(OData)紧跟设备对象访问协议头部后面,已知数据类型或者数据结构则采用网络字节序。
本实施例中对象包括:APP软件版本号见表1,对象具体的数据见表2;更新软件的命令见表3,它的对象数据定义见表4、APP更新数据见表5,它的对象定义:长度为n的8bit无符号整形数组,存储App程序代码的二进制形式数据。使用开发工具编译App程序代码后得到二进制文件,该二进制文件的内容就是更新数据,这些数据会直接写入App FLASH段,MCU就可以从App FLASH段取指令运行。
APP更新数据校验和见表6,对象数据定义:通过校验和计算方法得到的一个16bit的数值。校验和计算方法不属于本发明范畴。
表1
对象名称 | 对象ID | 对象数据类型 |
App软件版本号 | 0x2110 | 32bit无符号整形 |
表2
V | 4bit,主版本号,取值范围:1~15 |
R | 8bit,次版本号,取值范围:0~99 |
B | 4bit,构建版本的序号,取值范围:1~15 |
Y | 7bit,年份最后两位数字,取值范围:18~99,最大支持到2099年 |
M | 4bit,月份,取值范围:1~12 |
D | 5bit,日,取值范围:1~31 |
表3
对象名称 | 对象ID | 对象数据类型 |
更新软件命令 | 0x2101 | 8bit无符号整形 |
表4
对象值 | 命令含义 |
0x01 | 软复位,从“运行App”切换到“运行Boot” |
0x02 | 擦除App Flash段,让该段FLASH数据失效 |
表5
对象名称 | 对象ID | 对象数据类型 |
App更新数据 | 0x2120 | 8bit无符号整形数组 |
表6
对象名称 | 对象ID | 对象数据类型 |
App更新数据校验和 | 0x2140 | 16bit无符号整形 |
本实施例APP软件版本号的比较步骤如图4所示包括:A001、管理服务器向远端嵌入式设备发出读取APP软件版本号的设备对象访问数据包;A002、远端嵌入式设备接收并解析后,返回保存到FLASH中Data段中设定位置的APP软件版本号的数据搬运数据包;
A003、管理服务器收到并解析,获得远端嵌入式设备内APP软件版本号Vv′Rr′Bb′YyMmDd;A004、在管理服务器中,判断:Vv== Vv′、Rr== Rr′、Bb== Bb′;只有三个都相等地,才能判断版本号相等。
本管理端服务器程序和设备的对象访问报文包括:对象读/写操作命令和响应报文、事件/状态通知报文。
对象读/写操作命令访问方式如图5所示,它是命令和响应是单独的一个对象访问报文,称为对象访问消息,一条命令消息和一条响应消息组成一个访问事务,事务有原子操作特点,发起命令消息后需要处理响应消息以得到命令结果,因此发起命令端需要在发出命令消息后设置等待响应消息的超时时间,一旦超时,则事务原子性被破坏导致失败。超时时间依赖通讯模块以及具体业务需求而定。每个事务的超时时间可以单独设定。如图5所示,响应消息需要以OID匹配命令消息。因此对象访问协议只支持某一时刻对一个对象的访问。当访问事务没有结束之前,不能发起新的访问事务。
事件/状态通知如图6所示:事件/状态通知是独立的一条对象访问消息,由设备发送给管理端服务程序处理。该消息能否送达到管理端服务程序,依赖于通讯模块,本实施例中,对象访问协议的数据传输方式包括单次传输和多次传输两种方式。
对象访问协议(DOAS)描述的对象数据长度小于或者等于分段长度,可以一次性把对象数据传输到对端,称为单次传输。分段长度依赖传输模块、业务需求而定。
对象访问协议(DOAS)描述的对象数据长度大于分段长度,需要多次把对象数据传输到对端,称为多次传输。本实施例需要支持多次传输。
单次传输时,对象写操作命令报文封装和对象写操作命令报文分别如图7和图8所示。对象读操作命令报文封装和对象读操作响应报文封装如图9和图10所示。
定义数据搬运协议(CARE)版本为1。
定义数据搬运协议(CARE)起始报文序号为s。
定义数据搬运协议(CARE)头部长度为12字节。
定义对象访问(DOAS)协议头部长度为16字节。
那么数据搬运协议(CARE)头部和对象访问(DOAS)头部的总大小为28字节。
定义对象访问(DOAS)协议的对象数据长度为y。
定义当前封装是第n个发送端报文。
单次传输时,事件/状态通知报文封装始图11所示,事件/状态通知的内容也必须定义为对象,但是通知不支持多次传输,所以定义的对象数据长度不能大于分段长度。
传输协议的校验和数据搬运协议(CARE)传输协议的校验和是一个16bit的数值,该值通过校验和计算方法得到,校验的数据为CARE头部,保证CARE头部的完整性和正确性。
对象访问(DOAS)协议传输协议的校验和是一个16bit的数值,该值通过校验和计算方法得到,校验的数据为DOAS头部和对象数据(如果有),保证整个DOAS报文的完整性和正确性。校验和计算方法采用一些常用的如CRC等方法。
以下是关于多次传输。对象访问(DOAS)协议传输协议的多次传输,当对象数据大于分段长度时,需要支持多次传输。
定义对象的数据长度为y字节;基于不同的通讯模块,定义每次传输数据长度为x字节,最后一次传输的数据长度为z;得到传输总次数为:n = y/x+1(如果y能被x整除)或者n = y/x(如果y不能被x整除)对象写操作的多次传输:如图12所示为对象写操作的多次传输的报文传输流程前面部分。如图13所示为对象写操作的多次传输的报文传输流程后面部分。
对象读操作的多次传输:如图14所示是对象读操作的多次传输的报文传输流程前面部分。图15是对象读操作的多次传输的报文传输流程后面部分。
CARE传输协议的报文接收流程如图16所示,从报文接收开始包括以下步骤:S101、调用通讯模块接收CARE头部长度为12字节的数据。
S102、接收完毕以后,调用校验和计算方法对头部数据校验,若校验成功转向步骤S103,否则为非法数据,丢弃所述的非法数据,结束。
S103、对CARE头部解码得到报文总长度Len。
S104、检查Len是否合法,如果合法转向步骤S105、否则为非法数据,丢弃所述的非法数据,结束。
S105、调用通讯模块接收长度为Len-12字节的数据。
CARE传输协议的编码流程如图17所示:包括以下步骤:S201、设置Ver=当前协议版本号、Sum=0、其它Len、SNo、BID根据实际情况填充。
S202、将Ver和Len组成的32bit值、BID、SNo分别转换成网络字节序。
S203、调用校验和计算方法对头部数据得到校验和的值,重新设置Sum=校验和的值。
S204、将重新设置的Sum转换为网络字节序。
网络字节顺序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据在不同主机之间传输时能够被正确解释。网络字节顺序采用big endian排序方式。
CARE传输协议的解码流程如图18所示:包括以下步骤:S301、调用校验和计算方法对头部数据进行校验,若校验成功转向步骤S302、否则为非法数据,解码失败,停止解码。
S302、将Ver和Len组成的32bit值、BID、Sum、SNo分别转换成本地字节序。
S303、检查Ver是否是支持的版本。如果是则转向步骤S304,否则为非法数据,解码失败,停止解码。
S304、检查Len是否合法,如果合法,则解码完成,否则为非法数据,解码失败,停止解码。
本地字节序是与网络字节序相对的。
DOAS传输协议的编码流程如图19所示:包括以下步骤:S401、设置Ver=当前版本号,Sum=0,其它CMD 、Err、 OID、 NYA、 Olen 、SgLen 、SgNo根据实际情况填充。
S402、如有对象数据,把对象数据复制到DOAS头部后面。
S403、将SgLen和SgNo组成的32bit值,OID、 NYA、 Olen分别转换成网络字节序。
S404调用校验和计算方法对头部数据得到校验和的值,重新设置校验和的值。
S405、将重新设置的Sum转换为网络字节序。
DOAS传输协议的解码流程如图20所示:包括以下步骤:S501、调用校验和计算方法对头部数据进行校验,若校验成功转向步骤S502、否则为非法数据,解码失败,停止解码。
S502、将SgLen和SgNo组成的32bit值,OID、 NYA、 Olen分别转换成本地字节序。
S503、检查Ver是否是支持的版本。如果是则转向步骤S504,否则为非法数据,解码失败,停止解码。
S504、检查总长度是否大于DOAS头部,如果大于,获得OData,否则是无OData;解码结束。
远程嵌入式设备端报文处理流程如图21所示:包括如下步骤:S601、CARE解码,若解码成功,转向步骤S602、否则丢弃结束远程嵌入式设备端报文处理。
S602、验证BID是否是本设备,如果是转向步骤转向S603,否则丢弃结束远程嵌入式设备端报文处理。
S603、DOAS解码,若解码成功,转向步骤S604、否则丢弃结束远程嵌入式设备端报文处理。
S604、CMD是读操作还是写操作,如果都不是丢弃结束远程嵌入式设备端报文处理,否则转向步骤605。
S605、根据OID进行对应的对象处理,并将处理结果封装成响应报文;S605、DOAS编码;S606、CARE编码;S607、调用通讯模块发送响应报文。
管理服务器端传输协议报文处理流程如图22所示,包括以下步骤:S701、将对象读/写操作封装成命令报文。
S702、DOAS编码。
S703、CARE编码。
S704、调用通讯模块发送命令报文,设置超时,等待响应报文。
S705、CARE报文接收,判断接收是否超时,若不超时转向步骤706,否则命令失败、处理结束。
S706、接收CARE报文是否完整,或完整转向步骤707,否则丢弃。
S707、CARE解码,并判断CARE解码是否成功,若解码成功转向步骤708,否则丢弃。
S708、验证BID是否是管理设备,若是转向步骤S709,否则丢弃。
S709、DOAS解码,并判断DOAS解码是否成功,若解码成功转向步骤710,否则丢弃。
S710、判断CMD是否响应,若CMD响应转向步骤S711,否则丢弃。
S711、判断OID是否匹配,若OID匹配转向S712、否则丢弃。
S712、进行对应的对象处理。
管理服务器事件事件/状态通知处理流程如图23所示,包括如下步骤:S801、接收CARE报文,并解码,解码成功转向步骤802,否则丢弃。
S802、验证BID是否是管理设备,若是,转向步骤S803,否则丢弃。
S803、DOAS解码。解码成功转向步骤S804,否则丢弃。
S804、CMD是事件/状态通知,若是转向步骤S805、否则转向CMD其它处理。事实上,CMD字段可以是对象读、对象写、对象读/写响应和事件/状态通知,这里指的是对CMD判断是否事件/状态通知,否则就是对象读或者对象写或者对象读/写响应的处理。
S805、处理事件/状态通知。
Claims (8)
1.一种远程更新嵌入式设备软件的方法,管理端服务器对远端嵌入式设备的软件更新,其特征在于:包括以下步骤:S1、更新准备;管理服务器准备好更新数据,远端的嵌入式设备做好更新准备;该步骤中,管理服务器将更新数据存放在一块与各嵌入式设备中APPFLASH段中相应的存储器中;S2、传输更新数据;管理服务器将更新数据传送到远端的嵌入式设备;该步骤中,管理服务器根据通信协议规定,将更新数据分段打包传送,打包时,在数据包中还包括有该段中的数据存储在与各嵌入式设备中APP FLASH段中相应的存储器中的偏移地址;S3、存储更新数据;嵌入式设备每接收到一个数据包,对数据包进行解析后,获得该数据包中的数据存储在与各嵌入式设备中APP FLASH段中相应的存储器中的偏移地址,将数据包中的数据段以此为偏移地址直接存储在其APP FLASH段中;S4、生效更新数据;管理服务器将更新数据发送完毕以后,指示嵌入式设备重新启动让硬件运行更新后的嵌入式软件。
2.根据权利要求1所述的远程更新嵌入式设备软件的方法,其特征在于:在进行更新嵌入式设备软件前还需要进行如下准备:启动Boot程序用于更新嵌入式软件;擦除App FLASH段的数据。
3. 根据权利要求1所述的远程更新嵌入式设备软件的方法,其特征在于:管理服务器发送数据包时,还将更新数据的效验和发送给嵌入式设备;嵌入式设备更新完App FLASH段以, Boot程序从App FLASH段读取数据得到的校验和与接收到的更新数据的效验和比较,只有两者相等才重启;否则,嵌入式设备回复管理服务器,升级失败,需要重新升级。
4. 根据权利要求3所述的远程更新嵌入式设备软件的方法,其特征在于:Boot程序从App FLASH段读取数据得到的校验和与接收到的更新数据的效验和比较时,将所述的效验和写入嵌入式设备的DataFLASH段中。
5. 根据权利要求4所述的远程更新嵌入式设备软件的方法,其特征在于:嵌入式设备每次重启Boot程序时,Boot程序从App FLASH段读取数据得到的校验和都与存储在DataFLASH段中的效验和比较,只有两者相等,继续启动嵌入式设备,否则,通知管理服务器该嵌入式设备App FLASH段数据损坏,需要升级,并进行升级准备。
6.根据权利要求1所述的远程更新嵌入式设备软件的方法,其特征在于:还包括管理服务器验证是否更新成功的步骤,该步骤包括:管理服务器读取嵌入式设备的软件版本号,如果嵌入式设备的软件版本号与管理服务器保存的当前更新的软件版本号相同则表明更新成功,否则启动软件更新。
7. 根据权利要求1所述的远程更新嵌入式设备软件的方法,其特征在于:管理服务器中,将更新数据分成n段,其中前n-1段每段X字节,第n段为剩余的Z字节,每一段按照传输协议打包形成一个数据包;嵌入式设备每收到一个数据包时,对接收到的更新数据包进行解析,获得偏移地址和更新数据包中该段数据,将更新数据包中的该段数据部分写入AppFLASH段数据相应位置。
8. 根据权利要求7所述的远程更新嵌入式设备软件的方法,其特征在于:嵌入式设备在将数据部分写入App FLASH段数据相应位置还包括校验流程,所述的校验流程包括:写入该段更新数据在AppFLASH段对应的位置上;从AppFLASH段对应的位置读取该段更新数据;把两份数据进行比较如果相等,则写入FLASH成功;否则丢弃、并告知管理服务器,本次传输失败。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910346913.1A CN110391931A (zh) | 2019-04-27 | 2019-04-27 | 一种管理服务器与远端嵌入式设备的通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910346913.1A CN110391931A (zh) | 2019-04-27 | 2019-04-27 | 一种管理服务器与远端嵌入式设备的通信方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110391931A true CN110391931A (zh) | 2019-10-29 |
Family
ID=68285268
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910346913.1A Pending CN110391931A (zh) | 2019-04-27 | 2019-04-27 | 一种管理服务器与远端嵌入式设备的通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110391931A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101330399A (zh) * | 2007-06-19 | 2008-12-24 | 上海风格信息技术有限公司 | 嵌入式设备的升级方法 |
CN102075564A (zh) * | 2010-12-23 | 2011-05-25 | 李华嵩 | 一种远程软件升级技术方法 |
CN104156249A (zh) * | 2014-08-18 | 2014-11-19 | 四川九成信息技术有限公司 | 嵌入式软件升级方法 |
CN105279001A (zh) * | 2015-11-20 | 2016-01-27 | 杭州云柚科技有限公司 | 一种用于网络终端设备的软件远程升级方法 |
CN106569847A (zh) * | 2016-10-14 | 2017-04-19 | 数源科技股份有限公司 | 一种用于车载系统基于移动网络实现iap远程升级的方法 |
-
2019
- 2019-04-27 CN CN201910346913.1A patent/CN110391931A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101330399A (zh) * | 2007-06-19 | 2008-12-24 | 上海风格信息技术有限公司 | 嵌入式设备的升级方法 |
CN102075564A (zh) * | 2010-12-23 | 2011-05-25 | 李华嵩 | 一种远程软件升级技术方法 |
CN104156249A (zh) * | 2014-08-18 | 2014-11-19 | 四川九成信息技术有限公司 | 嵌入式软件升级方法 |
CN105279001A (zh) * | 2015-11-20 | 2016-01-27 | 杭州云柚科技有限公司 | 一种用于网络终端设备的软件远程升级方法 |
CN106569847A (zh) * | 2016-10-14 | 2017-04-19 | 数源科技股份有限公司 | 一种用于车载系统基于移动网络实现iap远程升级的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5925140A (en) | Apparatus and method for error free loading of a programmable non-volatile memory over a datalink | |
CN106469125B (zh) | 一种基于fpga的总线通信控制器及总线通信控制方法 | |
US7269829B2 (en) | Method and system for remote update of microprocessor code for irrigation controllers | |
CN105573810A (zh) | 一种无线传感器网络节点远程升级方法及装置 | |
CN111562933B (zh) | 一种空调升级方法以及空调系统 | |
US10198397B2 (en) | Flow control in remote direct memory access data communications with mirroring of ring buffers | |
CN109189445A (zh) | 一种物联网设备程序升级的方法 | |
CN104090796A (zh) | 一种嵌入式设备程序更新方法和系统 | |
CN102819504A (zh) | 光纤信道输入/输出数据路由系统和方法 | |
US9235405B2 (en) | Apparatus, system and method for upgrading firmware of energy metering device | |
CN102819503A (zh) | 光纤信道输入/输出数据路由系统和方法 | |
CN111309363A (zh) | 基于Contiki操作系统的在线升级方法及装置 | |
CN111897560B (zh) | 基于NB-IoT模块的程序升级系统、方法、设备以及存储介质 | |
CN113741933A (zh) | 控制器的远程升级方法、控制器及系统 | |
CN113703803A (zh) | 基于fpga的远程升级系统、方法及介质 | |
CN113760332A (zh) | 软件升级方法和电子设备 | |
CN112035135A (zh) | 从站设备的固件程序更新方法、设备和存储介质 | |
CN102998994B (zh) | 嵌入式血液分析仪控制系统及其控制方法 | |
CN103376777A (zh) | 控制器的Modbus通讯接口的测试方法及上位机 | |
CN110391931A (zh) | 一种管理服务器与远端嵌入式设备的通信方法 | |
CN103562893A (zh) | 促进通道子系统与输入/输出设备之间的传输模式输入/输出操作 | |
CN102819505A (zh) | 光纤信道输入/输出数据路由系统和方法 | |
CN114077562A (zh) | 一种1553b总线控制器协议处理ip核 | |
CN107515757A (zh) | 软件程序升级方法和系统、终端 | |
US20060080636A1 (en) | Method of building intelligent platform management interface firmware architecture |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20210513 Address after: 528000 No.192, group 6, Xiancun, Hecheng street, Gaoming District, Foshan City, Guangdong Province Applicant after: Huang Yanping Address before: 518000 room 601-a, Zhongai garden office building, 040 Longzhu 7th Road, Fengjing community, Taoyuan Street, Nanshan District, Shenzhen City, Guangdong Province (room 601-a, Zhongai building) Applicant before: Shenzhen Pu Zhiyuan Technology Co.,Ltd. |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191029 |