通过接着片外Flash实现单片机程序升级的方法

文档序号:6380922阅读:1070来源:国知局
专利名称:通过接着片外Flash实现单片机程序升级的方法
技术领域
本发明涉及专利分类号中G06计算;推算;计数G06F电数字数据处理G06F9/00程序控制装置,例如,控制器G06F9/06应用存入的程序的,即应用处理设备的内部存储来接收程序并保持程序的G06F9/44用于执行专门程序的装置G06F9/445程序的装载或启动。
背景技术
随着控制设备不断的复杂化、功能多样化使得系统不再可能只依靠一种控制程序来满足不同的用户,并且同一个用户的需求也不是一成不变。这就要求控制系统能够支持固件程序的升级功能,在售前或售后都能方便的更新固件程序。现有主流的升级方式有2种 一种是在BootLoader中包含与上位机的通讯代码,将上位机发送的固件实时写入到单片机的ROM中。这种方式实现比较因难,需要在Bootloader中实现与上位机的通讯,并且要保证固件程序数据的可靠传输,增加超时重发及校验等功能后Bootloader占用ROM也大,使得应用程序可用的ROM变小。另外一种是将单片机ROM分成三部分,Bootloader区、应用程序区I、应用程序区2,两个应用程序区每次升级时轮换使用,Bootloader决定启用哪个应用程序,这种方式法对单片机ROM利用率最低,通常都小于单片机ROM的一半。

发明内容
针对以上问题的提出,本发明提供了一种通过接着片外Flash实现单片机程序升级的方法,具有如下步骤S100.选定ROM至少划分成存储引导程序的Bootloader区和装载固件程序的应用程序区的单片机;S200.选定一存储容量不小于所述单片机ROM中应用程序区容量的片外Flash,将该片外Flash与单片机连接;S300.向所述单片机发送至少包含升级固件程序大小的升级命令,单片机根据所述升级固件程序大小,在所述片外Flash应用程序缓冲区擦除出相应的空间;S400.目标单片机接收固件程序,将固件程序写入片外Flash应用程序缓冲区;S500.重启单片机,单片机将所述片外Flash应用程序缓冲区的升级固件程序复制到单片机ROM中的应用程序区,替换原有的固件程序,完成单片机程序升级。所述步骤S400中还具有如下步骤S410.待所述单片机将固件程序完全写入片外Flash应用程序缓冲区后,校验所述写入的固件程序,若校验无误,在片外Flash中开辟一个区域,写入升级标志,该标志至少包含固件程序长度及存储校验信息。所述步骤S500具体包括步骤S510.重启单片机,运行所述Bootloader区中的引导程序,检测所述片外Flash是否有升级标志;S520.若经检测片外Flash有升级标志,单片机将所述片外Flash中存入的固件程序,写入自身ROM中的应用程序区,完成固件升级;S530.若经检测片外Flash没有升级标志,单片机ROM中Bootloader区中的引导程序,直接引导单片机ROM中应用程序区中的固件程序运行,不进行升级。所述步骤S520具体包含S521.单片机检测到片外Flash有升级标志后,单片机的Bootloader区中的引导程序检测片外Flash应用程序缓冲区中存入的固件程序校验是否正确;
S522.若经校验,所述应用程序缓冲区中的固件程序正确,单片机将固件程序写入自身ROM中的应用程序区,清除升级标志后重启单片机,完成升级;S523.若经校验,所述应用程序缓冲区中的固件程序不正确,单片机不进行升级,同时提示错误;所述Bootloader区中的引导程序引导单片机ROM中原固件程序运行。由于采用了上述技术方案,本发明提供的通过接着片外Flash实现单片机程序升级的方法,通过在片外Flash中安装固件升级程序、设立升级标识以及引入多次启动校验,在不大量占用单片机ROM的情况下,使得ROM的利用率大幅度提高,而且经过了多次启动校验,可以有效地避免引升级固件程序损坏或不完整,而造成单片机无法启动的情况发生。


