通过can总线远程升级的嵌入式系统及方法

文档序号:6506540阅读:224来源:国知局
通过can总线远程升级的嵌入式系统及方法
【专利摘要】本发明提供了一种通过CAN总线远程升级的嵌入式系统,包括远程控制设备和N台嵌入设备,每个嵌入设备包括:CAN总线接口,用于接收远程控制设备发来的控制指令并发送给控制模块,同时接收本台嵌入设备的状态数据和请求数据并发送到远程控制设备;控制模块,用于接收控制指令并判断目标ID是否与本台嵌入设备的ID相同,当目标ID与本台嵌入设备的ID相同时,将根据升级指令对控制模块中的程序区进行升级或根据设置指令来设置功能模块的状态。本发明还公开了一种通过CAN总线远程升级嵌入设备的方法。本发明只要通过一条双芯导线连接所有设备,就可以对一些不便于拆卸的和异地的系统进行升级,方便了用户的使用。
【专利说明】通过CAN总线远程升级的嵌入式系统及方法

【技术领域】
[0001]本发明涉及一种嵌入式系统领域,更具体地,涉及一种通过CAN总线远程升级的嵌入式系统及方法。

【背景技术】
[0002]目前,嵌入式系统都具备在线升级功能,但是很多设备的升级只是局限于串口或其他专用接口。也有一些具备以太网接口的设备使用以太网升级,但是对于不具备以太网接口或因为各种原因不能使用以太网的设备就不能实现远程升级。而且现有的升级系统不能确保升级成功,如果升级失败,将需要派工程师到现场或者将系统发给开发人员才能解决,浪费了人力、物力,不能提高工作效率。


【发明内容】

