一种单片机在线升级的方法及装置的制作方法

文档序号:6575180阅读:228来源:国知局
专利名称:一种单片机在线升级的方法及装置的制作方法
技术领域
本发明涉及单片机技术领域,更具体的说,尤其涉及一种单片机在线升级的方法及 装置。
背景技术
目前,由于Rabbit处理器自身的特点已被广泛的应用在各个领域中,与PPC处理器、 ARM处理器等嵌入式系统相比体积更小、价格更低、且性价比更高。Rabbit处理器这种专 门为嵌入式控制,通信和以太网连接而设计的微处理器,具有电磁干扰非常低的特点, 能够支持1MB代码数据空间的直接访问。其中,RAM占用512K, FLASH占用512K。 Rabbit3000处理器能最大支持两片并行FLASH,每片并行FLASH最大支持容量512K。两片 并行FLASH中, 一片并行FLASH是必须配置的,第二片则是选配。Rabbit单片机在访问代 码数据空间时总会保留寻址到512K的RAM,另外的512K留给并行FLASH;此外,Rabbit单 片机还可以通过外接串行存储器等方式来增加存储空间。
Rabbit处理器是使用类似C语言的DynamiC进行软件开发的,可以编译产生*. bin格式 的应用程序,编译成^bin格式的应用程序时,可以选择FLASH方式,也可以选择RAM方 式,Rabbit应用程序在运行时,可以在并行FLASH中运行,也可以在RAM里运行,因为RAM 方式一般只在调试时使用,程序代码在重新开、关电后会被清空,所以,正常情况下必 须选择FLASH方式。
在实现本发明的过程中,发明人发现由于Rabbit处理器具有串口升级功能,所以目 前大多Rabbit处理器用户都在使用Rabbit的串口升级功能对Rabbit单片机进行升级,通过 Rabbit单片机的软件包RFU和串口烧制线,直接将应用程序烧制到Rabbit单片机标配的 FLASH中,但采用这种方式升级时必须断电,否则可能会造成串口烧毁。所以,采用上 述这种断电方式针对Rabbit单片机升级必然会导致业务中断,给用户带来很大的损失。
鉴于上述理由,在Rabbit单片机单RAM、单FLASH的情况下,实现Rabbit单片机应 用程序的在线升级一直是个未解决的难题。200910089143.3
说明书第2/9页

发明内容
本发明要解决的技术问题是提供一种单片机在线升级的方法及装置,解决现有技
术难以实现Rabbit单片机在线升级的问题。
本发明的技术方案如下所述
本发明提供了一种单片机在线升级的方法,包括
升级服务器接收客户端发送的升级请求,并返回升级结果,所述升级请求是客户端 根据用户的应用程序升级命令生成的;
客户端根据匹配条件对所述升级结果进行判断,将满足匹配条件的升级结果保存, 并运行,以完成对所述单片机应用程序的在线升级。
进一步的,所述方法还包括
系统上电时,客户端启动定时器检测用户是否具有应用程序升级命令,当在所述定 时器超时前,检查用户输入命令中具有所述升级命令时,根据所述升级命令生成所述升 级请求,并将所述升级请求发送给升级服务器,所述升级请求中包括用户输入的服务器 IP地址和应用程序中需要升级的文件名;否则,退出升级流程。
进一步的,升级服务器接收客户端发送的升级请求,并返回升级结果,具体过程包