为了更清楚的说明本发明的实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I为本发明单片机程序升级系统示意图;图2为本发明单片机片内ROM与片外FLASH芯片功能区域划分示意图;图3为本发明的流程图。
具体实施例方式为使本发明的实施例的目的、技术方案和优点更加清楚,下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚完整的描述一种通过接着片外Flash实现单片机程序升级的方法,包括如下步骤S100.选取一单片机作为升级目标单片机,在该单片机的ROM中,划分出安装引导程序的Bootloader区和安装固件程序的应用程序区,升级的目的就是将应用程序区中的原有固件程序更换为其它固件程序。在本发明中,采用Ti的LM3S8938,其有256K ByteR0M、64K Byte RAM,支持以太网、CAN、串口等通讯端口,应用程序中采用了 TCP通讯,固件程序升级端口也使用LAN。BootLoader区使用4K Byte即可,其余252K Byte均做为应用程序区。S200.选定一片外Flash,只要要求该片外Flash的容量要大于步骤S 100中单片机ROM下应用程序区的容量。同时在片外Flash中划分出一个不小于单片机ROM下应用程序区容量的应用程序缓冲区、一个升级标志区和多个用户数据区。所述分区可实现划分,减少单片机的工作量,也可以在升级过程中,交由单片机划分。将单片机通过总线与片外Flash以及上位机相连接,可以选用多种的接口,如LAN、RS232、RS422、RS485和CAN等接口。单片机的片外FLASH可以使用小体积、大容量、低成本的SST25VF040,其有4M Bit(512KByte)的存储空间,升级标志区划分为4K Byte,应用程序缓存区划分为252Κ Byte,其余256K Byte可用于用户数据区。S300.上位机通过总线向所述单片机发送升级命令,该命令至少包含升级固件程序大小。单片机在接收到命令后,首先根据所述升级固件程序大小,在所述片外Flash应用程序缓冲区擦除出相应的空间。若实现没有在片外Flash中划分出应用程序缓冲区,单片机也可在片外Flash中开辟出一个与固件程序大小相符合的区域,作为应用程序缓冲区。S400.完成应用程序缓冲区的开辟后,目标单片机接收上位机传送的固件程序,将固件程序首先写入片外Flash应用程序缓冲区。在本发明中的固件程序是分包传送的,每个包可以传送IK字节的数据。
S500.带固件程序完全写入所述片外Flash应用程序缓冲区后,重启单片机,单片机将所述片外Flash应用程序缓冲区的升级固件程序复制到单片机ROM中的应用程序区,替换原有的固件程序,完成单片机程序升级。考虑到,在固件程序由上位机经单片机写入所述片外Flash的过程中,可能会因为多种原因,造成固件程序传输错误或不完整;所传送的固件程序本身也可能不适用于单片机,从而造成升级的失败。优选的,在所述步骤S400中还包括步骤S410 当所述单片机将固件程序完全写入片外Flash应用程序缓冲区后,单片机会对写入的固件升级程序进行校验。如果经校验写入片外Flash应用程序缓冲区的升级固件程序正确无误,则单片机会在片外Flash中开辟一个区域,写入升级标志,该升级标志包含固件程序的长度及存储了与升级固件程序相对应的校验信息。进一步的,步骤S500包括如下步骤S510.重启单片机,单片机运行所述Bootloader区中的引导程序,引导程序检测所述片外Flash是否有升级标志。S520.如果经检测片外Flash有升级标志,单片机将所述片外Flash中存入的固件程序,写入自身ROM中的应用程序区,替换应用程序区中记载的原有的固件程序,完成固件升级。S530.若经检测片外Flash没有升级标志,单片机ROM中Bootloader区中的引导程序会直接引导单片机ROM中应用程序区中的固件程序运行,不进行升级。有效的避免了单片机更新为新的固件程序后,因为固件程序的不完整、错误或与单片机不匹配等问题,造成单片机不能工作的问题。进一步的,考虑到在经过步骤S410的检验后,写入片外Flash升级程序缓冲区中的升级固件程序仍可能出现错误。所述步骤S520具体包括步骤S521.单片机检测到片外Flash有升级标志后,单片机的Bootloader区中的引导程序会再一次的检测片外Flash应用程序缓冲区中存入的固件程序校验是否正确。S522.若经过引导程序校验,所述应用程序缓冲区中的固件程序正确,则单片机将固件程序写入自身ROM中的应用程序区,替换原有的固件程序,同时擦除片外Flash的升级标志,重启单片机,完成固件程序的升级。S523.若经过引导程序校验,所述应用程序缓冲区中的固件程序不正确,则单片机不进行升级,同时向上位机提示错误信息。所述Bootloader区中的引导程序直接引导单片机ROM中原固件程序运行。这样不会导致单片机因为更新失败而造成丢失应用程序,进而导致无法启运的情况。 以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
权利要求
1.一种通过接着片外Flash实现单片机程序升级的方法,具有如下步骤 S100.选定ROM至少划分成存储引导程序的Bootloader区和装载固件程序的应用程序区的单片机; S200.选定一存储容量不小于所述单片机ROM中应用程序区容量的片外Flash,将该片外Flash与单片机连接; S300.向所述单片机发送至少包含升级固件程序大小的升级命令,单片机根据所述升级固件程序大小,在所述片外Flash应用程序缓冲区擦除出相应的空间; S400.目标单片机接收固件程序,将固件程序写入片外Flash应用程序缓冲区; S500.重启单片机,单片机将所述片外Flash应用程序缓冲区的升级固件程序复制到单片机ROM中的应用程序区,替换原有的固件程序,完成单片机程序升级。
2.根据权利要求I所述的一种通过接着片外FLASH实现单片机程序升级的方法,其特征还在于所述步骤S400中还具有如下步骤 S410.待所述单片机将固件程序完全写入片外Flash应用程序缓冲区后,校验所述写入的固件程序,若校验无误,在片外Flash中开辟一个区域,写入升级标志,该标志至少包含固件程序长度及存储校验信息。
3.根据权利要求2所述的一种通过接着片外FLASH实现单片机程序升级的方法,其特征还在于所述步骤S500具体包括步骤 S510.重启单片机,运行所述Bootloader区中的引导程序,检测所述片外Flash是否有升级标志; 5520.若经检测片外Flash有升级标志,单片机将所述片外Flash中存入的固件程序,写入自身ROM中的应用程序区,完成固件升级; S530.若经检测片外Flash没有升级标志,单片机ROM中Bootloader区中的引导程序,直接引导单片机ROM中应用程序区中的固件程序运行,不进行升级。
4.根据权利要求3所述的一种通过接着片外FLASH实现单片机程序升级的方法,其特征还在于在所述步骤S520具体包含 · 5521.单片机检测到片外Flash有升级标志后,单片机的Bootloader区中的引导程序检测片外Flash应用程序缓冲区中存入的固件程序校验是否正确; ·5522.若经校验,所述应用程序缓冲区中的固件程序正确,单片机将固件程序写入自身ROM中的应用程序区,清除升级标志后重启单片机,完成升级; · 5523.若经校验,所述应用程序缓冲区中的固件程序不正确,单片机不进行升级,同时提示错误;所述Bootloader区中的引导程序引导单片机ROM中原固件程序运行。
全文摘要
本发明公开了一种通过接着片外Flash实现单片机程序升级的方法,具有如下步骤S100.选定ROM至少划分成Bootloader区和应用程序区的单片机;S200.选定一片外Flash,将该片外Flash与单片机连接;S300.向所述单片机发送至少包含升级固件程序大小的升级命令,单片机根据所述升级固件程序大小,在所述片外Flash应用程序缓冲区擦除出相应的空间;S400.目标单片机接收固件程序,将固件程序写入片外Flash应用程序缓冲区;通过在片外Flash中安装固件升级程序、设立升级标识以及引入多次启动校验,在不大量占用单片机ROM的情况下,使得ROM的利用率大幅度提高,而且经过了多次启动校验,可以有效地避免引升级固件程序损坏或不完整,而造成单片机无法启动的情况发生。
文档编号G06F9/445GK102945174SQ20121044574
公开日2013年2月27日 申请日期2012年11月8日 优先权日2012年11月8日
发明者程鹏, 刘振兴, 郭彬 申请人:大连捷成实业发展有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1