CN103473088A - 一种单片机在线升级方法和*** - Google Patents

一种单片机在线升级方法和*** Download PDF

Info

Publication number
CN103473088A
CN103473088A CN2013103898163A CN201310389816A CN103473088A CN 103473088 A CN103473088 A CN 103473088A CN 2013103898163 A CN2013103898163 A CN 2013103898163A CN 201310389816 A CN201310389816 A CN 201310389816A CN 103473088 A CN103473088 A CN 103473088A
Authority
CN
China
Prior art keywords
check code
file
rompaq
rompaq file
crc16
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.)
Granted
Application number
CN2013103898163A
Other languages
English (en)
Other versions
CN103473088B (zh
Inventor
刘谦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BDstar Intelligent and Connected Vehicle Technology Co Ltd
Original Assignee
BEIJING CHINA TSP Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by BEIJING CHINA TSP Co Ltd filed Critical BEIJING CHINA TSP Co Ltd
Priority to CN201310389816.3A priority Critical patent/CN103473088B/zh
Publication of CN103473088A publication Critical patent/CN103473088A/zh
Application granted granted Critical
Publication of CN103473088B publication Critical patent/CN103473088B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Detection And Correction Of Errors (AREA)

Abstract

本申请提供了一种单片机在线升级方法和***,所述方法包括:读取外置存储设备中的升级程序文件和所述升级程序文件对应的标准校验码;对所述升级程序文件进行校验,得到实际校验码;比较所述实际校验码和所述标准校验码,当所述实际校验码与所述标准校验码一致时,写入待升级标志;对所述升级程序文件进行CRC16计算,得到计算结果;根据所述计算结果,写入所述升级程序文件。通过本申请可以解决由于升级程序文件错误而导致的MCU在线升级错误或失败的问题。

Description

一种单片机在线升级方法和***
技术领域
本申请涉及单片机技术领域,特别是涉及一种单片机在线升级方法和***。
背景技术
由于单片机(Micro Control Unit,MCU,单片机)具有集成度高、运算速度快、可靠性高等优点,单片机的应用范围也日益广泛,单片机的应用范围可以包括工业自动化、仪器仪表、家用电器、信息和通信产品及军事装备等。单片机经历了从4b到8b再到16b的发展过程,为了进一步提高单片机的性能,目前技术人员努力实现及改进的技术重点是实现单片机的在线升级功能。
单片机本身是没有在线升级功能的,需要通过外置存储设备来完成在线升级过程。目前采用的方法是,MCU读取外置存储设备中的升级程序文件,比如:S19格式文件,S19格式文件可以是由名为Freecale CodeWarrior的编译器生成的后缀名为.S19的文件,并对S19格式文件中程序的有效位(除去地址信息,行校验信息)生成CRC16校验码,然后通过MPU(Micro ProcessorUnit,MPU,微处理器)和MCU之间的升级通讯协议将外置存储设备中存储的S19文件数据更新至MCU中,实现对MCU的在线升级。然而,目前采用的单片机在线升级方法,在升级过程中可能会由于升级程序文件错误而导致的MCU在线升级错误或失败。
发明内容
本申请提供一种单片机在线升级方法和***,以解决由于升级程序文件错误而导致的MCU在线升级错误或失败的问题。
为了解决上述问题,本申请公开了一种单片机在线升级方法,包括:
读取外置存储设备中的升级程序文件和所述升级程序文件对应的标准校验码;
对所述升级程序文件进行校验,得到实际校验码;
比较所述实际校验码和所述标准校验码,当所述实际校验码与所述标准校验码一致时,写入待升级标志;
对所述升级程序文件进行CRC16计算,得到计算结果;
根据所述计算结果,写入所述升级程序文件。
较佳地,所述读取外置存储设备中的升级程序文件,包括:
读取外置存储设备中的程序文件,根据文件特征码,判断所述程序文件是否为升级程序文件,得到判断结果;
根据所述判断结果,获取得到所述升级程序文件。
较佳地,所述对所述升级程序文件进行CRC16计算,得到计算结果,包括:
逐次提取所述升级程序文件,其中,每次提取所述升级程序文件中的16字节数据;
对提取得到的所述16字节数据进行CRC16计算,生成所述16字节数据对应的CRC16第一校验码;
生成包含所述16字节数据和所述第一校验码的校验数据;
对所述校验数据中的16字节数据再次进行CRC16计算,生成第二校验码。
较佳地,所述根据计算结果,写入所述升级程序文件,包括:
比较所述第一校验码和所述第二校验码的一致性,当所述第一校验码和所述第二校验码一致时,写入所述校验数据中的所述16字节数据;
当所述第一校验码和所述第二校验码不一致时,升级过程失败,所述待升级标志更新为升级失败标志。
较佳地,所述根据所述计算结果,写入所述升级程序文件,包括:
当写入所有提取得到的所述16字节数据后,升级成功,所述待升级标志更新为升级成功标志。
相应的本申请实施例公开了一种单片机在线升级***,包括:
文件读取模块,用于读取外置存储设备中的升级程序文件和所述升级程序文件对应的标准校验码;
校验码生成模块,用于对所述升级程序文件进行校验,得到实际校验码;
比较模块,用于比较所述实际校验码和所述标准校验码,在所述实际校验码与所述标准校验码一致时,写入待升级标志;
CRC16计算模块,用于对所述升级程序文件进行CRC16计算,得到计算结果;
文件写入模块,用于根据所述计算结果,写入所述升级程序文件。
较佳地,所述文件读取模块,包括:
判断子模块,用于读取外置存储设备中的程序文件,根据升级程序文件特征码,判断所述程序文件是否为升级程序文件,得到判断结果;
获取子模块,用于根据所述判断结果,获取得到所述升级程序文件。
较佳地,所述CRC16计算模块,包括:
提取子模块,用于逐次提取所述升级程序文件,其中,每次提取所述升级程序文件中的16字节数据;
第一校验码生成子模块,用于对提取得到的所述16字节数据进行CRC16计算,生成所述16字节数据对应的CRC16第一校验码;
校验数据生成子模块,用于生成包含所述16字节数据和所述第一校验码的校验数据;
第二校验码生成子模块,对所述校验数据中的16字节数据再次进行CRC16计算,生成第二校验码。
较佳地,所述文件写入模块,包括:
CRC16校验码比较子模块,用于比较所述第一校验码和所述第二校验码的一致性;
第一写入子模块,用于在所述第一校验码和所述第二校验码一致时,写入所述校验数据中的所述16字节数据;
第二写入子模块,用于在所述第一校验码和所述第二校验码不一致,升级过程失败时,将所述待升级标志更新为升级失败标志。
较佳地,所述文件写入模块,包括:
第三写入子模块,用于在写入所有提取得到的所述16字节数据后,升级成功时,将所述待升级标志更新为升级成功标志。
与现有技术相比,本申请包括以下优点:
本申请实施例所述的一种单片机在线升级方法,通过对读取得到的外置存储设备中的升级程序文件进行校验,判断升级程序文件是否正确,当升级程序文件正确时,再根据所述升级程序文件进行在线升级过程,避免了因升级程序文件错误而造成MCU在线升级过程错误或失败的问题。
附图说明
图1是本申请实施例所述一种单片机在线升级方法的流程图;
图2是本申请另一实施例所述一种单片机在线升级方法的流程;
图3是本申请实施例所述一种单片机在线升级***的结构框图;
图4是本申请另一实施例所述一种单片机在线升级***的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
本申请实施例所述的一种单片机在线升级方法,从外置存储设备中读取得到的升级程序文件,并对所述升级程序文件进行校验,确保升级程序文件的正确性,当所述升级程序文件通过校验后,再根据CRC16算法完成MCU在线升级过程,由于在升级之前对升级程序文件的正确性做了校验,因此,避免了因升级程序文件错误而带来的升级错误或升级失败的问题。
参照图1,示出了本申请实施例所述一种单片机在线升级方法的流程图。所述单片机在线升级方法,包括:
步骤102,读取外置存储设备中的升级程序文件和标准校验码;
单片机本身是没有在线升级功能的,,在本申请实施例中,可以选择采用基于flash存储技术的MCU芯片(flash是存储芯片的一种,通过特定的程序可以修改里面的数据),并通过外置存储设备来实现MCU的在线升级过程,其中,所述外置存储设备可以是:SD卡(Secure Digital Memory Card)、U盘或闪存等。升级程序文件可以保存在外置存储设备中,MCU通过读取存储在外置存储设备中的升级程序文件,然后写入所述升级程序文件,完成在线升级过程。其中,所述升级程序文件都有一个对应的标准校验码,所述标准校验码和所述升级程序文件都保存在外置存储设备中,通过标准校验码可以用来验证所述升级程序文件的正确性。
步骤104,对所述升级程序文件进行校验,得到实际校验码;
在实际应用中,可能会因为外置存储设备的损坏或外置存储设备错误而导致外置存储设备中存储的升级程序文件发生错误;外置存储设备中存储的升级程序文件也有可能被窜改,而不是原始状态的升级程序文件。在本申请实施例中,通过对提取得到的升级程序文件进行校验,得到实际校验码,来判断升级程序文件的正确性。
步骤106,比较所述实际校验码和所述标准校验码,当所述实际校验码与所述标准校验码一致时,写入待升级标志;
将得到的实际校验码与标准校验码进行比较,当两者一致时,说明升级程序文件是正确的,可以根据所述升级程序文件进行在线升级,在MCU中写入一个待升级标志;当两者不一致时;说明升级程序文件不正确,可能是外置存储设备错误导致升级程序文件错误,也可能是升级程序文件缺失或被窜改,所述升级程序文件不能继续使用。
步骤108,对所述升级程序文件进行CRC16计算,得到计算结果;
步骤110,根据所述计算结果,写入所述升级程序文件。
综上所述,本申请实施例提供的一种单片机在线升级方法,从外置存储设备中读取得到的升级程序文件和标准校验码,并对所述升级程序文件进行校验,得到实际校验码,通过比较所述标准校验码和所述实际校验码,确保升级程序文件的正确性,当确定所述升级程序文件正确后,再根据CRC16算法完成MCU在线升级过程,由于在升级之前对升级程序文件的正确性做了校验,因此,避免了因升级程序文件错误而带来的升级错误或升级失败的问题。
参照图2,示出了本申请另一实施例所述一种单片机在线升级方法的流程图。所述单片机在线升级方法,包括:
步骤202,读取外置存储设备中的升级程序文件和标准校验码;
在实际应用中,外置存储设备中可以存储很多文件,需要从这些文件中确定升级程序文件,步骤202,可以包括:
子步骤2022,读取外置存储设备中的程序文件,根据文件特征码,判断所述程序文件是否为升级程序文件,得到判断结果;
在本申请实施例中,所述升级程序文件可以是S19格式文件,S19格式文件可以是由名为Freecale CodeWarrior的编译器生成的后缀名为.S19的文件,S19格式文件每一行称为一个S记录,每个S记录由记录类型、记录长度、存储地址、代码/数据、校验和五个部分组成,每字节数据被编译成两个16进制字符。可以通过在S19格式文件前添加一个用于识别的特征码,当读取外置存储设备中的程序文件时,判断读取的程序文件是否带有所述特征码。
子步骤2024,根据所述判断结果,获取得到所述升级程序文件;
当读取的程序文件带有所述特征码时,则所述程序文件为升级程序文件,获取所述升级程序文件。
步骤204,对所述升级程序文件进行校验,得到实际校验码;
在本申请中,可以通过MD5校验法对所述升级程序文件进行校验。MD5即Message-Digest Algorithm5,信息-摘要算法5,MD5的可以对一段信息(message)生成信息摘要(message-digest),所述信息摘要对所述信息具有唯一性,可以作为数字签名用于验证文件的正确性。可以将正确的升级程序文件对应的MD5码存储在外置存储设备中作为标准MD5码,对读取得到的升级程序文件进行MD5校验,根据S19文件的字节串,每个字节是8个bit,计算实际的MD5码,MD5计算方法可以如下:
第一步,补位:MD5算法先对输入的数据进行补位,使得数据的长度(以byte为单位)对64求余的结果是56。即数据扩展至LEN=K*64+56个字节,K为整数。补位方法:补一个1,然后补0直至满足上述要求。相当于补一个0x80的字节,再补值为0的字节。这一步里总共补充的字节数为0~63个;
第二步,附加数据长度:用一个64位的整数表示数据的原始长度(以bit为单位),将这个数字的8个字节按低位的在前,高位在后的顺序附加在补位后的数据后面。这时,数据被填补后的总长度为:LEN=K*64+56+8=(K+1)*64Bytes;
第三步,初始化MD5参数:有四个32位整数变量(A,B,C,D)用来计算信息摘要,每一个变量被初始化成以下以十六进制数表示的数值,低位的字节在前面;
第四步,定义四个MD5基本的按位操作函数,其中X、Y、Z为32位整数:F(X,Y,Z)=(X and Y)or(not(X)and Z)、G(X,Y,Z)=(X and Z)or(Y and not(Z))和H(X,Y,Z)=X xor Y xor Z、I(X,Y,Z)=Y xor(X ornot(Z));
再定义四个分别用于四轮变换的函数,其中,假设Mj表示消息的第j个子分组(从0到15),<<<s表示循环左移s位,则四种操作为:
FF(a,b,c,d,Mj,s,ti)表示a=b+((a+(F(b,c,d)+Mj+ti)<<<s);
GG(a,b,c,d,Mj,s,ti)表示a=b+((a+(G(b,c,d)+Mj+ti)<<<s);
HH(a,b,c,d,Mj,s,ti)表示a=b+((a+(H(b,c,d)+Mj+ti)<<<s);
II(a,b,c,d,Mj,s,ti)表示a=b+((a+(I(b,c,d)+Mj+ti)<<<s);
第五步,对输入数据作变换:处理数据,N是总的字节数,以64个字节为一组,每组作一次循环,每次循环进行四***作。要变换的64个字节用16个32位的整数数组M[0...15]表示。而数组T[1...64]表示一组常数,T[i]为4294967296*abs(sin(i))的32位整数部分,i的单位是弧度,i的取值从1到64;
第六步,输出结果。A,B,C,D连续存放,共16个字节,128位。按十六进制依次输出这个16个字节。
步骤206,比较所述实际校验码和所述标准校验码,当所述实际校验码与所述标准校验码一致时,写入待升级标志;
每个文件对应的MD5码都是不同的,如果标准MD5码与实际计算得到的MD5码一致,说明获取得到的升级程序文件是正确的,从而避免了因升级程序文件的错误而导致升级过程错误或失败的问题。
步骤208,对所述升级程序文件进行CRC16计算,得到计算结果;步骤208可以包括:
子步骤2082,逐次提取所述升级程序文件,其中,每次提取所述升级程序文件中的16字节数据;
子步骤2084,对提取得到的所述16字节数据进行CRC16计算,生成所述16字节数据对应的CRC16第一校验码;
其中,对所述16字节数据进行CRC16计算,计算方法可以如下:
1、预置1个16位的寄存器为十六进制FFFF(即全为1),所述寄存器为CRC寄存器;
2、把第一个8位二进制数据与16位的CRC寄存器的低8位相异或,把结果放于CRC寄存器,高八位数据不变;
3、把CRC寄存器的内容右移一位(朝低位)用0填补最高位,并检查右移后的移出位;
4、如果移出位为0:重复第3步(再次右移一位);如果移出位为1,CRC寄存器与多项式A001(1010 0000 0000 0001)进行异或;
5、重复步骤3和4,直到右移8次,将整个8位数据全部进行处理;
6、重复步骤2到步骤5,进行通讯信息帧下一个字节的处理;
7、将该通讯信息帧所有字节按上述步骤计算完成后,得到的16位CRC寄存器的高、低字节进行交换;
8、最后得到的CRC寄存器内容即为CRC16码。
子步骤2086,生成包含所述16字节数据和所述第一校验码的校验数据;
子步骤2088,对所述校验数据中的16字节数据再次进行CRC16计算,生成第二校验码。
在本申请实施例中,MPU可以用于读取外置存储设备中的升级程序文件,并对升级程序文件进行MD5校验和CRC16计算,所述第一校验码可以是MPU对升级程序文件进行CRC16计算的结果,MPU生成所述校验数据并发送给MCU,MCU此时需要多所述校验数据中的所述16字节数据再次进行CRC16计算,生成第二校验码,来确保发送接收过程中所述校验数据的正确性,当所述第一校验码和所述第二校验码一致时,所述16字节数据在发送和接收过程中没有出错,是正确的。
步骤210,根据所述计算结果,写入所述升级程序文件。所述步骤210可以包括:
子步骤2102,比较所述第一校验码和所述第二校验的一致性;
当比较结果为:所述第一校验码和所述第二校验不一致,进行子步骤2104,升级过程失败,所述待升级标志更新为升级失败标志;
当比较结果为:所述第一校验码和所述第二校验一致,则,进行:
子步骤2106,写入所述校验数据中的所述16字节数据;
子步骤2108,当写入所有提取得到的所述16字节数据后,升级成功,所述待升级标志更新为升级成功标志。
综上所述,本申请实施例所述一种单片机在线升级方法,通过MD5校验法对读取得到的升级程序文件进行校验,确保升级程序文件的正确性,再通过CRC16算法完成在线升级过程,当CRC16第一校验码与第二校验码一致时,保留升级程序文件数据,避免了因升级程序文件错误而导致的升级错误或升级失败的问题,实现了单片机的在线升级过程。
下面通过一个具体实施例来说明上述方法的实现流程,首先,MCU芯片可以选择采用基于FLASH存储技术的芯片,使之具备在线升级的可能性;其次,在MCU程序存储空间的规划上,可以分出一块独立的,受擦写保护的存储区域(boot区域),所述boot区域中可以保存擦写FLASH的程序模块,MPU与MCU通讯协议解析的模块,CRC16算法模块,以boot区域单元的程序为基础,实现更新MCU程序的功能,MCU的程序存储空间中另一部分存储应用程序,完成在线升级过程中涉及的其它功能。已SD卡中存储的S19升级程序文件为例,具体升级方法流程可以如下:
步骤1:***SD卡,MPU根据程序文件特征码读取得到S19格式的升级程序文件和MD5标准校验码;
步骤2:MPU对所述S19格式文件进行MD5校验,生成实际MD5校验码,当实际MD5校验码与所述MD5标准校验码一致时,表示升级程序文件正确,MPU读取S19格式文件中的所有有效数据;
步骤3:MPU发送指令给MCU,使之跳转至boot区域执行程序,同时在boot区域FLASH中最后四个字节空间记录待升级标志,比如:0x55555555;
步骤4:MCU发起升级通讯请求,MPU开始发送S19格式文件数据至MCU,每次传送16字节数据,并对所述16字节数据生成CRC16第一校验码,并将所述第一校验码也传送至MCU,即将所述16字节的S19格式文件数据和所述第一校验码一并传送至MCU;
步骤5:MCU收到所述16字节的S19格式文件数据和所述第一校验码,然后对收到的16字节数据再次进行CRC16计算,生成第二校验码校验码,与收到的第一校验码进行比较,当所述第一校验码和所述第二校验码一致时,保留所述16字节数据,当所述第一校验码和所述第二校验码不一致时,MCU可以请求MPU重新发送数据,如果重试两次收发后,所述第一校验码和所述第二校验码仍然不一致,那么MCU更新boot区域FLASH中最后四个字节为升级失败标志,比如:0xaaaaaaaa;
步骤6,所有字节接收完成后,MCU将所有数据更新至应用程序空间后,在线升级成功,MCU清除待升级标志为升级成功标志,比如:0oaaaaaaaa。
综上所述,本申请实施例所述一种单片机在线升级方法,MPU通过采用MD5校验法对升级程序文件进行校验,然后对通过MD5校验的升级程序文件进行CRC16计算,得到CRC16第一校验码,再将升级程序文件数据和所述第一校验码发送给MCU;MCU再次对升级程序文件数据进行CRC16计算,得到第二校验码,通过比较所述第一校验码和所述第二校验码的一致性,来判断数据传输过程是否正确,当所述第一校验码和所述第二校验码一致时,写入升级程序文件数据;当所述第一校验码和所述第二校验码不一致时,MCU发送请求,MPU重新发送一次数据,当多次发送数据后,所述第一校验码和所述第二校验码不一致,则认为升级过程失败。进一步的,在开始升级时,在boot区域写入待升级标志,在升级过程结束后,将所述待升级标志更新为升级成功标志,或升级失败标志。通过本申请实施例提供的方法,可以确保整个升级过程中升级程序文件的正确性,从而完成单片机在线升级过程。
需要说明的是,对于前述的方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请所必需的
基于上述方法实施例的说明,本申请还提供了相应的单片机在线升级***的实施例,来实现上述方法实施例所述的内容。
参照图3,示出了本申请实施例所述一种单片机在线升级***的结构框图,所述单片机在线升级***,包括:
文件读取模块302,用于读取外置存储设备中的升级程序文件和所述升级程序文件对应的标准校验码;
校验码生成模块304,用于对所述升级程序文件进行校验,得到实际校验码;
比较模块306,用于比较所述实际校验码和所述标准校验码,在所述实际校验码与所述标准校验码一致时,写入待升级标志;
CRC16计算模块308,用于对所述升级程序文件进行CRC16计算,得到计算结果;
文件写入模块310,用于根据所述计算结果,写入所述升级程序文件,升级结束。
综上所述,本申请实施例所述的一种单片机在线升级***,读取外置存储设备中的升级程序文件和标准校验码,然后对所述升级程序文件进行校验,生成实际校验码,将所述实际校验码与所述标准校验码比价来判断读取得到的升级程序文件是否正确,当升级程序文件正确时,再根据所述升级程序文件进行在线升级过程,避免了因升级程序文件错误而造成MCU在线升级过程错误或失败的问题。
参照图4,示出了本申请另一实施例所述一种单片机在线升级***的结构框图。所述单片机在线升级***包括:
文件读取模块402,用于读取外置存储设备中的升级程序文件和所述升级程序文件对应的标准校验码;
在本申请实施例中,所述文件读取模块402,可以包括:
判断子模块4022,用于读取外置存储设备中的程序文件,根据升级程序文件特征码,判断所述程序文件是否为升级程序文件,得到判断结果;
获取子模块4024,用于根据所述判断结果,获取得到所述升级程序文件。
校验码生成模块404,用于对所述升级程序文件进行校验,得到实际校验码;
比较模块406,用于比较所述实际校验码和所述标准校验码,在所述实际校验码与所述标准校验码一致时,写入待升级标志;
CRC16计算模块408,用于对所述升级程序文件进行CRC16计算,得到计算结果;
在本申请实施例中,所述CRC16计算模块408,可以包括:
提取子模块4082,用于逐次提取所述升级程序文件,其中,每次提取所述升级程序文件中的16字节数据;
第一校验码生成子模块4084,用于对提取得到的所述16字节数据进行CRC16计算,生成所述16字节数据对应的CRC16第一校验码;
校验数据生成子模块4086,用于生成包含所述16字节数据和所述第一校验码的校验数据;
第二校验码生成子模块4088,对所述校验数据中的16字节数据再次进行CRC16计算,生成第二校验码。
文件写入模块410,用于根据所述计算结果,写入所述升级程序文件。
在本申请实施例中,所述文件写入模块410,可以包括:
CRC16校验码比较子模块4102,用于比较所述第一校验码和所述第二校验码的一致性;
第一写入子模块4104,用于在所述第一校验码和所述第二校验码一致时,写入所述校验数据中的所述16字节数据;
第二写入子模块4106,用于在所述第一校验码和所述第二校验码不一致,升级过程失败时,将所述待升级标志更新为升级失败标志;
第三写入子模块4108,用于在写入所有提取得到的所述16字节数据后,升级成功时,将所述待升级标志更新为升级成功标志。
综上所述,本申请实施例所述的一种单片机在线升级方法,通过对读取得到的外置存储设备中的升级程序文件进行校验,判断升级程序文件是否正确,当升级程序文件正确时,再根据所述升级程序文件进行在线升级过程,避免了因升级程序文件错误而造成MCU在线升级过程错误或失败的问题。
对于***实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
以上对本申请所提供的一种单片机在线升级方法和***,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种单片机在线升级方法,其特征在于,包括:
读取外置存储设备中的升级程序文件和所述升级程序文件对应的标准校验码;
对所述升级程序文件进行校验,得到实际校验码;
比较所述实际校验码和所述标准校验码,当所述实际校验码与所述标准校验码一致时,写入待升级标志;
对所述升级程序文件进行CRC16计算,得到计算结果;
根据所述计算结果,写入所述升级程序文件。
2.根据权利要求1所述的方法,其特征在于,所述读取外置存储设备中的升级程序文件,包括:
读取外置存储设备中的程序文件,根据文件特征码,判断所述程序文件是否为升级程序文件,得到判断结果;
根据所述判断结果,获取得到所述升级程序文件。
3.根据权利要求1所述的方法,其特征在于,所述对所述升级程序文件进行CRC16计算,得到计算结果,包括:
逐次提取所述升级程序文件,其中,每次提取所述升级程序文件中的16字节数据;
对提取得到的所述16字节数据进行CRC16计算,生成所述16字节数据对应的CRC16第一校验码;
生成包含所述16字节数据和所述第一校验码的校验数据;
对所述校验数据中的16字节数据再次进行CRC16计算,生成第二校验码。
4.根据权利要求3所述的方法,其特征在于,所述根据计算结果,写入所述升级程序文件,包括:
比较所述第一校验码和所述第二校验码的一致性,当所述第一校验码和所述第二校验码一致时,写入所述校验数据中的所述16字节数据;
当所述第一校验码和所述第二校验码不一致时,升级过程失败,所述待升级标志更新为升级失败标志。
5.根据权利要求3所述的方法,其特征在于,所述根据所述计算结果,写入所述升级程序文件,包括:
当写入所有提取得到的所述16字节数据后,升级成功,所述待升级标志更新为升级成功标志。
6.一种单片机在线升级***,其特征在于,包括:
文件读取模块,用于读取外置存储设备中的升级程序文件和所述升级程序文件对应的标准校验码;
校验码生成模块,用于对所述升级程序文件进行校验,得到实际校验码;
比较模块,用于比较所述实际校验码和所述标准校验码,在所述实际校验码与所述标准校验码一致时,写入待升级标志;
CRC16计算模块,用于对所述升级程序文件进行CRC16计算,得到计算结果;
文件写入模块,用于根据所述计算结果,写入所述升级程序文件。
7.根据权利要求6所述的***,其特征在于,所述文件读取模块,包括:
判断子模块,用于读取外置存储设备中的程序文件,根据升级程序文件特征码,判断所述程序文件是否为升级程序文件,得到判断结果;
获取子模块,用于根据所述判断结果,获取得到所述升级程序文件。
8.根据权利要求6所述的***,其特征在于,所述CRC16计算模块,包括:
提取子模块,用于逐次提取所述升级程序文件,其中,每次提取所述升级程序文件中的16字节数据;
第一校验码生成子模块,用于对提取得到的所述16字节数据进行CRC16计算,生成所述16字节数据对应的CRC16第一校验码;
校验数据生成子模块,用于生成包含所述16字节数据和所述第一校验码的校验数据;
第二校验码生成子模块,对所述校验数据中的16字节数据再次进行CRC16计算,生成第二校验码。
9.根据权利要求8所述的***,其特征在于,所述文件写入模块,包括:
CRC16校验码比较子模块,用于比较所述第一校验码和所述第二校验码的一致性;
第一写入子模块,用于在所述第一校验码和所述第二校验码一致时,写入所述校验数据中的所述16字节数据;
第二写入子模块,用于在所述第一校验码和所述第二校验码不一致,升级过程失败时,将所述待升级标志更新为升级失败标志。
10.根据权利要求8所述的***,其特征在于,所述文件写入模块,包括:
第三写入子模块,用于在写入所有提取得到的所述16字节数据后,升级成功时,将所述待升级标志更新为升级成功标志。
CN201310389816.3A 2013-08-30 2013-08-30 一种单片机在线升级方法和*** Active CN103473088B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310389816.3A CN103473088B (zh) 2013-08-30 2013-08-30 一种单片机在线升级方法和***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310389816.3A CN103473088B (zh) 2013-08-30 2013-08-30 一种单片机在线升级方法和***

Publications (2)

Publication Number Publication Date
CN103473088A true CN103473088A (zh) 2013-12-25
CN103473088B CN103473088B (zh) 2018-01-02

Family

ID=49797957

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310389816.3A Active CN103473088B (zh) 2013-08-30 2013-08-30 一种单片机在线升级方法和***

Country Status (1)

Country Link
CN (1) CN103473088B (zh)

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103995723A (zh) * 2014-05-26 2014-08-20 惠州华阳通用电子有限公司 一种基于移动存储设备升级ivi***固件的方法和装置
CN104750505A (zh) * 2013-12-26 2015-07-01 北京谊安医疗***股份有限公司 用于单片机的在线升级方法及***
CN104750501A (zh) * 2013-12-26 2015-07-01 北京谊安医疗***股份有限公司 用于单片机的在线升级方法及***
CN105005486A (zh) * 2015-06-25 2015-10-28 许继集团有限公司 一种智能变电站设备程序在线升级***和方法
CN105068830A (zh) * 2015-07-30 2015-11-18 株洲南车时代电气股份有限公司 人机交互单元及其更新***
CN105180378A (zh) * 2015-10-15 2015-12-23 珠海格力电器股份有限公司 空调及其升级控制方法和装置
CN105354059A (zh) * 2015-10-29 2016-02-24 珠海格力电器股份有限公司 空调***的控制器的升级方法及装置
CN106293824A (zh) * 2016-08-04 2017-01-04 青岛海信电器股份有限公司 一种从处理芯片升级的方法及装置
CN106775847A (zh) * 2016-12-01 2017-05-31 广州视源电子科技股份有限公司 一种板卡软件版本更新方法及装置
CN106909418A (zh) * 2017-02-13 2017-06-30 深圳市广和通无线股份有限公司 单片机***更新方法和装置
CN109240721A (zh) * 2018-08-24 2019-01-18 江苏恒宝智能***技术有限公司 一种mcu在线升级的方法
CN110427195A (zh) * 2019-07-17 2019-11-08 陕西千山航空电子有限责任公司 一种程序加载校验算法
CN111124461A (zh) * 2019-12-12 2020-05-08 青岛海尔科技有限公司 用于单片机ota升级的方法、装置和单片机
CN111930408A (zh) * 2020-06-29 2020-11-13 东风电驱动***有限公司 一种软件升级方法
CN112104721A (zh) * 2020-09-02 2020-12-18 青岛创新控制技术有限公司 一种ota远程升级文件下载方法
CN112527342A (zh) * 2020-09-23 2021-03-19 深圳市银星智能科技股份有限公司 一种在应用可编程iap固件升级方法、装置和设备
CN112560042A (zh) * 2020-11-25 2021-03-26 北京交大微联科技有限公司 用于计算机联锁***的数据配置方法及装置
CN112579128A (zh) * 2020-12-23 2021-03-30 恒为科技(上海)股份有限公司 一种数据处理方法、上位机、单片机及***
CN113791808A (zh) * 2021-10-20 2021-12-14 守卫者(杭州)科技有限公司 底层程序升级方法、装置、计算机设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101287192A (zh) * 2007-04-13 2008-10-15 联想(北京)有限公司 非接触式应用升级的方法、设备、应用下载中心和***
CN101917609A (zh) * 2010-08-13 2010-12-15 四川长虹电器股份有限公司 嵌入式流媒体文件格式识别方法
CN101924607A (zh) * 2010-08-27 2010-12-22 华为终端有限公司 基于固件空中传输技术的固件处理方法、装置及***
CN101957764A (zh) * 2010-08-02 2011-01-26 珠海许继电气有限公司 一种远方终端程序远程更新的方法
CN102298526A (zh) * 2011-06-08 2011-12-28 厦门雅迅网络股份有限公司 一种基于无外扩存储器单片机的外设设备程序升级机制
CN103197943A (zh) * 2013-04-11 2013-07-10 航天科工深圳(集团)有限公司 一种单片机在线升级方法和***

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100543680C (zh) * 2007-01-12 2009-09-23 深圳市科陆电子科技股份有限公司 一种对电能表芯片程序进行下载更新的方法
CN101694621B (zh) * 2009-10-22 2015-12-16 中兴通讯股份有限公司 一种升级移动终端软件的方法和移动终端
CN102622253B (zh) * 2012-03-09 2015-11-18 瑞斯康达科技发展股份有限公司 一种单片机及其在线升级的方法
CN102945174A (zh) * 2012-11-08 2013-02-27 大连捷成实业发展有限公司 通过接着片外Flash实现单片机程序升级的方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101287192A (zh) * 2007-04-13 2008-10-15 联想(北京)有限公司 非接触式应用升级的方法、设备、应用下载中心和***
CN101957764A (zh) * 2010-08-02 2011-01-26 珠海许继电气有限公司 一种远方终端程序远程更新的方法
CN101917609A (zh) * 2010-08-13 2010-12-15 四川长虹电器股份有限公司 嵌入式流媒体文件格式识别方法
CN101924607A (zh) * 2010-08-27 2010-12-22 华为终端有限公司 基于固件空中传输技术的固件处理方法、装置及***
CN102298526A (zh) * 2011-06-08 2011-12-28 厦门雅迅网络股份有限公司 一种基于无外扩存储器单片机的外设设备程序升级机制
CN103197943A (zh) * 2013-04-11 2013-07-10 航天科工深圳(集团)有限公司 一种单片机在线升级方法和***

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
曹鼎: "文件类型识别技术研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》, 15 July 2012 (2012-07-15) *

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104750505A (zh) * 2013-12-26 2015-07-01 北京谊安医疗***股份有限公司 用于单片机的在线升级方法及***
CN104750501A (zh) * 2013-12-26 2015-07-01 北京谊安医疗***股份有限公司 用于单片机的在线升级方法及***
CN103995723B (zh) * 2014-05-26 2018-08-03 惠州华阳通用电子有限公司 一种基于移动存储设备升级ivi***固件的方法和装置
CN103995723A (zh) * 2014-05-26 2014-08-20 惠州华阳通用电子有限公司 一种基于移动存储设备升级ivi***固件的方法和装置
CN105005486A (zh) * 2015-06-25 2015-10-28 许继集团有限公司 一种智能变电站设备程序在线升级***和方法
CN105068830A (zh) * 2015-07-30 2015-11-18 株洲南车时代电气股份有限公司 人机交互单元及其更新***
CN105180378A (zh) * 2015-10-15 2015-12-23 珠海格力电器股份有限公司 空调及其升级控制方法和装置
CN105354059A (zh) * 2015-10-29 2016-02-24 珠海格力电器股份有限公司 空调***的控制器的升级方法及装置
CN106293824A (zh) * 2016-08-04 2017-01-04 青岛海信电器股份有限公司 一种从处理芯片升级的方法及装置
CN106775847A (zh) * 2016-12-01 2017-05-31 广州视源电子科技股份有限公司 一种板卡软件版本更新方法及装置
CN106909418A (zh) * 2017-02-13 2017-06-30 深圳市广和通无线股份有限公司 单片机***更新方法和装置
CN109240721A (zh) * 2018-08-24 2019-01-18 江苏恒宝智能***技术有限公司 一种mcu在线升级的方法
CN110427195B (zh) * 2019-07-17 2023-06-30 陕西千山航空电子有限责任公司 一种程序加载校验算法
CN110427195A (zh) * 2019-07-17 2019-11-08 陕西千山航空电子有限责任公司 一种程序加载校验算法
CN111124461A (zh) * 2019-12-12 2020-05-08 青岛海尔科技有限公司 用于单片机ota升级的方法、装置和单片机
CN111124461B (zh) * 2019-12-12 2023-08-18 青岛海尔科技有限公司 用于单片机ota升级的方法、装置和单片机
CN111930408A (zh) * 2020-06-29 2020-11-13 东风电驱动***有限公司 一种软件升级方法
CN112104721A (zh) * 2020-09-02 2020-12-18 青岛创新控制技术有限公司 一种ota远程升级文件下载方法
CN112527342A (zh) * 2020-09-23 2021-03-19 深圳市银星智能科技股份有限公司 一种在应用可编程iap固件升级方法、装置和设备
CN112560042A (zh) * 2020-11-25 2021-03-26 北京交大微联科技有限公司 用于计算机联锁***的数据配置方法及装置
CN112579128A (zh) * 2020-12-23 2021-03-30 恒为科技(上海)股份有限公司 一种数据处理方法、上位机、单片机及***
CN112579128B (zh) * 2020-12-23 2023-05-09 恒为科技(上海)股份有限公司 一种数据处理方法、上位机、单片机及***
CN113791808A (zh) * 2021-10-20 2021-12-14 守卫者(杭州)科技有限公司 底层程序升级方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN103473088B (zh) 2018-01-02

Similar Documents

Publication Publication Date Title
CN103473088A (zh) 一种单片机在线升级方法和***
CN105706059B (zh) 非易失性存储器中的错误校正
CN114328316B (zh) Dma控制器、soc***及基于dma控制器的数据搬运方法
CN110413439B (zh) 用于检测数据的不完整写入的方法、设备和计算机可读介质
CN109284117A (zh) 基于闪存微控制器的固件升级方法和***及闪存微控制器
CN101477481A (zh) 一种自动纠错***及方法
CN104461641A (zh) 一种数据烧写方法、***、烧写设备以及目标设备
US9129137B2 (en) Method, computer program and device for providing security for intermediate programming code for its execution by a virtual machine
CN101957765A (zh) 一种实现设备固件更新的方法及***、设备
CN113778822A (zh) 纠错能力测试方法、装置、可读存储介质及电子设备
CN106851625A (zh) 一种蓝牙产品ota升级方法
US20180074703A1 (en) Index management in a flash memory
CN107844305A (zh) 嵌入式设备的软件升级方法及嵌入式设备
CN111159055B (zh) 用来进行主装置与记忆装置之间的存取控制的方法及设备
CN114356680A (zh) 验证方法、装置及电子设备
CN111143240B (zh) 图像存储方法、***及终端设备
CN103985410B (zh) 一种存储装置及用于存储装置的数据访问方法
CN105354107A (zh) NOR Flash的数据传输方法及***
EP3067795A1 (en) A method for generating an embedded system derivable into a plurality of personalized embedded system
CN109582334A (zh) 可编程逻辑器件的升级方法及装置
CN103294837A (zh) 一种集成电路的验证调试方法及***
CN115129509A (zh) 一种数据传输方法、装置、介质
CN109800565A (zh) 软件升级方法及终端设备
CN114116337A (zh) 基于pcie链路配置的硬盘测试方法、***、终端及存储介质
CN106484477B (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
CB02 Change of applicant information

Address after: 100123 Beijing city Chaoyang District High Road No. 8 well culture Dongyi international media industry park three floor C seat

Applicant after: BEIJING CHINA TSP TECHNOLOGY CO., LTD.

Address before: 100025, building 8, building 88, East Fourth Ring Road, Chaoyang District, Beijing

Applicant before: Beijing China TSP Co., Ltd.

COR Change of bibliographic data
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20211224

Address after: 401120 No.3, Tonggui Avenue, Yufengshan Town, Yubei District, Chongqing

Patentee after: Beidou Xingtong Zhilian Technology Co.,Ltd.

Address before: 100123 auxiliary building, block C, phase III, Dongyi International Media Industrial Park, No. 8, Gaojing Wenhua Park Road, Chaoyang District, Beijing

Patentee before: BEIJING CHINA TSP TECHNOLOGY Co.,Ltd.

TR01 Transfer of patent right