升级服务器接收所述客户端发送的升级请求,并根据所述升级请求升级指定文件, 并将升级后的升级结果返回给所述客户端。
进一步的,客户端根据匹配条件对所述升级结果进行判断,将满足匹配条件的升级 结果保存,具体过程包括
客户端将接收到的所述升级结果对应的保存在应用程序的相应位置;
根据所述匹配条件对所述升级结果进行判断,当所述升级结果满足所述匹配条件 时,提示用户立刻启动升级后的应用程序或者进行再次升级;当所述升级结果不满足所 述匹配条件时,提示用户重新升级;所述匹配条件包括应用程序的长度值以及校验和。
进一步的,所述方法还包括
当所述升级结果满足所述匹配条件时,将存储在FLASH中升级后的应用程序搬移到 RAM中,根据单片机的地址映射倒换功能运行所述升级后的应用程序,以完成单片机应 用程序的在线升级。本发明还提供了一种单片机在线升级的装置,包括
请求处理模块,用于升级服务器接收客户端发送的升级请求,并返回升级结果,所 述升级请求是客户端根据用户的应用程序升级命令生成的;
结果处理模块,用于客户端根据匹配条件对所述请求处理模块返回的升级结果进行 判断,将满足匹配条件的升级结果保存,并运行,以完成对所述单片机应用程序的在线 升级。
优选的,所述装置还包括-
升级检测模块,用于在系统上电时,客户端启动定时器检测用户是否具有应用程序 升级命令,当在所述定时器超时前,检査出用户输入命令中具有所述升级命令时,根据 所述升级命令生成所述升级请求,并将所述升级请求发送给升级服务器,所述升级请求 中包括用户输入的服务器IP地址和应用程序中需要升级的文件名;否则,退出升级流 程。
优选的,所述请求处理模块具体包括
请求接收单元,用于升级服务器接收所述客户端发送的升级请求;
程序升级单元,用于根据所述请求接收单元接收到的升级请求升级指定文件,并将 升级后的升级结果返回给所述客户端。
优选的,所述结果处理模块具体包括
结果存储单元,用于客户端将接收到的所述升级结果对应的保存在应用程序的相应 位置;
判断执行单元,用于根据所述匹配条件对所述升级结果进行判断,当所述升级结果 满足所述匹配条件时,提示用户立刻启动升级后的应用程序或者进行再次升级;当所述 升级结果不满足所述匹配条件时,提示用户重新升级;所述匹配条件包括应用程序的长 度值以及校验和。
优选的,所述结果处理模块具体还包括
程序运行单元,用于当所述升级结果满足所述匹配条件时,将存储在FLASH中升级 后的应用程序搬移到RAM中,根据单片机的地址映射倒换功能运行所述升级后的应用程 序,以完成单片机应用程序的在线升级。
本发明的有益效果
采用本发明所述的一种单片机在线升级的方法及装置,实现了现有Rabbit单片机的在线升级,并且可以实现单片机应用程序版本的维护、回退等功能,避免了现有技术中采 用断电升级方式对正常业务的影响,避免了正常业务中断造成的损失,节约了成本,并 且本发明所述的技术方案,操作简单,易于推广。


