本发明涉及固件烧录技术,尤其涉及一种spiflash固件烧录方法及装置。
背景技术:
大多数电子系统,都需要使用spiflash来储存程序固件。在烧录固件的过程中,进行写入操作之前,需要先进行擦除操作,以将spiflash进行擦除,而现有的spiflash烧录器一般都是整片擦除spiflash,尽管待烧录固件的大小可能只有spiflash容量的一半,甚至几分之一,多余的擦除操作带来了不必要的时间浪费,擦除时间甚至是写入时间的十几倍,而且spiflash的存储空间越大,所需的擦除时间也越长。
另外,现在的烧录器需要手动选择待烧录固件,而烧录器无法判断待烧录固件是否正确,比如要烧录的固件是a版本,生产线的操作人员如果误选择了b版本,甚至选择了其他不是固件的文件,而这些烧录器是无法识别的。
技术实现要素:
为了解决上述现有技术的不足,本发明提供一种spiflash固件烧录方法及装置,能够节省更多的烧录时间,提高烧录效率。
本发明所要解决的技术问题通过以下技术方案予以实现:
一种spiflash固件烧录方法,包括:
步骤1:上位机向下位机发出烧录指令;
步骤2:下位机检测待烧录固件的大小;
步骤3:下位机擦除spiflash内与待烧录固件大小相同的存储空间;
步骤4:下位机将待烧录固件写入至spiflash内被擦除的存储空间内。
进一步地,下位机的内置存储单元里储存有待烧录固件,下位机从其内置存储单元里读取待烧录固件。
进一步地,在步骤1中,上位机在发出烧录指令前,还包括:检测待烧录固件的烧录次数,若烧录次数为0,则将其储存的待烧录固件传输至下位机,以将待烧录固件储存在下位机的内置存储单元里。
进一步地,在步骤4中,下位机将待烧录固件写入spiflash内后,检测spiflash内的已写入固件,若已写入固件与其储存的待烧录固件不一致,则重复步骤2-4。
进一步地,在进行步骤4之后,还包括:
步骤5:下位机向上位机发送一反馈信号;
步骤6:上位机将待烧录固件的烧录次数+1。
进一步地,上位机每次开机后,均将待烧录固件的烧录次数重置为0。
进一步地,上位机每次开机后,均通过互联网检测其储存的待烧录固件与服务器上的新发布固件是否一致,若不一致则将其储存的待烧录固件更新为服务器上的新发布固件。
进一步地,下位机将烧录进程和结果实时反馈至上位机。
一种spiflash固件烧录装置,包括依次电连接的上位机、下位机和存储器,其中,所述下位机电连接至spiflash以进行烧录;所述存储器用于储存供所述下位机执行的烧录程序。
进一步地,所述下位机具有内置存储单元,用于储存待烧录固件。
本发明具有如下有益效果:该spiflash固件烧录方法在写入固件前的擦除操作中,仅擦除spiflash内与待烧录固件大小相同的部分存储空间,相较于现有烧录器需擦除整片spiflash内的全部存储空间,能够节省更多的烧录时间,提高烧录效率。
附图说明
图1为本发明提供的固件烧录方法的步骤框图;
图2为本发明提供的固件烧录方法中上位机在步骤1的步骤框图;
图3为本发明提供的固件烧录方法中上位机开机后的步骤框图;
图4为本发明提供的固件烧录装置的原理框图。
具体实施方式
下面结合附图和实施例对本发明进行详细的说明。
实施例一
如图1所示,一种spiflash固件烧录方法,包括:
步骤1:上位机向下位机发出烧录指令;
在该步骤1中,生产线的操作人员将spiflash电连接至下位机后,通过操作上位机里的烧录程序,以对下位机发出烧录指令,启动对spiflash的固件烧录。
下位机的内置存储单元里储存的待烧录固件时从上位机处接收的,因此,在启动对spiflash的固件烧录后,在步骤1中,上位机在发出烧录指令前,如图2所示,还包括:检测待烧录固件的烧录次数,若烧录次数为0,则将其储存的待烧录固件传输至下位机,以将待烧录固件储存在下位机的内置存储单元里。
该spiflash固件烧录方法在第一次烧录待烧录固件时,上位机都先将待烧录固件传输并储存至下位机的内置存储单元里。
步骤2:下位机检测待烧录固件的大小;
步骤3:下位机擦除spiflash内与待烧录固件大小相同的存储空间;
步骤4:下位机将待烧录固件写入至spiflash内被擦除的存储空间内。
该spiflash固件烧录方法在写入固件前的擦除操作中,仅擦除spiflash内与待烧录固件大小相同的部分存储空间,相较于现有烧录器需擦除整片spiflash内的全部存储空间,能够节省更多的烧录时间,提高烧录效率。
其中,下位机具有一内置存储单元,内置存储单元里储存有待烧录固件,在固件烧录过程中,下位机从其内置存储单元里读取待烧录固件。
该spiflash固件烧录方法将待烧录固件储存在下位机的内置存储单元里,在固件烧录过程中,下位机直接从其内置存储单元里读取待烧录固件,可避免在烧录多片spiflash时,下位机频繁从上位机里读取待烧录固件,以节省数据传输时间。
同时,为了保证上位机传输给下位机的带烧录固件是最新版本,优选地,如图3所示,上位机每次开机后,均通过互联网检测其储存的待烧录固件与服务器上的新发布固件是否一致,若不一致则将其储存的待烧录固件更新为服务器上的新发布固件。
同时,上位机每次开机后,均将待烧录固件的烧录次数重置为0。
其中,上位机在检测其储存的待烧录固件与服务器上的新发布固件是否一致时,包括:
读取服务器上的新发布固件的检验码;
将新固件的校验码与其储存的待烧录固件的校验码进行比对,若不一致则判定新固件和待烧录固件不一致。
本实施例中,每个固件的头部上都被增设了一个两字节的crc16校验码,不同固件信息的固件上具有不同的crc16校验码,也就是说,若两个固件的crc16校验码是相同的话,则说明这两个固件里面的固件信息相同,是同一版固件。
另外,在步骤4中,下位机将待烧录固件写入spiflash内后,检测spiflash内的已写入固件,若已写入固件与其储存的待烧录固件不一致,则重复步骤2-4。
该spiflash固件烧录方法可自动识别已写入固件是否为需进行烧录的待烧录固件,防止下位机将其他版本的固件或一些非固件文件错误写入到spiflash内,只有写入正确的待烧录固件才算完成一片spiflash的烧录。
其中,下位机在检测其储存的待烧录固件与spiflash内的已写入固件是否一致时,具体步骤包括:
读取spiflash内的已写入固件的检验码;
将已写入固件的校验码与其储存的待烧录固件的校验码进行比对,若不一致则判定已写入固件和待烧录固件不一致。
另外,在进行步骤4之后,还包括:
步骤5:下位机向上位机发送一反馈信号;
步骤6:上位机将待烧录固件的烧录次数+1。
该spiflash固件烧录方法具有自动统计固件烧录次数的功能,生产线的操作人员通过上位机显示的烧录次数可得知已完成固件烧录的spiflash的数量。
同时,下位机将烧录进程和结果实时反馈至上位机,以方便生产线的操作人员实时了解烧录进程和结果。
实施例二
如图4所示,一种spiflash固件烧录装置,用于实施例一中所述的spiflash固件烧录方法,包括依次电连接的上位机、下位机和存储器,其中,所述下位机电连接至spiflash以进行烧录;所述存储器用于储存供所述下位机执行的烧录程序。
本实施例中,所述上位机采用个人电脑,所述下位机采用型号为n32905的单片机,所述存储器采用flash闪存;所述上位机和下位机之间通过usb线进行通讯连接,所述下位机和存储器之间通过总线进行通讯连接。
所述下位机具有内置存储单元,用于储存待烧录固件;本实施例中,型号为n32905的单片机具有内置ddr单元。
以上所述实施例仅表达了本发明的实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制,但凡采用等同替换或等效变换的形式所获得的技术方案,均应落在本发明的保护范围之内。