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

技术编号:8366711 阅读:221 留言:0更新日期:2013-02-28 05:01
本发明专利技术公开了一种通过接着片外Flash实现单片机程序升级的方法,具有如下步骤:S100.选定ROM至少划分成Bootloader区和应用程序区的单片机;S200.选定一片外Flash,将该片外Flash与单片机连接;S300.向所述单片机发送至少包含升级固件程序大小的升级命令,单片机根据所述升级固件程序大小,在所述片外Flash应用程序缓冲区擦除出相应的空间;S400.目标单片机接收固件程序,将固件程序写入片外Flash应用程序缓冲区;通过在片外Flash中安装固件升级程序、设立升级标识以及引入多次启动校验,在不大量占用单片机ROM的情况下,使得ROM的利用率大幅度提高,而且经过了多次启动校验,可以有效地避免引升级固件程序损坏或不完整,而造成单片机无法启动的情况发生。

【技术实现步骤摘要】

本专利技术涉及专利分类号中G06计算;推算;计数G06F电数字数据处理G06F9/00程序控制装置,例如,控制器G06F9/06应用存入的程序的,即应用处理设备的内部存储来接收程序并保持程序的G06F9/44用于执行专门程序的装置G06F9/445程序的装载或启动。
技术介绍
随着控制设备不断的复杂化、功能多样化使得系统不再可能只依靠一种控制程序来满足不同的用户,并且同一个用户的需求也不是一成不变。这就要求控制系统能够支持固件程序的升级功能,在售前或售后都能方便的更新固件程序。现有主流的升级方式有2种 一种是在BootLoader中包含与上位机的通讯代码,将上位机发送的固件实时写入到单片机的ROM中。这种方式实现比较因难,需要在Bootloader中实现与上位机的通讯,并且要保证固件程序数据的可靠传输,增加超时重发及校验等功能后Bootloader占用ROM也大,使得应用程序可用的ROM变小。另外一种是将单片机ROM分成三部分,Bootloader区、应用程序区I、应用程序区2,两个应用程序区每次升级时轮换使用,Bootloader决定启用哪个应用程序,这种方式法对单片机ROM利用率最低,通常都小于单片机ROM的一半。
技术实现思路
针对以上问题的提出,本专利技术提供了一种,具有如下步骤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中安装固件升级程序、设立升级标识以及引入多次启动校验,在不大量占用单片机ROM的情况下,使得ROM的利用率大幅度提高,而且经过了多次启动校验,可以有效地避免引升级固件程序损坏或不完整,而造成单片机无法启动的情况发生。附图说明为了更清楚的说明本专利技术的实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I为本专利技术单片机程序升级系统示意图;图2为本专利技术单片机片内ROM与片外FLASH芯片功能区域划分示意图;图3为本专利技术的流程图。具体实施例方式为使本专利技术的实施例的目的、技术方案和优点更加清楚,下面结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚完整的描述一种,包括如下步骤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中开辟一个区域,写入升级标志,该升级标志包含固件程序的长度及存储了与升级固件程序相对本文档来自技高网...

【技术保护点】
一种通过接着片外Flash实现单片机程序升级的方法,具有如下步骤:S100.选定ROM至少划分成存储引导程序的Bootloader区和装载固件程序的应用程序区的单片机;S200.选定一存储容量不小于所述单片机ROM中应用程序区容量的片外Flash,将该片外Flash与单片机连接;S300.向所述单片机发送至少包含升级固件程序大小的升级命令,单片机根据所述升级固件程序大小,在所述片外Flash应用程序缓冲区擦除出相应的空间;S400.目标单片机接收固件程序,将固件程序写入片外Flash应用程序缓冲区;S500.重启单片机,单片机将所述片外Flash应用程序缓冲区的升级固件程序复制到单片机ROM中的应用程序区,替换原有的固件程序,完成单片机程序升级。

【技术特征摘要】

【专利技术属性】
技术研发人员:程鹏刘振兴郭彬
申请(专利权)人:大连捷成实业发展有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1