[0003]有鉴于此,本发明的主要目的在于提供一种通过CAN总线远程升级的嵌入式系统及方法,能够解决现有技术中存在的不能对不便于拆卸的和远程的系统进行升级的问题。
[0004]为达到上述目的,本发明的技术方案是这样实现的:
[0005]一方面,本发明提供了一种通过CAN总线远程升级的嵌入式系统,包括远程控制设备和N台嵌入设备,每个嵌入设备包括:CAN总线接口、控制模块和功能模块,其中,CAN总线接口,通过CAN总线与远程控制设备相连,用于接收远程控制设备发来的控制指令并发送给控制模块,同时接收控制模块发来的本台嵌入设备的状态数据和请求数据并发送到远程控制设备;其中,控制指令包括:对控制模块的升级指令和对功能模块的设置和数据传输指令;控制指令的完整格式包括:帧信息、同步头、目标类型ID、源设备类型ID、目标ID、源ID、命令、命令数据、校验和;控制模块,与CAN总线接口和功能模块相连,用于接收控制指令并判断目标ID是否与本台嵌入设备的ID相同,当目标ID与本台嵌入设备的ID相同时,将根据升级指令对控制模块中的程序区进行升级或根据设置指令来设置功能模块的状态。
[0006]优选地,在使用嵌入设备之前,对在同一条CAN总线上的远程控制设备和N台嵌入设备设置不同的ID,且每台设备的ID是唯一的。
[0007]优选地,控制模块还包括程序存储器和处理器,其中,程序存储器,用于存储系统的各类程序,包括:升级程序、主程序、用户程序和用户主程序,远程升级时,只升级用户程序和用户主程序;处理器,用于当收到升级指令时,根据升级指令对用户程序和用户主程序进行升级并将升级结果通过CAN总线接口反馈给远程控制设备,其中升级指令包括:升级标志、升级开始命令、需要升级的代码的长度和升级数据。
[0008]优选地,控制模块还用于将每台嵌入设备的状态数据和请求数据通过CAN总线接口发送给远程控制设备。
[0009]优选地,冋步头为起始标志,当收到冋步头即开始接收控制指令;目标ID为接收控制指令的目标设备的ID ;源ID为发送控制指令的设备的ID ;命令为对嵌入设备所做的操作指令及数据内容的说明;命令数据为与所述操作指令相关的数据和嵌入设备返回的状态数据和请求数据。
[0010]优选地,用户程序代码的最高地址低于主程序代码的地址。
[0011]另一方面,本发明还提供了一种通过CAN总线远程升级嵌入设备的方法,包括:远程控制设备通过CAN总线接口将控制指令发送给控制模块;其中,控制指令包括:对控制模块的升级指令和对功能模块的设置和数据传输指令;控制指令的完整格式包括:帧信息、同步头、目标类型ID、源设备类型ID、目标ID、源ID、命令、命令数据、校验和;控制模块接收控制指令并判断目标ID是否与本台嵌入设备的ID相同,当目标ID与本台嵌入设备的ID相同时,将根据升级指令对控制模块中的程序区进行升级或根据设置指令来设置功能模块的状态。
[0012]优选地,在使用所述嵌入设备之前,对在同一条CAN总线上的远程控制设备和N台嵌入设备设置不同的ID,且每台设备的ID是唯一的;控制模块还用于将每台嵌入设备的状态数据和请求数据通过CAN总线接口发送给远程控制设备。
[0013]优选地,控制模块中的处理器当收到升级指令时,根据升级指令对程序存储器中的用户程序和用户主程序进行升级并将升级结果通过CAN总线接口反馈给远程控制设备,其中升级指令包括:升级标志、升级开始命令、需要升级的代码的长度和升级数据。
[0014]优选地,冋步头为起始标志,当收到冋步头即开始接收控制指令;目标ID为接收控制指令的目标设备的ID ;源ID为发送控制指令的设备的ID ;命令为对嵌入设备所做的操作指令及数据内容的说明;命令数据为与操作指令相关的数据和嵌入设备返回的状态数据和请求数据。
[0015]本发明的技术效果:
[0016]1.由于本发明中为每台嵌入设备设置一个CAN总线接口和唯一 ID,在多台嵌入设备环境下通过CAN总线对嵌入设备实现远程升级,方便了用户的使用;
[0017]2.由于本发明通过CAN总线将远程控制设备与嵌入设备相连,只要通过一条双芯导线连接所有设备,就可以实现一些不便于拆卸的和异地的系统升级,解决了现有技术中由于各种原因导致的不能对设备进行远程升级的问题;
[0018]3.本发明在升级过程中加了多重保护,可以确保升级成功,这一点在远程升级中特别重要,否则出现升级失败,将需要派工程师到现场或者将系统发给开发人员才能解决,节省了人力、物力,提高了工作效率。

【专利附图】

【附图说明】
[0019]此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0020]图1示出了根据本发明实施例一的通过CAN总线远程升级的嵌入式系统结构示意图;
[0021]图2示出了根据本发明实施例二的通过CAN总线远程升级的嵌入式系统结构示意图;
[0022]图3示出了根据本发明实施例二的通过CAN总线远程升级的嵌入式系统的程序存储器结构示意图;
[0023]图4示出了根据本发明实施例三的通过CAN总线远程升级的嵌入式系统的连接方式示意图;
[0024]图5示出了根据本发明实施例四的通过CAN总线远程升级的嵌入式系统的连接方式示意图;
[0025]图6示出了根据本发明实施例五的通过CAN总线远程升级嵌入设备的方法的流程图;
[0026]图7示出了根据本发明实施例六的通过CAN总线远程升级嵌入设备的方法中嵌入设备的具体处理流程图;
[0027]图8示出了根据本发明实施例七的通过CAN总线远程升级嵌入设备的方法中远程控制设备的具体处理流程图。