图l是本发明实施例一种单片机在线升级的方法流程图; 图2是本发明实施例一种单片机在线升级的装置结构示意图; 图3是本发明实施例 一在FLASH中应用程序的分布图; 图4是本发明实施例一所述单片机在线升级的方法流程图; 图5是本发明实施例一中执行FLASH、 RM1地址映射倒换指令之前的结构示意图; 图6是本发明实施例 一 中执行FLASH、 RAM地址映射倒换指令之后的结构示意图; 图7是本发明实施例一中运行升级后的应用程序的流程图; 图8是本发明实施例一中升级回退功能的结构示意图。
具体实施例方式
为了进一步说明本发明所述的一种单片机在线升级的方法及装置,下面结合具体实 施例进行详细说明。
现有技术中,由于Rabbit处理器能够提供串口升级功能,所以大多用户通过Rabbit单 片机工作包直接将应用程序烧制到指定的并行FLASH中,但是采用这种升级方式通常为 了避免串口烧坏,都要在升级之前切断电源,这样必定会影响正常业务的运行,给用户 造成极大的损失。
在开发Rabbit单片机时,出于成本考虑,通常只采用单片RAM和单片并行FLASH, 这样就没有足够多的空间来存放升级程序,针对这种情况,虽然可以通过外接存器的方 式来增加内存空间,但内存空间中存储的应用程序不能被直接运行,所以实现单片机的 在线升级仍然是个未解决的难题。如果通过覆写正在FLASH中运行的原程序的方式进行 升级,由于系统负担过重,通常会导致设备死机,导致原程序的损坏,不能正常运行。
所以基于上述现有技术存在的问题,本发明实施例根据Rabbit单片机的配置特点和功 能,提出了一种能够通过TFTP (Trivial File Transfer Protocol,简单文件传输协 议)或FTP (File Transfer Protocol,文件传输协议)、WEBSERVER等方式,实现单片机在线升级的方法及装置,能够实现现有Rabbit单片机的在线升级。采用本发明的技术方
案,避免了断电升级对正常业务的影响,节约了维护成本。
如图1所示,本发明实施例一种单片机在线升级的方法,技术方案可以包括
步骤101:升级服务器接收客户端发送的升级请求,并返回升级结果,所述升级请求 是客户端根据用户的应用程序升级命令生成的;
步骤201:客户端根据匹配条件对所述升级结果进行判断,将满足匹配条件的升级结 果保存,并运行,以完成对所述单片机应用程序的在线升级。
可见,基于上述步骤,提出了一种针对Rabbit单片机在线升级的专用方法,通过匹配
条件对升级结果的判断,保证了升级结果的完整性和准确性,避免了源程序的损坏,保 证了单片机应用程序的正常升级和运行。
具体的,所述方法还可以包括
系统上电时,客户端启动定时器检测用户是否具有应用程序升级命令,当在所述定
时器超时前,检査出用户输入命令(telnet, Internet远程登陆服务的标准协议或命令行) 中具有所述升级命令时中,根据所述升级命令生成所述升级请求,并将所述升级请求发 送给升级服务器,所述升级请求中包括用户输入的服务器IP地址和应用程序中需要升级 的文件名;否则,退出升级流程。
由上述步骤可见,客户端在升级之前对用户升级命令的检测过程,保证了升级过程 的及时性和准确性。
具体的,步骤101的具体过程可以包括
升级服务器接收所述客户端发送的升级请求,并根据所述升级请求升级指定文件, 并将升级后的升级结果返回给所述客户端。 具体的,步骤201的具体过程可以包括
客户端将接收到的所述升级结果对应的保存在应用程序的相应位置; 根据所述匹配条件对所述升级结果进行判断,当所述升级结果满足所述匹配条件 时,提示用户立刻启动升级后的应用程序或者进行再次升级;当所述升级结果不满足所 述匹配条件时,提示用户重新升级;所述匹配条件包括应用程序的长度值以及校验和。 具体的,步骤201的具体过程还可以包括
当所述升级结果满足所述匹配条件时,将存储在FLASH中升级后的应用程序搬移到 RAM中,根据单片机的地址映射倒换功能运行所述升级后的应用程序,以完成单片机应用程序的在线升级。
基于上述如图l所示的方法,本发明实施例还提出一种单片机在线升级的装置,技术 方案可以包括
请求处理模块ll,用于升级服务器接收客户端发送的升级请求,并返回升级结果, 所述升级请求是客户端根据用户的应用程序升级命令生成的;
结果处理模块22,用于客户端根据匹配条件对所述请求处理模块返回的升级结果进 行判断,将满足匹配条件的升级结果保存,并运行,以完成对所述单片机应用程序的在 线升级。
可见,基于上述步骤,提出了一种针对Rabbit单片机在线升级的专用装置,通过结果 处理模块22中匹配条件对升级结果的判断,保证了升级结果的完整性和准确性,避免了 源程序的损坏,保证了单片机应用程序的正常升级和运行。
特别的,所述装置还可以包括
升级检测模块,用于在系统上电时,客户端启动定时器检测用户是否具有应用程序
升级命令,当在所述定时器超时前,检査出用户输入命令(telnet, Internet远程登陆服 务的标准协议或命令行)中具有所述升级命令时,根据所述升级命令生成所述升级请求, 并将所述升级请求发送给升级服务器,所述升级请求中包括用户输入的服务器IP地址和 应用程序中需要升级的文件名;否则,退出升级流程。 特别的,所述请求处理模块具体可以包括
请求接收单元,用于升级服务器接收所述客户端发送的升级请求; 程序升级单元,用于根据所述请求接收单元接收到的升级请求升级指定文件,并将 升级后的升级结果返回给所述客户端。
特别的,所述结果处理模块具体可以包括
结果存储单元,用于客户端将接收到的所述升级结果对应的保存在应用程序的相应 位置;
判断执行单元,用于根据所述匹配条件对所述升级结果进行判断,当所述升级结果 满足所述匹配条件时,提示用户立刻启动升级后的应用程序或者进行再次升级;当所述 升级结果不满足所述匹配条件时,提示用户重新升级;所述匹配条件包括应用程序的长 度值以及校验和。
特别的,所述结果处理模块具体还可以包括程序运行单元,用于当所述升级结果满足所述匹配条件时,将存储在FLASH中升级后的 应用程序搬移到RAM中,根据单片机的地址映射倒换功能运行所述升级后的应用程序,
以完成单片机应用程序的在线升级。
鉴于本发明实施例所述的装置是基于上述图l所述的方法实施例获得的,其中具体涉
及的技术方案与图l所示的方法实施例相同,再次不作赘述。
为了更加清楚的说明如上所述一种单片机在线升级的方法的工作原理,下面结合实 施例进一步说明,但下述实施例一只是本发明的最佳实施方式,所有关于本发明所述技 术方案的变形和组合,均属于本发明的保护范围。
实施例一
结合Rabbit单片机程序的编译过程及运行过程,下面对本发明实施例所述一种单片机 在线升级的方法进行详细说明。
为了实现客户端在系统上电时,检测用户是否具有应用程序升级命令以及在应用程 序升级完毕后,实现对升级结果的正确性检测,在程序编写阶段可以通过增加实现这些 功能的源程序,具体过程如下
(1) 编写Rabbit单片机应用程序的bootloader.bin (单片机应用程序的启动程 序),该程序功能简单,能够提供基本的TFTP或FTP升级、版本检测功能,该程序被编译 在并行FLASH中运行,该程序提供基本的TFTP客户端功能、telnet或命令行接口,能够实 现单片机客户端在系统上电时,检测用户是否具有应用程序的升级命令。
(2) 编写Rabbit单片机的正式应用程序sv.bin,该程序在RAM调试模式下运行,包 含完整的用户所需要的功能。由于采用RAM模式编译的程序,只能在RAM里运行,所以 sv. bin虽然被保存在FLASH,但不能在FLASH中运行,最终sv. bin需要被复制到在RAM中运 行。
(3) 将编写的Rabbit单片机应用程序的bootloader. bin和正式应用程序sv. bin合并 生成all.bin,其中,将bootloader. bin放在合并文件all. bin的前端,Sv.bin放到 bootloader后面某个指定的位置,bootloader. bin与Sv. bin之间需要空出固定的一段空 间不使用,理由是用来保证all.bin中sv.bin总是从某个固定地址开始,这样在搬移和复 制程序时,就可以方便的找到起始点;具体过程如图3中的结构;
在sv.bin的前端增设head字段(如图3中所示的结构),所述head字段中包含sv.bin的4个字节的长度值以及4个字节的CRC32校验和,用于在启动升级程序后,客户端根据head 字段中的内容判断接收到的升级结果是否准确和完整,避免由于升级结果不完整导致源 程序的损坏。所述匹配条件是指升级服务器提供给用户的升级文件中包含的head字段,所 述head字段包括sv.bin的长度值和CRC32校验和。升级时,客户端接收服务器端发送的升 级文件,同时会获得升级文件的长度值,在接收完毕后,根据接收到升级文件的长度值 计算升级文件的CRC校验和,根据计算出的升级文件长度值和校验和与所述升级服务器 发送的升级文件中head字段进行比较、以判断接收到的升级文件是否完整和准确。
经过如上所述的配置过程,待单片机系统上电后,就可以实现本发明所述的技术方 案,具体流程结合图4所示。
步骤100:系统上电时,客户端启动定时器检测用户是否具有应用程序升级命令,当 在所述定时器超时前,检查出telnet(Internet远程登陆服务的标准协议)或命令行中具 有所述升级命令时,要求用户输入服务器IP地址和升级文件名,客户端根据所述升级命 令生成所述升级请求,并将所述升级请求发送给升级服务器,所述升级请求中包括用户 输入的服务器IP地址和应用程序中需要升级的文件名,执行步骤200;否则,在定时器超 时后进入步骤300;
步骤200:升级服务器接收客户端发送的升级请求,并根据所述升级请求升级指定文 件,返回升级结果,所述升级请求是客户端根据用户的应用程序升级命令生成的;客户 端将接收到的升级结果保存到sv.bin开始的地址(包括head字段);接收完成后,根据接 收的head字段中的长度值和CRC校验和,检测sv.bin的CRC32校验是否正确,如果不正 确,提示用户,要求重新升级;如果正确,提示用户是立刻启动新程序还是进行再次升 级,如果选择再次升级,将重复步骤200,否则进入步骤400;
步骤300:检测sv.bin的完整性,检测失败时提示给用户,要求用户重新升级,检测 成功后进入步骤400;
步骤400:将FLASH中的sv.bin (不包括head字段)搬移到RAM中O地址开始的位置; 执行Rabbit单片机提供的FLASH、 RAM地址映射倒换指令。由于通常Rabbit单片机在FLASH 中运行时,低512K是FLASH应用程序,高512K是RAM,所以在采用了地址映射倒换指令 后,低512K变成了R細,然后执行跳转指令后,从RAM的O地址开始运行升级后的应用程序 sv. bin。
FLASH、 MM地址映射倒换指令的原理图可以参见图5和图6。特别的说,如图7所示的流程图,在单片机应用程序成功升级后,可以不立刻运行升 级后的新应用程序,因为很多情况下用户更希望能在设备业务不繁忙的时间段(例如 深夜)使新程序生效。通常升级成功后的新应用程序只有在断电后才会被运行生效,所 以在设备正常运行的情况下业务,不必中断当前业务使升级后的应用程序立即生效。
本发明实施例所述单片机在线升级的方法,当SV.bin程序较小的时,可以在单片 FLASH上实现多份sv.bin程序并存,从而实现版本的回退和管理功能,具体参见图8所 示在FLASH中增加MBR (Master Boot Record,主引导记录)字段,该字段用来存储当 前sv.bin版本的使用情况,例如,当前使用svl作为正式运行的应用程序时,如果需要升 级,就将新的升级文件写到sv2处,同时在MBR处标记下回启动时将sv2作为正式程序启 动;扩展方式的优点是,增加了应用程序的备份,防止在升级过程中出现问题,造成对 原有应用程序的破坏。因为上述方法和单sv.bin程序技术方案基本相同,不再进行详细 的介绍。
采用本发明实施例所述的一种单片机在线升级的方法及装置,解决了目前现有技术 中采用断电升级导致单片机正常业务终端的问题,节约了设备的维护成本,提高了升级 效率,并且通过对升级结果的检验,保证了单片机应用程序的准确性和可靠性,避免了 由于升级失败导致源程序损坏的情况。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此, 任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替 换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的 保护范围为准。
权利要求
1、一种单片机在线升级的方法,其特征在于,包括升级服务器接收客户端发送的升级请求,并返回升级结果,所述升级请求是客户端根据用户的应用程序升级命令生成的;客户端根据匹配条件对所述升级结果进行判断,将满足匹配条件的升级结果保存,并运行,以完成对所述单片机应用程序的在线升级。
2、 根据权利要求l所述的方法,其特征在于,所述方法还包括-系统上电时,客户端启动定时器检测用户是否具有应用程序升级命令,当在所述定 时器超时前,检查出用户输入命令中具有所述升级命令时,根据所述升级命令生成所述 升级请求,并将所述升级请求发送给升级服务器,所述升级请求中包括用户输入的服务 器IP地址和应用程序中需要升级的文件名;否则,退出升级流程。
3、 根据权利要求l所述的方法,其特征在于,升级服务器接收客户端发送的升级请 求,并返回升级结果,具体过程包括升级服务器接收所述客户端发送的升级请求,并根据所述升级请求升级指定文件, 并将升级后的升级结果返回给所述客户端。
4、 根据权利要求l所述的方法,其特征在于,客户端根据匹配条件对所述升级结果 进行判断,将满足匹配条件的升级结果保存,具体过程包括客户端将接收到的所述升级结果对应的保存在应用程序的相应位置; 根据所述匹配条件对所述升级结果进行判断,当所述升级结果满足所述匹配条件 时,提示用户立刻启动升级后的应用程序或者进行再次升级;当所述升级结果不满足所 述匹配条件时,提示用户重新升级;所述匹配条件包括应用程序长度值以及校验和。
5、 根据权利要求4所述的方法,其特征在于,所述方法还包括当所述升级结果满足所述匹配条件时,将存储在FLASH中升级后的应用程序搬移到 RAM中,根据单片机的地址映射倒换功能运行所述升级后的应用程序,以完成单片机应 用程序的在线升级。
6、 一种单片机在线升级的装置,其特征在于,包括请求处理模块,用于升级服务器接收客户端发送的升级请求,并返回升级结果,所述升级请求是客户端根据用户的应用程序升级命令生成的;结果处理模块,用于客户端根据匹配条件对所述请求处理模块返回的升级结果进行 判断,将满足匹配条件的升级结果保存,并运行,以完成对所述单片机应用程序的在线 升级。
7、 根据权利要求6所述的装置,其特征在于,所述装置还包括升级检测模块,用于在系统上电时,客户端启动定时器检测用户是否具有应用程序 升级命令,当在所述定时器超时前,检查出用户输入命令中具有所述升级命令时,根据 所述升级命令生成所述升级请求,并将所述升级请求发送给升级服务器,所述升级请求 中包括用户输入的服务器IP地址和应用程序中需要升级的文件名;否则,退出升级流 程。
8、 根据权利要求6所述的装置,其特征在于,所述请求处理模块具体包括 请求接收单元,用于升级服务器接收所述客户端发送的升级请求;程序升级单元,用于根据所述请求接收单元接收到的升级请求升级指定文件,并将 升级后的升级结果返回给所述客户端。
9、 根据权利要求6所述的装置,其特征在于,所述结果处理模块具体包括 结果存储单元,用于客户端将接收到的所述升级结果对应的保存在应用程序的相应位置;判断执行单元,用于根据所述匹配条件对所述升级结果进行判断,当所述升级结果 满足所述匹配条件时,提示用户立刻启动升级后的应用程序或者进行再次升级;当所述 升级结果不满足所述匹配条件时,提示用户重新升级;所述匹配条件包括应用程序的长 度值以及校验和。
10、 根据权利要求9所述的装置,其特征在于,所述结果处理模块具体还包括 程序运行单元,用于当所述升级结果满足所述匹配条件时,将存储在FLASH中升级后的应用程序搬移到RAM中,根据单片机的地址映射倒换功能运行所述升级后的应用程 序,以完成单片机应用程序的在线升级。
全文摘要
本发明公开了一种单片机在线升级的方法,技术方案包括升级服务器接收客户端发送的升级请求,并返回升级结果,所述升级请求是客户端根据用户的应用程序升级命令生成的;客户端根据匹配条件对所述升级结果进行判断,将满足匹配条件的升级结果保存,并运行,以完成对所述单片机应用程序的在线升级。本发明还公开了一种单片机在线升级的装置,所述装置包括请求处理模块以及结果处理模块。采用本发明所述方法及装置实现了目前现有Rabbit单片机应用程序的在线升级,避免了由于现有技术采用断电升级导致正常业务中断造成的损失,保证了业务的正常运行。
文档编号G06F9/445GK101615128SQ20091008914
公开日2009年12月30日 申请日期2009年7月31日 优先权日2009年7月31日
发明者琪 张, 曹建涛 申请人:北京华环电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1