CN103761122A - 一种芯片固件的升级方法和系统 - Google Patents
一种芯片固件的升级方法和系统 Download PDFInfo
- Publication number
- CN103761122A CN103761122A CN201310754001.0A CN201310754001A CN103761122A CN 103761122 A CN103761122 A CN 103761122A CN 201310754001 A CN201310754001 A CN 201310754001A CN 103761122 A CN103761122 A CN 103761122A
- Authority
- CN
- China
- Prior art keywords
- firmware
- upgrading
- firmware upgrade
- packet
- chip
- 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
Images
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1433—Saving, restoring, recovering or retrying at system level during software upgrading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种芯片固件的升级方法和升级系统,通过在进入固件升级过程中将升级失败标志位置位以及根据所述固件升级数据进行所述固件升级,若升级成功,则清空所述升级失败标志位,开始运行升级后的固件;如果升级失败,则保留所述升级失败标志位的置位状态并结束本次升级。据此,当发生断电、数据传输错误等状况导致固件升级失败后,基于所述升级失败标志位的作用,芯片重启后不运行应用程序,进而充分避免了固件程序跑飞的问题。
Description
技术领域
本发明属于芯片领域,具体涉及一种芯片固件的升级方法和系统。
背景技术
消费类电子产品中,芯片作为控制芯片被广泛利用。在实际使用过程中,运行在芯片中的程序需要最终用户可以方便地升级,升级的方法大都通过固件升级方法(也即DFU,其英文全名为Device Firmware Upgrade)来实现。随着消费类电子产品的功能越来越强大,传统的8位/16位芯片日益无法满足应用的需求,因此,32位的ARM-Cortex-M0芯片也越来越广泛地被使用。各大芯片制造商也纷纷推出自己的M0芯片。且,USB接口是当前应用非常广泛的接口,其具有速度快、稳定性高、通用性好等诸多优点。
但是,对于基于USB通信的ARM-Cortex-M0芯片,如果采用上述的传统固件升级方法,在固件升级过程中,不可避免的发生断电、数据传输错误等状况,进而导致估计固件升级失败,并进一步导致了,ARM-Cortex-M0芯片重启后直接启动读取不完整或者错误数据而发生固件程序跑飞。
基于此,本发明提供了一种芯片固件的升级方法以系统。
发明内容
本发明的目的在于提供一种芯片固件的升级方法,用于解决上述的固件升级失败所导致的固件程序跑飞的问题。
本发明的目的还在于提供一种基于芯片固件的升级系统,用于防止芯片固件的升级失败而导致重启后固件程序跑飞。
基于上述的第一目的,本发明提供了一种芯片固件的升级方法,该方法包括:
步骤1,判断是否要进行一芯片固件的升级,是则执行步骤2,否则正常运行所述固件;
步骤2,获取固件升级数据,并将升级失败标志位置位;
步骤3,根据所述固件升级数据进行所述固件升级,若升级成功,则清空所述升级失败标志位,开始运行升级后的固件;如果升级失败,则保留所述升级失败标志位的置位状态并结束本次升级。
可选的,所述的方法还包括:设置升级组合按键,用于在按照步骤1至3正确执行所述固件的升级后出现异常情况而导致所述固件的升级失败后,触发升级组合按键,重新进行固件升级。
可选的,步骤1中,通过运行中的所述芯片固件实时监控其升级标志位是否被置位来判断是否要进行升级,若所述升级标志位被置位,则开始升级过程;和/或,
步骤2中,从与芯片通信的上位机或者因特网上获取固件升级数据,获取的固件升级数据以及升级失败标志位均保存在非易失性存储器的程序管理区;所述固件运行在所述非易失性存储器的用户程序存储区;
其中,所述升级标志位通过所述与芯片通信的上位机或者因特网或者所述升级组合按键进行置位。
可选的,步骤3中,根据所述固件升级数据进行所述固件升级,包括:
按顺序从所述程序管理区中读取所述固件升级数据的数据包并写入所述用户程序存储区中,读取的每个数据包携带相应的单校验码,所述固件升级数据携带一总校验码;
每完成一个数据包的读取和写入,读取所述用户程序存储区并生成一个单数据包校验码;比对所生成的单数据包校验码与所述数据包所携带的单校验码,如果不相等则重新进行该数据包的读取和写入,如果相等则进行下一个数据包的读取和写入;
完成全部所述数据包的读取和写入后,读取所述用户程序存储区并生成一个总数据包校验码;比对所生成的总数据包校验码与所述固件升级数据所携带的总校验码,如果不相等则重新根据所述固件升级数据进行所述固件升级。
可选的,所述的方法还包括:
保留所述升级失败标志位的置位状态并结束本次升级之后,更新所述固件的固件升级数据,以重新发起所述固件的升级,循环步骤1至3进入所述固件的下次升级。
本发明还提供一种芯片固件升级系统,包括:
判断单元,用于判断是否要进行一芯片固件的升级,并在确定要进行所述芯片固件的升级时启动所述芯片固件的升级过程;
固件升级数据加载单元,用于获取固件升级数据,并将升级失败标志位置位;以及
固件升级单元,用于根据所述固件升级数据进行所述固件升级,若升级成功,则清空所述升级失败标志位,开始运行升级后的固件;如果升级失败,则保留所述升级失败标志位的置位状态并结束本次升级。
可选的,所述的系统还包括:升级组合按键,用于在判断单元、固件升级数据加载单元以及固件升级单元正确执行所述固件的升级后出现异常情况而导致所述固件的升级失败后,触发而使得判断单元、固件升级数据加载单元以及固件升级单元重新对所述芯片固件进行固件升级。
可选的,所述系统还包括:非易失性存储器;
所述固件运行在所述非易失性存储器的用户程序存储区,所述判断单元通过运行中的所述芯片固件实时监控其升级标志位是否被置位来判断是否要进行升级,若所述升级标志位被置位,则开始升级过程;和/或,
获取的固件升级数据以及升级失败标志位均保存在非易失性存储器的程序管理区,所述固件升级数据加载单元从与芯片通信的上位机或者因特网上获取固件升级数据;
其中,所述升级标志位通过所述与芯片通信的上位机或者因特网或者所述升级组合按键进行置位。
可选的,所述固件升级单元还用于:
按顺序从所述程序管理区中读取所述固件升级数据的数据包并写入所述用户程序存储区中,读取的每个数据包携带相应的单校验码,所述固件升级数据携带一总校验码;
每完成一个数据包的读取和写入,读取所述用户程序存储区并生成一个单数据包校验码;比对所生成的单数据包校验码与所述数据包所携带的单校验码,如果不相等则重新进行该数据包的读取和写入,如果相等则进行下一个数据包的读取和写入;
完成全部所述数据包的读取和写入后,读取所述用户程序存储区并生成一个总数据包校验码;比对所生成的总数据包校验码与所述固件升级数据所携带的总校验码,如果不相等则重新根据所述固件升级数据进行所述固件升级。
可选的,所述系统还包括位于固件升级数据发布端的刷机单元,用于在所述固件升级单元保留所述升级失败标志位的置位状态并结束本次升级之后,更新所述固件的固件升级数据,以重新发起所述固件的升级,进入所述固件的下次升级。
本发明所提供的芯片固件的升级方法和升级系统,通过在进入固件升级过程中将升级失败标志位置位以及根据所述固件升级数据进行所述固件升级,若升级成功,则清空所述升级失败标志位,开始运行升级后的固件;如果升级失败,则保留所述升级失败标志位的置位状态并结束本次升级。据此,当发生断电、数据传输错误等状况导致固件升级失败后,基于所述升级失败标志位的作用,芯片重启后不运行应用程序,进而充分避免了固件程序跑飞的问题。
附图说明
图1为本发明的芯片固件的升级方法的实施例的流程图;
图2是本发明的芯片固件的升级系统的架构图;
图3为本发明的芯片固件的升级系统的应用实施例图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
方法的实施例
图1为本发明芯片的固件升级方法的实施例的流程图,图1中的芯片的固件升级方法,其能够充分避免因固件升级失败而导致固件程序跑飞的问题,因此,能够有效的适用于基于USB通信的芯片,尤其是基于USB通信的ARM-Cortex-M0芯片。
该方法包括如下步骤:
步骤1,判断是否要进行一芯片固件的升级,是则执行步骤2,否则正常运行所述固件;
步骤2,获取固件升级数据,并将升级失败标志位(Dirty Flag)置位;
步骤3,根据所述固件升级数据进行所述固件升级,若升级成功,则清空所述升级失败标志位,开始运行升级后的固件;如果升级失败,则保留所述升级失败标志位的置位状态并结束本次升级。
所述的方法还包括:步骤4,设置升级组合按键,用于在按照步骤1至3正确执行所述固件的升级后出现异常情况而导致所述固件的升级失败后,触发升级组合按键,重新进行固件升级。设置升级组合按键为了防止出现因其他各种异常原因而导致固件程序被篡改等而无法正常进入DFU的情况(即所述固件的升级失败),升级组合按键启动升级的机制保证了只要能够获取正确的固件升级数据以及正确的将升级失败标志位置位就可以对固件进行正常升级操作,可实现强制开启固件升级模式进行升级。
本实施例的步骤1中,通过运行中的所述芯片固件实时监控其升级标志位(DFU Flag)是否被置位来判断是否要进行升级,若所述升级标志位被置位(即被有效置位,例如预设的有效置位为1,则所述升级标志位被置位为1),则开始升级过程。即在芯片正常运行程序时,接收到固件更新指令,将所述升级标志位DFU Flag置位,未接收到固件更新指令时,所述升级标志位DFUFlag为清空状态。
本实施例的芯片(MCU)具有通过Uart/USB等与上位机通信的功能,例如USB通信接口。因此在步骤2中,从与芯片通信的上位机或者因特网上获取固件升级数据,获取的固件升级数据以及升级失败标志位均保存在非易失性存储器(例如是FLASH)的程序管理区LDROM;所述固件运行在所述非易失性存储器的用户程序存储区APROM;APROM和LDROM是两个逻辑独立的用来存储程序的ROM区;本发明的升级方法可以设置从上述两个区域的任何一个启动,并方便的通过软件进行配置和切换,包括:从LDROM启动并可以擦写/烧写APROM区域(ISP功能)来实现DFU功能;以及从APROM启动来实现Application(固件程序运行)的功能。
本实施例中,所述升级标志位(DFU FLAG)通过所述与芯片通信的上位机或者因特网或者所述升级组合按键进行置位。所述非易失性存储器具有断电保护功能,升级标志位(DFU Flag)和升级失败标志位(Dirty Flag)的信息都保存在非易失性存储器的独立的DataFlash区域,实现掉电不丢失数据。
步骤2中获取的固件升级数据分成至少一个数据包,升级时依次被读取和写入。由此,本实施例的步骤3中,根据所述固件升级数据进行所述固件升级,包括:
按顺序从所述程序管理区中读取所述固件升级数据的数据包并写入所述用户程序存储区中,读取的每个数据包携带相应的单校验码(所述校验码即为checksum1,所述固件升级数据携带一总校验码(所述校验码即为checksum2;
每完成一个数据包的读取和写入,读取所述用户程序存储区并生成一个单数据包校验码;比对所生成的单数据包校验码与所述数据包所携带的单校验码,如果不相等则重新进行该数据包的读取和写入,如果相等则进行下一个数据包的读取和写入,该步骤对每一个数据包的读取和写入的准确性进行监测,用于确保所读取和写入的每一个数据包的准确性;
完成全部所述数据包的读取和写入后,读取所述用户程序存储区并生成一个总数据包校验码;比对所生成的总数据包校验码与所述固件升级数据所携带的总校验码,如果不相等则重新根据所述固件升级数据进行所述固件升级,该步骤用于进一步确定,全包固件升级数据的整体校核,以确保固件升级的准确性。
在本发明的一个实施例中,根据所述固件升级数据进行所述固件升级包括:为每一个数据包的读取和写入设置一个限定时间;如果超过所述限定时间,则重新进行该数据包的读取和写入。该步骤主要用于防止因某个数据包的读取或者写入发生意外而导致固件升级中断,一旦某个数据包的读取或者写入发生意外并超过所述限定时间,则该数据包被重新读取和写入。
在本发明的另一个实施例中,所根据所述固件升级数据进行所述固件升级还进一步包括:每完成一个数据包的读取和写入,将该数据包中的次序码加1;获取对应于加1后的所述次序码的数据包,并写入到用户程序存储区中。所述次序码例如可以是数据包中的Package-No。该步骤主要用于确保所述至少一个数据包按照次序逐个被读取和写入,以及用于确保断电重启后,能够直接读取固件升级数据的读取和写入的进度,实现断点续传。
该步骤在具体实施时,例如可以是:当完成一个数据包的读取和写入后,将该数据包中的次序码加1,即次序码由1变为2;上位机如果没有接收到次序码为2的反馈信息,则重新发送次序码为1的数据包,直至上位机接收到次序码为2的反馈信息后,选择对应于次序码2的数据包进行发送。该实施方式中,各数据包的次序码编排为1开始的连续自然数。
该步骤在具体实施时,例如还可以是:当完成一个数据包的读取和写入后,将该数据包中的次序码加1,即次序码由2变为3;上位机如果没有接收到次序码为3的反馈信息,则重新发送次序码为2的数据包,直至上位机接收到次序码为3的反馈信息后,选择对应于次序码4的数据包进行发送。该实施方式中,各数据包的次序码编排为2开始的连续偶数。
本实施例中,在步骤3的保留所述升级失败标志位的置位状态并结束本次升级之后,上位机更新所述固件的固件升级数据,以重新发出所述固件的升级的指令,循环步骤1至3进入所述固件的下次升级。
本发明所述的芯片(MCU)可以是8位/16位的传统芯片,也可以是32位的ARM-Cortex-M0芯片,该实施例以32位的ARM-Cortex-M0芯片进行描述。为实现通过本发明的固件升级方法对所述芯片固件进行升级,所以适用于本发明的芯片至少具有如下特点:
1、至少具有APROM和LDROM两个逻辑独立的ROM区,分别用于存储程序。
2、能够设置从APROM和LDROM的任何一个启动,并能够通过软件进行配置和切换。例如,从LDROM启动实现DFU功能;从APROM启动来实现Application(运行程序)的功能。
5、具有至少一个独立的DataFlash区域,所述DataFlash区域具有断电保护功能,掉电不丢失数据,用于存储升级失败标志位(Dirty Flag)。
6、具有ISP功能,也即程序烧录功能,用于实现通过LDROM擦写/烧写APROM区域。
7、具有Uart/USB等与上位机通信的功能,通过USB通信方式实现更快速、更稳定传输固件升级数据。
芯片固件升级系统的实施例
图2是本发明芯片固件升级系统的实施例的架构图。该实施例所公开的芯片固件升级系统是基于实施例一所描述的固件升级方法的系统,实施例一所描述的技术方案也属于该实施例,实施例一已经公开的技术方案不再重复描述。
本实施例中,升级标志的置位通过上位机1和升级组合按键205。本实施例的芯片固件升级系统2包括:
判断单元201,用于判断是否要进行一芯片固件的升级,并在确定要进行所述芯片固件的升级时启动所述芯片固件的升级过程;
固件升级数据加载单元202,用于获取固件升级数据,并将升级失败标志位置位;以及
固件升级单元203,用于根据所述固件升级数据进行所述固件升级,若升级成功,则清空所述升级失败标志位,开始运行升级后的固件;如果升级失败,则保留所述升级失败标志位的置位状态并结束本次升级。
本实施例中,所述的系统还包括:升级组合按键204,用于在判断单元201、固件升级数据加载单元202以及固件升级单元203正确执行所述固件的升级后出现异常情况而导致所述固件的升级失败后,触发而使得判断单元201、固件升级数据加载单元202以及固件升级单元203重新对所述芯片固件进行固件升级。
本实施例中,所述系统还包括:非易失性存储器205,所述固件运行在所述非易失性存储器的用户程序存储区,获取的固件升级数据以及升级失败标志位均保存在非易失性存储器的程序管理区;所述判断单元201通过运行中的所述芯片固件实时监控其升级标志位是否被置位来判断是否要进行升级,若所述升级标志位被置位,则开始升级过程;所述固件升级数据加载单元202从与芯片通信的上位机或者因特网上获取固件升级数据;其中,所述升级标志位通过所述与芯片通信的上位机或者因特网或者所述升级组合按键进行置位。
因此,本实施例中,所述固件升级单元还用于:
按顺序从所述程序管理区中读取所述固件升级数据的数据包并写入所述用户程序存储区中,读取的每个数据包携带相应的单校验码,所述固件升级数据携带一总校验码;
每完成一个数据包的读取和写入,读取所述用户程序存储区并生成一个单数据包校验码;比对所生成的单数据包校验码与所述数据包所携带的单校验码,如果不相等则重新进行该数据包的读取和写入,如果相等则进行下一个数据包的读取和写入;
完成全部所述数据包的读取和写入后,读取所述用户程序存储区并生成一个总数据包校验码;比对所生成的总数据包校验码与所述固件升级数据所携带的总校验码,如果不相等则重新根据所述固件升级数据进行所述固件升级。
本实施例中,所述系统还包括位于固件升级数据发布端的刷机单元206,用于在所述固件升级单元203保留所述升级失败标志位的置位状态并结束本次升级之后,更新所述固件的固件升级数据,以重新发起所述固件的升级,进入所述固件的下次升级。
芯片固件的升级系统的应用实施例
图3是本发明芯片的固件升级方法的应用实施例的流程图,该实施例是实施例一所描述的方法的一个具体应用,实施例一所描述的技术方案也属于该实施例,实施例一已经公开的技术方案不再重复描述。该实施例中,升级标志位是通过与芯片通信的上位机实现的。
为使图中的流程更清晰,图中未标示各步骤的序号。
该应用实施例的方法包括:
步骤S301,系统上电:启动芯片的非易失性存储器205,即LDROM。
步骤S302,判断单元201确定是否要进行升级:是则执行步骤S310,否则执行步骤S303。与实施例一描述的技术方案相同,该判断依据包括查看升级标志位是否被置位,以及判断升级组合按键是否被触发。
步骤S303,正常运行固件:即发出运行固件的指令至APROM。
步骤S304,运行固件:非易失性存储器205即APROM收到指令后,运行固件。
步骤S305,清空DFU Flag:即清空所述升级标志位,确保在未接收到固件更新指令时,所述升级标志位DFU Flag为清空状态。
步骤S306,固件3正常工作:即循环运行固件。
步骤S307,是否有升级命令:即监测接收到固件更新指令,是则执行步骤S308,否则执行步骤S306。
步骤S308,DFU Flag置位:即被有效置位,例如预设的有效置位为1,则所述升级标志位被置位为1。
步骤S309,进入升级过程:即开始进行固件升级。
步骤S310,与上位机通信:即通过USB通信的HID协议,与上位机1进行对话。
步骤S311,固件升级数据加载单元202对Dirty Flag置位:所述Dirty Flag存储在非易失性存储器205中,即存储在LDROM中,防止断电丢失数据。
步骤S312,固件升级数据加载单元202获取固件升级数据:即,通过HID协议与上位机1进行升级数据的传输,获取升级数据。
步骤S313,固件升级单元202将固件升级数据写入APROM:通过芯片的ISP功能将固件升级数据写入到APROM中,进行固件升级。
步骤S314,固件升级单元203校验写入是否正确:与实施例一所描述的技术方案相同,通过单校验码和总校验码分别比对来确定写入的固件是否正确,是则执行步骤S315,否则执行步骤S316。
步骤S315,固件升级单元203清空Dirty Flag:即固件升级成功,执行步骤S303。
步骤S316,固件升级失败:退出本次升级,不执行步骤S303,等待重新升级。
上述应用实施例中有以下几个特点
1、DFU Flag:
该标志位位于DataFlash中;该标志位由APROM程序置位/清空,LDROM程序读,并判断状态;
2、如何进入DFU:
APROM程序启动时,将DFU Flag清空,并正常运行Application;上位机通过发送USB命令来控制M0芯片是否进入DFU;M0芯片收到该命令后,将DFU Flag置位,并重启进入DFU状态;
3、DFU判断:
M0芯片总是从LDROM启动,通过读取DFU Flag以及其他判断条件,确定是否进入DFU;如果不满足DFU的条件,直接重启进入APROM,M0芯片正常启动Application;
4、DFU过程:
同步:在发送APROM数据之前,上位机会发若干次同步命令给芯片;得到芯片的回复之后。进入数据传输阶段;
数据传输:通过HID协议,上位机将APROM的数据发送给芯片;芯片收到数据后,更新相应的APROM区域;并完成校验等操作。
5、DFU结束:
上位机计算DFU文件的checksum并发送给芯片;芯片收到后,计算APROM有效区域的checksum;如果两者相等,芯片重启进入APROM,M0芯片正常启动,运行Application;否则,通过Led等外围设备指示DFU失败;这里的checksum包括每个数据包的单校验码(所述校验码即为checksum1和总数据的总校验码checksum2。
6、异常处理:
1)HID数据包错误以及APROM写错误:
芯片收到每一个数据包之后,烧写相应位置的APROM;写操作结束后,会读相应的区域并计算checksum,将checksum返回给上位机;由上位机判断该checksum是否正确。如果不正确,该数据包会被重发;直到上位机收到正确的checksum;
2)HID数据包丢失:
上位机设计了超时机制,在规定时间内没有收到芯片的checksum返回值,上位机将自动重发;
3)HID数据包的Package No:
上位机发送的数据中,有一个字节用来标识包的Package No;芯片回复时,会将这个Package No加1。
4)Dirty Flag:
为了防止DFU失败之后,APROM写入错误数据后,重启芯片而导致程序跑飞,设计Dirty Flag标志位。DFU数据传输开始时,将Dirty Flag置位,DFU正常退出时,将Dirty Flag清空;
Dirty Flag存储在DataFlash中,不会因掉电而丢失;
5)按升级组合按键上电进入DFU:
为了防止因其他各种异常原因而导致APROM程序被篡改等,从而无法正常进入DFU的情况,设计了此机制。该机制保证只要LDROM程序可以正常启动/运行,就可以对APROM实施DFU操作。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种芯片固件升级方法,其特征在于,该方法包括:
步骤1,判断是否要进行一芯片固件的升级,是则执行步骤2,否则正常运行所述固件;
步骤2,获取固件升级数据,并将升级失败标志位置位;
步骤3,根据所述固件升级数据进行所述固件升级,若升级成功,则清空所述升级失败标志位,开始运行升级后的固件;如果升级失败,则保留所述升级失败标志位的置位状态并结束本次升级。
2.根据权利要求1所述的方法,其特征在于,还包括:设置升级组合按键,用于在按照步骤1至3正确执行所述固件的升级后出现异常情况而导致所述固件的升级失败后,触发升级组合按键,重新进行固件升级。
3.根据权利要求2所述的方法,其特征在于,步骤1中,通过运行中的所述芯片固件实时监控其升级标志位是否被置位来判断是否要进行升级,若所述升级标志位被置位,则开始升级过程;和/或,
步骤2中,从与芯片通信的上位机或者因特网上获取固件升级数据,获取的固件升级数据以及升级失败标志位均保存在非易失性存储器的程序管理区;所述固件运行在所述非易失性存储器的用户程序存储区;
其中,所述升级标志位通过所述与芯片通信的上位机或者因特网或者所述升级组合按键进行置位。
4.根据权利要求3所述的方法,其特征在于,步骤3中,根据所述固件升级数据进行所述固件升级,包括:
按顺序从所述程序管理区中读取所述固件升级数据的数据包并写入所述用户程序存储区中,读取的每个数据包携带相应的单校验码,所述固件升级数据携带一总校验码;
每完成一个数据包的读取和写入,读取所述用户程序存储区并生成一个单数据包校验码;比对所生成的单数据包校验码与所述数据包所携带的单校验码,如果不相等则重新进行该数据包的读取和写入,如果相等则进行下一个数据包的读取和写入;
完成全部所述数据包的读取和写入后,读取所述用户程序存储区并生成一个总数据包校验码;比对所生成的总数据包校验码与所述固件升级数据所携带的总校验码,如果不相等则重新根据所述固件升级数据进行所述固件升级。
5.根据权利要求1至4中任一项所述的方法,其特征在于,还包括:
保留所述升级失败标志位的置位状态并结束本次升级之后,更新所述固件的固件升级数据,以重新发起所述固件的升级,循环步骤1至3进入所述固件的下次升级。
6.一种芯片固件升级系统,其特征在于,包括:
判断单元,用于判断是否要进行一芯片固件的升级,并在确定要进行所述芯片固件的升级时启动所述芯片固件的升级过程;
固件升级数据加载单元,用于获取固件升级数据,并将升级失败标志位置位;以及
固件升级单元,用于根据所述固件升级数据进行所述固件升级,若升级成功,则清空所述升级失败标志位,开始运行升级后的固件;如果升级失败,则保留所述升级失败标志位的置位状态并结束本次升级。
7.根据权利要求6所述的系统,其特征在于,还包括:升级组合按键,用于在判断单元、固件升级数据加载单元以及固件升级单元正确执行所述固件的升级后出现异常情况而导致所述固件的升级失败后,触发而使得判断单元、固件升级数据加载单元以及固件升级单元重新对所述芯片固件进行固件升级。
8.根据权利要求7所述的系统,其特征在于,所述系统还包括非易失性存储器;
所述固件运行在所述非易失性存储器的用户程序存储区,所述判断单元通过运行中的所述芯片固件实时监控其升级标志位是否被置位来判断是否要进行升级,若所述升级标志位被置位,则开始升级过程;和/或,
获取的固件升级数据以及升级失败标志位均保存在非易失性存储器的程序管理区,所述固件升级数据加载单元从与芯片通信的上位机或者因特网上获取固件升级数据;
其中,所述升级标志位通过所述与芯片通信的上位机或者因特网或者所述升级组合按键进行置位。
9.根据权利要求8所述的系统,其特征在于,所述固件升级单元还用于:
按顺序从所述程序管理区中读取所述固件升级数据的数据包并写入所述用户程序存储区中,读取的每个数据包携带相应的单校验码,所述固件升级数据携带一总校验码;
每完成一个数据包的读取和写入,读取所述用户程序存储区并生成一个单数据包校验码;比对所生成的单数据包校验码与所述数据包所携带的单校验码,如果不相等则重新进行该数据包的读取和写入,如果相等则进行下一个数据包的读取和写入;
完成全部所述数据包的读取和写入后,读取所述用户程序存储区并生成一个总数据包校验码;比对所生成的总数据包校验码与所述固件升级数据所携带的总校验码,如果不相等则重新根据所述固件升级数据进行所述固件升级。
10.根据权利要求6至9中任一项所述的系统,其特征在于,所述系统还包括位于固件升级数据发布端的刷机单元,用于在所述固件升级单元保留所述升级失败标志位的置位状态并结束本次升级之后,更新所述固件的固件升级数据,以重新发起所述固件的升级,进入所述固件的下次升级。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310754001.0A CN103761122A (zh) | 2013-12-31 | 2013-12-31 | 一种芯片固件的升级方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310754001.0A CN103761122A (zh) | 2013-12-31 | 2013-12-31 | 一种芯片固件的升级方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103761122A true CN103761122A (zh) | 2014-04-30 |
Family
ID=50528366
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310754001.0A Pending CN103761122A (zh) | 2013-12-31 | 2013-12-31 | 一种芯片固件的升级方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103761122A (zh) |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104750531A (zh) * | 2015-04-15 | 2015-07-01 | 安徽师范大学 | 一种嵌入式系统在线刷新程序的方法 |
CN105138373A (zh) * | 2015-08-27 | 2015-12-09 | 深圳市元征软件开发有限公司 | 汽车诊断设备固件升级方法及装置 |
CN105354070A (zh) * | 2015-12-11 | 2016-02-24 | 成都广达新网科技股份有限公司 | 一种通过i2c升级设备固件的方法 |
CN105786541A (zh) * | 2014-12-23 | 2016-07-20 | Tcl通力电子(惠州)有限公司 | 基于广播信号的升级方法及系统 |
CN105930184A (zh) * | 2016-04-19 | 2016-09-07 | 青岛海信移动通信技术股份有限公司 | 系统升级方法及装置 |
CN106155725A (zh) * | 2015-04-16 | 2016-11-23 | 联想(上海)信息技术有限公司 | 加密芯片固件更新方法、装置及电子设备 |
CN106201439A (zh) * | 2016-09-09 | 2016-12-07 | 深圳怡化电脑股份有限公司 | 一种异常处理的方法及装置 |
CN106681763A (zh) * | 2016-12-21 | 2017-05-17 | 北京科加触控技术有限公司 | 一种usb设备及该设备的固件更新方法 |
CN107015833A (zh) * | 2017-04-14 | 2017-08-04 | 湖南威胜信息技术有限公司 | 嵌入式设备应用程序的自恢复方法 |
US9934120B2 (en) | 2016-02-10 | 2018-04-03 | Western Digital Technologies, Inc. | Method and apparatus for updating a system on chip (SOC) image from a host computer system without using DMA |
CN108021410A (zh) * | 2017-12-06 | 2018-05-11 | 九阳股份有限公司 | 一种智能家电设备的固件升级方法及系统 |
CN109240721A (zh) * | 2018-08-24 | 2019-01-18 | 江苏恒宝智能系统技术有限公司 | 一种mcu在线升级的方法 |
CN109977044A (zh) * | 2019-03-27 | 2019-07-05 | 歌尔科技有限公司 | Usb设备枚举检测方法和系统及固件升级方法和系统 |
CN110047586A (zh) * | 2019-04-16 | 2019-07-23 | 北京品驰医疗设备有限公司 | 植入医疗控制设备及其固件界面更新方法和系统 |
CN111610995A (zh) * | 2020-05-21 | 2020-09-01 | 昆腾微电子股份有限公司 | 一种设备固件升级方法、装置、电子设备和存储介质 |
CN112152836A (zh) * | 2020-08-11 | 2020-12-29 | 珠海市一微半导体有限公司 | 小存储容量设备的远程固件自动升级方法、系统及芯片 |
CN112181460A (zh) * | 2020-09-27 | 2021-01-05 | 深圳市豪恩声学股份有限公司 | 程序固件升级方法、装置、电子设备及存储介质 |
CN112269692A (zh) * | 2020-11-25 | 2021-01-26 | 杭州视洞科技有限公司 | 一种网络摄像机远程升级断电自恢复机制 |
CN112286551A (zh) * | 2020-10-22 | 2021-01-29 | 广州华欣电子科技有限公司 | 触摸设备的固件升级纠错方法和控制装置 |
CN112527342A (zh) * | 2020-09-23 | 2021-03-19 | 深圳市银星智能科技股份有限公司 | 一种在应用可编程iap固件升级方法、装置和设备 |
CN113656061A (zh) * | 2021-08-20 | 2021-11-16 | 成都亨通光通信有限公司 | 5g通信电源固件更新方法及更新装置 |
CN116055316A (zh) * | 2021-10-28 | 2023-05-02 | 青岛海信宽带多媒体技术有限公司 | 一种防止在线升级错误的方法和光模块 |
CN116055317A (zh) * | 2021-10-28 | 2023-05-02 | 青岛海信宽带多媒体技术有限公司 | 一种防止在线升级错误的方法和光模块 |
WO2023071384A1 (zh) * | 2021-10-28 | 2023-05-04 | 青岛海信宽带多媒体技术有限公司 | 光模块及其升级方法 |
CN118295686A (zh) * | 2024-06-05 | 2024-07-05 | 中诚华隆计算机技术有限公司 | 一种处理器固件升级方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1482805A (zh) * | 2002-09-12 | 2004-03-17 | 深圳市中兴通讯股份有限公司上海第二 | 一种会议电视终端保护模式的方法 |
US20050114852A1 (en) * | 2000-11-17 | 2005-05-26 | Shao-Chun Chen | Tri-phase boot process in electronic devices |
CN1734418A (zh) * | 2004-08-09 | 2006-02-15 | 上海乐金广电电子有限公司 | 存储器程序更新方法 |
CN1955925A (zh) * | 2005-10-28 | 2007-05-02 | 深圳Tcl新技术有限公司 | 具有断电保护的电视系统软件更新方法 |
CN101056209A (zh) * | 2007-05-25 | 2007-10-17 | 杭州华三通信技术有限公司 | 一种无线终端映像文件维护方法及设备 |
CN101271396A (zh) * | 2008-04-15 | 2008-09-24 | 威盛电子股份有限公司 | 电子装置及其在线更新固件的方法 |
CN101834976A (zh) * | 2009-10-20 | 2010-09-15 | 福建新大陆通信科技有限公司 | 使用3段式引导升级启动技术的机顶盒启动和升级方法 |
CN101833463A (zh) * | 2010-04-06 | 2010-09-15 | 中兴通讯股份有限公司 | 一种数据卡固件更新的方法和系统 |
CN101841594A (zh) * | 2009-03-17 | 2010-09-22 | 深圳富泰宏精密工业有限公司 | 便携式电子设备及其固件下载程序下载方法 |
CN101882087A (zh) * | 2010-06-30 | 2010-11-10 | 中兴通讯股份有限公司 | 一种多媒体终端设备及其维护方法 |
-
2013
- 2013-12-31 CN CN201310754001.0A patent/CN103761122A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050114852A1 (en) * | 2000-11-17 | 2005-05-26 | Shao-Chun Chen | Tri-phase boot process in electronic devices |
CN1482805A (zh) * | 2002-09-12 | 2004-03-17 | 深圳市中兴通讯股份有限公司上海第二 | 一种会议电视终端保护模式的方法 |
CN1734418A (zh) * | 2004-08-09 | 2006-02-15 | 上海乐金广电电子有限公司 | 存储器程序更新方法 |
CN1955925A (zh) * | 2005-10-28 | 2007-05-02 | 深圳Tcl新技术有限公司 | 具有断电保护的电视系统软件更新方法 |
CN101056209A (zh) * | 2007-05-25 | 2007-10-17 | 杭州华三通信技术有限公司 | 一种无线终端映像文件维护方法及设备 |
CN101271396A (zh) * | 2008-04-15 | 2008-09-24 | 威盛电子股份有限公司 | 电子装置及其在线更新固件的方法 |
CN101841594A (zh) * | 2009-03-17 | 2010-09-22 | 深圳富泰宏精密工业有限公司 | 便携式电子设备及其固件下载程序下载方法 |
CN101834976A (zh) * | 2009-10-20 | 2010-09-15 | 福建新大陆通信科技有限公司 | 使用3段式引导升级启动技术的机顶盒启动和升级方法 |
CN101833463A (zh) * | 2010-04-06 | 2010-09-15 | 中兴通讯股份有限公司 | 一种数据卡固件更新的方法和系统 |
CN101882087A (zh) * | 2010-06-30 | 2010-11-10 | 中兴通讯股份有限公司 | 一种多媒体终端设备及其维护方法 |
Cited By (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105786541A (zh) * | 2014-12-23 | 2016-07-20 | Tcl通力电子(惠州)有限公司 | 基于广播信号的升级方法及系统 |
CN104750531A (zh) * | 2015-04-15 | 2015-07-01 | 安徽师范大学 | 一种嵌入式系统在线刷新程序的方法 |
CN106155725A (zh) * | 2015-04-16 | 2016-11-23 | 联想(上海)信息技术有限公司 | 加密芯片固件更新方法、装置及电子设备 |
CN105138373A (zh) * | 2015-08-27 | 2015-12-09 | 深圳市元征软件开发有限公司 | 汽车诊断设备固件升级方法及装置 |
CN105138373B (zh) * | 2015-08-27 | 2018-10-23 | 深圳市元征软件开发有限公司 | 汽车诊断设备固件升级方法及装置 |
CN105354070B (zh) * | 2015-12-11 | 2019-02-22 | 成都广达新网科技股份有限公司 | 一种通过i2c升级设备固件的方法 |
CN105354070A (zh) * | 2015-12-11 | 2016-02-24 | 成都广达新网科技股份有限公司 | 一种通过i2c升级设备固件的方法 |
US9934120B2 (en) | 2016-02-10 | 2018-04-03 | Western Digital Technologies, Inc. | Method and apparatus for updating a system on chip (SOC) image from a host computer system without using DMA |
CN105930184A (zh) * | 2016-04-19 | 2016-09-07 | 青岛海信移动通信技术股份有限公司 | 系统升级方法及装置 |
CN106201439A (zh) * | 2016-09-09 | 2016-12-07 | 深圳怡化电脑股份有限公司 | 一种异常处理的方法及装置 |
CN106201439B (zh) * | 2016-09-09 | 2019-09-20 | 深圳怡化电脑股份有限公司 | 一种异常处理的方法及装置 |
CN106681763A (zh) * | 2016-12-21 | 2017-05-17 | 北京科加触控技术有限公司 | 一种usb设备及该设备的固件更新方法 |
CN107015833A (zh) * | 2017-04-14 | 2017-08-04 | 湖南威胜信息技术有限公司 | 嵌入式设备应用程序的自恢复方法 |
CN108021410A (zh) * | 2017-12-06 | 2018-05-11 | 九阳股份有限公司 | 一种智能家电设备的固件升级方法及系统 |
CN109240721A (zh) * | 2018-08-24 | 2019-01-18 | 江苏恒宝智能系统技术有限公司 | 一种mcu在线升级的方法 |
CN109977044A (zh) * | 2019-03-27 | 2019-07-05 | 歌尔科技有限公司 | Usb设备枚举检测方法和系统及固件升级方法和系统 |
CN110047586A (zh) * | 2019-04-16 | 2019-07-23 | 北京品驰医疗设备有限公司 | 植入医疗控制设备及其固件界面更新方法和系统 |
CN111610995A (zh) * | 2020-05-21 | 2020-09-01 | 昆腾微电子股份有限公司 | 一种设备固件升级方法、装置、电子设备和存储介质 |
CN111610995B (zh) * | 2020-05-21 | 2023-04-28 | 昆腾微电子股份有限公司 | 一种设备固件升级方法、装置、电子设备和存储介质 |
CN112152836A (zh) * | 2020-08-11 | 2020-12-29 | 珠海市一微半导体有限公司 | 小存储容量设备的远程固件自动升级方法、系统及芯片 |
CN112152836B (zh) * | 2020-08-11 | 2022-12-13 | 珠海市一微半导体有限公司 | 小存储容量设备的远程固件自动升级方法、系统及芯片 |
CN112527342A (zh) * | 2020-09-23 | 2021-03-19 | 深圳市银星智能科技股份有限公司 | 一种在应用可编程iap固件升级方法、装置和设备 |
CN112181460A (zh) * | 2020-09-27 | 2021-01-05 | 深圳市豪恩声学股份有限公司 | 程序固件升级方法、装置、电子设备及存储介质 |
CN112181460B (zh) * | 2020-09-27 | 2024-01-16 | 深圳市豪恩声学股份有限公司 | 程序固件升级方法、装置、电子设备及存储介质 |
CN112286551B (zh) * | 2020-10-22 | 2024-01-09 | 广州华欣电子科技有限公司 | 触摸设备的固件升级纠错方法和控制装置 |
CN112286551A (zh) * | 2020-10-22 | 2021-01-29 | 广州华欣电子科技有限公司 | 触摸设备的固件升级纠错方法和控制装置 |
CN112269692A (zh) * | 2020-11-25 | 2021-01-26 | 杭州视洞科技有限公司 | 一种网络摄像机远程升级断电自恢复机制 |
CN113656061A (zh) * | 2021-08-20 | 2021-11-16 | 成都亨通光通信有限公司 | 5g通信电源固件更新方法及更新装置 |
CN113656061B (zh) * | 2021-08-20 | 2023-12-15 | 成都亨通光通信有限公司 | 5g通信电源固件更新方法及更新装置 |
WO2023071384A1 (zh) * | 2021-10-28 | 2023-05-04 | 青岛海信宽带多媒体技术有限公司 | 光模块及其升级方法 |
CN116055317A (zh) * | 2021-10-28 | 2023-05-02 | 青岛海信宽带多媒体技术有限公司 | 一种防止在线升级错误的方法和光模块 |
CN116055316A (zh) * | 2021-10-28 | 2023-05-02 | 青岛海信宽带多媒体技术有限公司 | 一种防止在线升级错误的方法和光模块 |
CN118295686A (zh) * | 2024-06-05 | 2024-07-05 | 中诚华隆计算机技术有限公司 | 一种处理器固件升级方法 |
CN118295686B (zh) * | 2024-06-05 | 2024-08-02 | 中诚华隆计算机技术有限公司 | 一种处理器固件升级方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103761122A (zh) | 一种芯片固件的升级方法和系统 | |
CN106569847B (zh) | 一种用于车载系统基于移动网络实现iap远程升级的方法 | |
CN109189445B (zh) | 一种物联网设备程序升级的方法 | |
CN103294566B (zh) | 信息处理装置、信息处理方法和信息处理程序 | |
CN112579130B (zh) | 一种交互式的iap升级方法 | |
CN104090796B (zh) | 一种嵌入式设备程序更新方法和系统 | |
CN109358887B (zh) | 一种单片机程序的在线升级方法、装置及系统 | |
CN1993679B (zh) | 执行计算机程序的方法、操作系统和计算设备 | |
CN100511148C (zh) | 一种cpu系统的启动方法及系统 | |
CN105740034A (zh) | Mcu在线升级固件的系统及方法 | |
CN107908417B (zh) | 固件升级方法及电子设备 | |
CN102945173A (zh) | 用户程序在线升级系统和升级方法 | |
CN105677398A (zh) | 一种通用的嵌入式计算机软件在线升级方法 | |
CN114281394A (zh) | 一种快速在线升级程序的方法、系统、设备及介质 | |
CN108874582A (zh) | 一种系统恢复方法、装置及终端 | |
CN113656061B (zh) | 5g通信电源固件更新方法及更新装置 | |
CN112015447B (zh) | 电子设备的系统更新方法及装置、电子设备及存储介质 | |
CN101344853A (zh) | 用于空中编程的系统和方法 | |
CN109766140A (zh) | 一种机顶盒启动异常的定位方法及装置 | |
US10691465B2 (en) | Method for synchronization of system management data | |
CN110457058A (zh) | 控制节点在线升级方法、装置、上位机、系统及电子设备 | |
CN105975322A (zh) | 一种用于程序更新的装置、方法及微控制器 | |
CN110865906A (zh) | 一种电机初始位置角度存储方法、装置、车辆及存储介质 | |
CN111104138A (zh) | 一种固件升级方法、装置和计算机可读存储介质 | |
CN111813597A (zh) | 一种空调器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140430 |
|
RJ01 | Rejection of invention patent application after publication |