【具体实施方式】
[0028]下面将参考附图并结合实施例,来详细说明本发明。
[0029]实施例一
[0030]图1示出了根据本发明实施例一的通过CAN总线远程升级的嵌入式系统结构示意图;如图1所示,该系统包括:远程控制设备和N台嵌入设备,每台嵌入设备包括:CAN(Controller Area Net-work,控制器局域网)总线接口 10、控制模块20和功能模块30,其中,
[0031]远程控制设备可以是PC机或其他具有CAN总线接口的可控设备。
[0032]CAN总线接口 10,通过CAN总线与远程控制设备相连,用于接收远程控制设备发来的控制指令并发送给控制模块20,同时接收控制模块20发来的本台嵌入设备的状态数据和请求数据并发送到远程控制设备;
[0033]其中,控制指令包括:对控制模块20的升级指令和对功能模块30的设置和数据传输指令;
[0034]其中,控制指令的完整格式包括:帧信息(I字节)、同步头(2字节)、目标类型ID( I字节)、源设备类型ID (I字节)、目标ID (I字节)、源ID (I字节)、命令(I字节)、命令数据(4字节)、校验和(I字节),共13个字节;
[0035]控制模块20,与CAN总线接口 10和功能模块30相连,用于接收控制指令并判断目标ID是否与本台嵌入设备的ID相同,当目标ID与本台嵌入设备的ID相同时,将根据升级指令对控制模块20中的程序区进行升级或根据设置指令来设置功能模块30的状态;
[0036]功能模块30可以为灯光模块、打印模块等可以实现嵌入设备基本功能的模块。
[0037]控制模块20还用于将每台嵌入设备的状态数据和请求数据通过CAN总线接口 10发送给远程控制设备。
[0038]在使用嵌入设备之前,对在同一条CAN总线上的远程控制设备和N台嵌入设备设置不同的ID,且每台设备的ID是唯一的。
[0039]本发明中的实施例为每台嵌入设备设置一个CAN总线接口和唯一 ID,在多台嵌入设备环境下通过CAN总线对嵌入设备实现远程升级,方便了用户的使用;并且本实施例通过CAN总线将远程控制设备与嵌入设备相连,只要通过一条双芯导线连接所有设备,就可以实现一些不便于拆卸的和异地的系统升级,解决了现有技术中由于各种原因导致的不能对设备进行远程升级的问题。
[0040]实施例二
[0041]图2示出了根据本发明实施例二的通过CAN总线远程升级的嵌入式系统结构示意图;图3示出了根据本发明实施例二的通过CAN总线远程升级的嵌入式系统的程序存储器结构示意图;
[0042]如图2所示,控制模块20还包括程序存储器202和处理器204,其中,
[0043]程序存储器202,用于存储系统的各类程序,包括:升级程序、主程序、用户程序和用户主程序,远程升级时,只升级用户程序和用户主程序,这样可以保证升级失败后可以重新开始升级;
[0044]处理器204,用于当收到升级指令时,根据升级指令对用户程序和用户主程序进行升级并将升级结果通过CAN总线接口反馈给远程控制设备;
[0045]其中升级指令包括:升级标志、升级开始命令、需要升级的代码的长度和升级数据。
[0046]冋步头为起始标志,当收到冋步头即开始接收控制指令;
[0047]目标ID为接收控制指令的目标设备的ID;源ID为发送控制指令的设备的ID ;发送控制指令的设备可以是远程控制设备也可以是嵌入设备,当远程控制设备要发送控制指令到嵌入设备时,源ID即为远程控制设备的ID ;当嵌入设备要向远程控制设备发回嵌入设备的状态数据或请求数据时,源ID即为嵌入设备的ID,目标ID为远程控制设备的ID ;
[0048]命令为对嵌入设备所做的操作指令及数据内容的说明;以灯光设备为例,操作指令可以为对灯光设备中的控制模块的程序区进行升级或对灯光设备的“开”、“关”或其他设置、查询命令,数据内容包括灯光亮度、颜色和灯光模式的值等或者升级过程中向远程控制设备发送的数据请求;
[0049]命令数据为与所述操作指令相关的数据(以灯光设备为例,设置灯光设备的亮度、颜色和灯光模式等,或者是升级标志、需要升级的代码的长度和升级数据等)和嵌入设备返回的状态数据(以灯光设备为例,灯光设备的亮度、颜色、灯光模式和功耗等)和请求数据(升级过程中向远程控制设备发送的数据请求)。
[0050]如图3所示,当嵌入式系统启动时,将从地址0000H开始执行。并立即跳转到主程序所在的地址运行主程序。在编译时将主程序定位到比程序区最高地址低3000H的位置。该地址可以根据升级程序函数的大小做调整:如果升级程序较小可以使用更高的地址,如果程序较大,可以使用较低的地址,换用程序存储器更大的嵌入式处理器,或增加外部的程序存储器。所有升级需要的代码也都定位到主程序后面,比主程序高的地址。
[0051]再定义一个用户主程序函数,这是用户可以随意修改的部分。所有的初始化,主循环均由该函数实现。当主程序代码执行完毕后将执行用户主程序代码。用户主程序函数的地址也需要在编译时指定,以便主程序代码执行完毕后能准确的跳转到用户主程序函数的起始位置。可以将用户主程序函数指定在一个不会与各种中断发生冲突的地址,比如1000H,其他用户程序函数不需要特别指定地址。
[0052]系统编译完成后,需要确认用户程序代码的最高地址低于主程序代码的地址。如果等于或高于主程序代码的地址,需要对用户程序进行优化,或将主程序调整到一个更高的地址。如果出现溢出,可换用程序存储器更大的嵌入式处理器,或增加外部的程序存储器。
[0053]嵌入式系统启动时将跳转到主程序函数所在的地址,执行主程序。主程序将检查升级标志,如果不需要升级,将跳转到用户主程序函数所在地址,进入正常的运行。如果需要升级,将跳转到升级程序函数所在地址,进行与升级相关的操作。
[0054]实施例三
[0055]图4示出了根据本发明实施例三的通过CAN总线远程升级的嵌入式系统的连接方式示意图;如图4所示,CAN总线两端需要有120欧姆终结电阻。PC主机可以放在CAN总线上的任何位置。
[0056]CAN总线连接到每台设备时,必须保证CANH (高电平CAN电压)和CANL (低电平CAN电压)不能接反。即必须CANH与CANH连接,CANL与CANL连接。为避免连接出现混乱,可以为CAN总线选用双色导线,CANH和CANL分别使用不同颜色的导线。
[0057]PC主机通过RS232通讯接口与相应的CAN总线转发器连接。
[0058]CAN总线转发器必须选择具有RS232接口的转发器。也可以在系统原有的CAN总线控制机上添加转发功能,或者直接将PC主机端的升级程序安装在PC控制机上。
[0059]本发明的实施例通过CAN总线将远程控制设备与嵌入设备相连,只要通过一条双芯导线连接所有设备,就可以实现一些不便于拆卸的和异地的系统升级,解决了现有技术中由于各种原因导致的不能对设备进行远程升级的问题。
[0060]实施例四
[0061]图5示出了根据本发明实施例四的通过CAN总线远程升级的嵌入式系统的连接方式示意图;如图5所示,除了可以采用RS232转CAN总线的转发器实现升级以外,还可以采用以太网转CAN总线的转发器或利用USB转串口的转发器与RS232转CAN总线转发器连接来实现远程升级。
[0062]但是需要注意:由于CAN总线的驱动能力有限,同一条CAN总线上的嵌入设备和远程控制设备加起来的总和不要超过110个。
[0063]实施例五
[0064]图6示出了根据本发明实施例五的通过CAN总线远程升级嵌入设备的方法的流程图;如图6所示,该方法包括以下步骤:
[0065]步骤S601,远程控制设备通过CAN总线接口将控制指令发送给控制模块;其中,控制指令包括:对控制模块的升级指令和对功能模块的设置和数据传输指令;控制指令的完整格式包括:帧信息、同步头、目标类型ID、源设备类型ID、目标ID、源ID、命令、命令数据、校验和;
[0066]步骤S602,控制模块接收控制指令并判断目标ID是否与本台嵌入设备的ID相同,当目标ID与本台嵌入设备的ID相同时,将根据升级指令对控制模块中的程序区进行升级。
[0067]在使用嵌入设备之前,该方法还包括:对在同一条CAN总线上的远程控制设备和N台嵌入设备设置不同的ID,且每台设备的ID是唯一的;
[0068]控制模块还将每台嵌入设备的状态数据和请求数据通过CAN总线接口发送给远程控制设备。
[0069]控制模块中的处理器当收到升级指令时,根据升级指令对程序存储器中的用户程序和用户主程序进行升级并将升级结果通过CAN总线接口反馈给远程控制设备,其中升级指令包括:升级标志、升级开始命令、需要升级的代码的长度和升级数据。
[0070]冋步头为起始标志,当收到冋步头即开始接收控制指令;
[0071]目标ID为接收控制指令的目标设备的ID;源ID为发送控制指令的设备的ID ;发送控制指令可以是远程控制设备也可以是嵌入设备,当远程控制设备要发送控制指令到嵌入设备时,源ID即为远程控制设备的ID ;当嵌入设备要向远程控制设备发回嵌入设备的状态数据或请求数据时,源ID即为嵌入设备的ID,目标ID为远程控制设备的ID ;
[0072]命令为对嵌入设备所做的操作指令及数据内容的说明;以灯光设备为例,操作指令可以为对灯光设备中的控制模块的程序区进行升级或对灯光设备的“开”、“关”或其他设置、查询命令,数据内容包括灯光亮度、颜色和灯光模式的值等或者升级过程中向远程控制设备发送的数据请求;
[0073]命令数据为与所述操作指令相关的数据(以灯光设备为例,设置灯光设备的亮度、颜色和灯光模式等,或者是升级标志、需要升级的代码的长度和升级数据等)和嵌入设备返回的状态数据(以灯光设备为例,灯光设备的亮度、颜色、灯光模式和功耗等)和请求数据(升级过程中向远程控制设备发送的数据请求)。
[0074]本发明中的实施例为每台嵌入设备设置一个CAN总线接口和唯一 ID,在多台嵌入设备环境下通过CAN总线对嵌入设备实现远程升级,方便了用户的使用;并且本实施例通过CAN总线将远程控制设备与嵌入设备相连,只要通过一条双芯导线连接所有设备,就可以实现一些不便于拆卸的和异地的系统升级,解决了现有技术中由于各种原因导致的不能对设备进行远程升级的问题。
[0075]实施例六
[0076]图7示出了根据本发明实施例六的通过CAN总线远程升级嵌入设备的方法中嵌入设备的具体处理流程图;如图7所示,包括以下步骤:
[0077]嵌入式系统启动时,系统处理器跳转到主程序函数地址开始执行,对系统做一些必要的初始化,以便读取升级标志位和CAN总线数据;
[0078]步骤S701,是否收到升级标志?若否,进入步骤S702 ;
[0079]步骤S702,跳到用户主程序函数地址开始执行,执行完必要的初始化后,将进入主循环函数,其中,主循环函数包含看门狗复位的代码,以便及时复位看门狗,防止系统重启;
[0080]步骤S703,CAN总线是否收到远程控制设备发来的升级重启代码?若是,执行步骤S704,若否,返回步骤S702 ;
[0081]步骤S704,设置升级标志并重启嵌入式系统。
[0082]当系统重启,跳转到主程序函数地址开始执行,检测到升级标志时,将跳转到升级程序函数地址开始执行升级,此时进入步骤S705 ;
[0083]步骤S705,向远程控制设备发送升级、重启成功代码;
[0084]步骤S706,CAN总线是否收到开始升级代码?若是,执行步骤S707,若否,为了防止升级过程中出现各种故障引起的升级失败,需要确定看门狗是否达到复位时间,如果长时间收不到远程控制设备发送的升级开始代码,看门狗将会重启嵌入系统,重启后将再次向远程控制设备发送升级、重启成功代码继续等待远程控制设备发送的升级开始代码;如果没有达到看门狗复位时间将返回步骤S705 ;
[0085]其中,升级开始代码包括,升级开始命令和需要升级的代码的长度;
[0086]步骤S707,通过CAN总线向远程控制设备发送请求0000H地址数据的代码并复位看门狗,防止系统重启,等待远程控制设备发来的升级数据;
[0087]步骤S708,CAN总线是否收到升级数据?若是,执行步骤S709,若否,为了防止升级过程中出现各种故障引起的升级失败,需要确定看门狗是否达到复位时间,如果长时间收不到远程控制设备发送的升级数据,看门狗将会重启嵌入系统,重启后将再次向远程控制设备发送升级、重启成功代码继续等待远程控制设备发送的升级开始代码;如果没有达到看门狗复位时间将返回步骤S707 ;
[0088]步骤S709,将4字节的数据写入程序存储器的相应地址,将请求地址加4 ;
[0089]步骤S710,请求地址是否大于或等于主程序函数地址?若是,执行步骤S712,若否,执行步骤S711 ;
[0090]步骤S711,如果新的请求地址小于主程序函数地址,将通过CAN总线向远程控制设备发送当前请求地址数据代码,返回步骤S707,继续等待远程控制设备发来的新的请求地址的升级数据;
[0091]步骤S712,通过CAN总线向远程控制设备发送升级完成代码;
[0092]步骤S713,清除升级标志,重启嵌入式系统,至此升级完成,系统进入正常的工作状态。
[0093]实施例七
[0094]图8示出了根据本发明实施例七的通过CAN总线远程升级嵌入设备的方法中远程控制设备的具体处理流程图;如图8所示,包括以下步骤:
[0095]步骤S801,设置升级准备使用的与CAN总线转换器连接的串口,打开升级文件,检查文件的完整性,如果没有错误,将其读入内存中;
[0096]步骤S802,通过升级端口发送升级、重启指令;
[0097]步骤S803,是否收到目标机的升级、重启成功代码?若是,执行步骤S804,若否,返回步骤S802,继续等待目标机的升级、重启成功代码;
[0098]步骤S804,发送开始升级指令和文件长度数据;
[0099]步骤S805,等待目标机发来的请求指定地址(请求地址)数据的代码,若收到目标机发来的请求指定地址数据的代码,执行步骤S806,若没有收到目标机发来的请求指定地址数据的代码,执行步骤S807 ;
[0100]步骤S806,从升级文件中读取和请求地址对应的4个字节数据并发送给目标机,等待接收目标机发送的新的指定的请求地址的数据代码;
[0101]步骤S807,是否收到目标机发送的升级完成代码?若否,继续等待接收目标机发送的新的指定的请求地址的数据代码;若是,将结束升级过程。
[0102]为了维护简便,在系统软件开发时只需要编译出一套软件。对于新系统可以选择厂家提供的烧录方法下载到嵌入式系统。这个方法是完全的下载,包括了主程序部分和升级程序部分的代码。
[0103]对于已有系统可以选用编译出的同一套软件用CAN总线实现远程升级。远程升级时不升级主程序部分和升级程序部分的代码,可以避免升级失败带来的各种后果。
[0104]PC端确定HEX文件缓存大小的方法:
[0105]由于很多系统编译完成的软件都是采用HEX”格式。将HEX文件读到缓存时要留出足够的空间。需要注意的是:不能以HEX文件的原始大小为依据。一个简单的确定大小的方法是:与嵌入系统的程序存储器大小一样,否则可能会出现溢出错误。
[0106]控制指令传输可以采用PeliCAN模式的扩展帧格式。该格式包括I个字节的帧信息、4个字节的识别码和8个字节的数据。在使用中帧信息与数据格式有关不能改动。4个字节的识别码可以用“同步头”(2字节)、“目标类型ID”(I字节)、“源设备类型ID”(I字节)代替,接下来的8个字节的数据可以使用“目标ID”(I字节)、“源ID”(I字节)、“命令”(I字节)、“命令数据”(4字节)、“校验和”(I字节)。“校验和”为“目标ID”、“源ID”、“命令”、“命令数据”和的低8位。
[0107]因此控制指令的完整格式为:
[0108]“帧信息”(I字节)、“同步头”(2字节)、“目标类型ID”(I字节)、“源设备类型ID”(I字节)、“目标ID”(I字节)、“源ID”(I字节)、“命令”(I字节)、“命令数据”(4字节)、“校验和”(I字节),共13个字节。
[0109]如果同步头设置为:0xAE0x98 ;目标类型ID为:0x59 ;控制机类型ID为:01。
[0110]以下是ID为OxFF的远程控制设备给ID为0x12的目标机升级时的命令、数据收发过程:
[0111]主机发送:升级、重启指令;
[0112]0x88 OxAE 0x98 0x59 0x01 0x12 OxFF OxAO 0x00 0x00 0x00 0x00 OxBl
[0113]目标机重启后发送:重启成功;
[0114]0x88 OxAE 0x98 0x01 0x59 OxFF 0x12 OxAl OxXX 0x00 0x00 0x00 0xB2
[0115]主机发送:开始升级指令(指令数据为升级数据的最高地址);
[0116]0x88 OxAE 0x98 0x59 0x01 0x12 OxFF 0xA2 OxXX OxXX OxXX OxXX OxXX
[0117]目标机发送:请求地址数据(从0x00开始到升级数据的最高地址结束);
[0118]0x88 OxAE 0x98 0x01 0x59 OxFF 0x12 0xA3 OxXX OxXX OxXX OxXX OxXX
[0119]主机发送:对应请求地址的数据;
[0120]0x88 OxAE 0x98 0x59 0x01 0x12 OxFF 0xA4 OxXX OxXX OxXX OxXX OxXX
[0121]目标机发送:升级完成代码;
[0122]0x88 OxAE 0x98 0x01 0x59 OxFF 0x12 0xA5 0x00 0x00 0x00 0x00 0xB6
[0123]完成升级过程。
[0124]从以上的描述中,可以看出,本发明上述的实施例实现了如下技术效果:
[0125]1.由于本发明的实施例中为每台嵌入设备设置一个CAN总线接口和唯一 ID,在多台嵌入设备环境下通过CAN总线对嵌入设备实现远程升级,方便了用户的使用;
[0126]2.由于本发明的实施例通过CAN总线将远程控制设备与嵌入设备相连,只要通过一条双芯导线连接所有设备,就可以实现一些不便于拆卸的和异地的系统升级,解决了现有技术中由于各种原因导致的不能对设备进行远程升级的问题;
[0127]3.本发明的实施例在升级过程中加了多重保护,可以确保升级成功,这一点在远程升级中特别重要,否则出现升级失败,将需要派工程师到现场或者将系统发给开发人员才能解决,节省了人力、物力,提高了工作效率。
[0128]显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
[0129]以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种通过CAN总线远程升级的嵌入式系统,包括远程控制设备和N台嵌入设备,其特征在于,每个所述嵌入设备包括=CAN总线接口、控制模块和功能模块,其中, 所述CAN总线接口,通过CAN总线与所述远程控制设备相连,用于接收所述远程控制设备发来的控制指令并发送给所述控制模块,同时接收所述控制模块发来的本台嵌入设备的状态数据和请求数据并发送到所述远程控制设备; 其中,所述控制指令包括:对所述控制模块的升级指令和对所述功能模块的设置和数据传输指令; 所述控制指令的完整格式包括:帧信息、同步头、目标类型ID、源设备类型ID、目标ID、源ID、命令、命令数据、校验和; 所述控制模块,与所述CAN总线接口和所述功能模块相连,用于接收所述控制指令并判断所述目标ID是否与本台嵌入设备的ID相同,当所述目标ID与本台嵌入设备的ID相同时,将根据所述升级指令对所述控制模块中的程序区进行升级或根据所述设置指令来设置所述功能模块的状态。
2.根据权利要求1所述的通过CAN总线远程升级的嵌入式系统,其特征在于,在使用所述嵌入设备之前,对在同一条CAN总线上的所述远程控制设备和所述N台嵌入设备设置不同的ID,且每台设备的ID是唯一的。
3.根据权利要求1所述的通过CAN总线远程升级的嵌入式系统,其特征在于,所述控制模块还包括程序存储器和处理器,其中, 所述程序存储器,用于存储系统的各类程序,包括:升级程序、主程序、用户程序和用户主程序,远程升级时,只升级所述用户程序和所述用户主程序; 所述处理器,用于当收到所述升级指令时,根据所述升级指令对所述用户程序和所述用户主程序进行升级并将升级结果通过所述CAN总线接口反馈给所述远程控制设备,其中所述升级指令包括:升级标志、升级开始命令、需要升级的代码的长度和升级数据。
4.根据权利要求1所述的通过CAN总线远程升级的嵌入式系统,其特征在于,所述控制模块还用于将每台所述嵌入设备的状态数据和所述请求数据通过所述CAN总线接口发送给所述远程控制设备。
5.根据权利要求1-4中的任一项所述的通过CAN总线远程升级的嵌入式系统,其特征在于,所述同步头为起始标志,当收到同步头即开始接收控制指令;所述目标ID为接收所述控制指令的目标设备的ID ;源ID为发送所述控制指令的设备的ID ;命令为对所述嵌入设备所做的操作指令及数据内容的说明;命令数据为与所述操作指令相关的数据和所述嵌入设备返回的状态数据和请求数据。
6.根据权利要求3所述的通过CAN总线远程升级的嵌入式系统,其特征在于,所述用户程序代码的最高地址低于所述主程序代码的地址。
7.一种通过CAN总线远程升级嵌入设备的方法,其特征在于,包括: 远程控制设备通过CAN总线接口将控制指令发送给控制模块;其中,所述控制指令包括:对所述控制模块的升级指令和对功能模块的设置和数据传输指令;所述控制指令的完整格式包括:帧信息、同步头、目标类型ID、源设备类型ID、目标ID、源ID、命令、命令数据、校验和; 所述控制模块接收所述控制指令并判断所述目标ID是否与本台嵌入设备的ID相同,当所述目标ID与本台嵌入设备的ID相同时,将根据所述升级指令对所述控制模块中的程序区进行升级或根据所述设置指令来设置所述功能模块的状态。
8.根据权利要求7所述的通过CAN总线远程升级嵌入设备的方法,其特征在于,在使用所述嵌入设备之前,对在同一条CAN总线上的所述远程控制设备和所述N台嵌入设备设置不同的ID,且每台设备的ID是唯一的;所述控制模块还用于将每台所述嵌入设备的状态数据和所述请求数据通过所述CAN总线接口发送给所述远程控制设备。
9.根据权利要求7所述的通过CAN总线远程升级嵌入设备的方法,其特征在于,所述控制模块中的处理器当收到所述升级指令时,根据所述升级指令对程序存储器中的用户程序和用户主程序进行升级并将升级结果通过所述CAN总线接口反馈给所述远程控制设备,其中所述升级指令包括:升级标志、升级开始命令、需要升级的代码的长度和升级数据。
10.根据权利要求7-9中任一项所述的通过CAN总线远程升级嵌入设备的方法,其特征在于,所述同步头为起始标志,当收到同步头即开始接收控制指令;所述目标ID为接收所述控制指令的目标设备的ID ;源ID为发送所述控制指令的设备的ID ;命令为对所述嵌入设备所做的操作指令及数据内容的说明;命令数据为与所述操作指令相关的数据和所述嵌入设备返回的状态数据和请求数据。
【文档编号】G06F9/445GK104346179SQ201310321464
【公开日】2015年2月11日 申请日期:2013年7月29日 优先权日:2013年7月29日
【发明者】黄喜荣 申请人:北京同步科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1