CN111273937B - 一种基于stm32f746处理器的远程升级方法 - Google Patents
一种基于stm32f746处理器的远程升级方法 Download PDFInfo
- Publication number
- CN111273937B CN111273937B CN202010056030.XA CN202010056030A CN111273937B CN 111273937 B CN111273937 B CN 111273937B CN 202010056030 A CN202010056030 A CN 202010056030A CN 111273937 B CN111273937 B CN 111273937B
- Authority
- CN
- China
- Prior art keywords
- file
- application program
- entering
- data
- remote
- 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.)
- Active
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
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
-
- 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
-
- 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/1441—Resetting or repowering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及电数字数据处理领域,本发明公开了一种基于STM32F746处理器的远程升级方法,将程序存储器划分为4个区域,分别为引导区、运行区、备份区和系统变量区,引导区用于存放bootloader程序,完成应用程序的搬移和启动引导;运行区用于存放真正运行的user application程序,完成远程升级文件传输和处理,并将远程升级文件存储到备份区;备份区用于存放远程升级传输的新版本user application程序;系统变量区用于存放系统变量。通过本发明的远程升级方法实现的远程升级功能,可以在不影响系统整体功能的情况下,完成应用程序的远程传输,即便传输过程中由于人为或非人为因素造成传输中断,依然可保证设备在下次上电后正常运行,需要升级应用程序重新启动远程数据传输即可。
Description
技术领域
本发明涉及电数字数据处理领域,尤其涉及一种基于STM32F746处理器的远程升级方法。
背景技术
STM32F7系列产品由于其低功耗、低成本、高性能、易于使用、可扩展性强等优点被广泛使用于工业控制领域,通常用户在使用过程中,由于系统软件本身bug、客户需求变更等原因,不可避免需要对目标板应用程序进行更新,因此,需要一种更方便、快速、安全有效的软件远程加载机制来提高软件升级的效率。
目前STM32F7系列产品在远程升级过程中通常采用IAP技术对应用程序进行更新。IAP的原理是将程序存储器划分为两个区域,区域1使用专用程序下载器烧录特定的bootloader程序,完成应用程序数据的接收和存储功能;区域2存放真正的项目代码userapplication,区域2的代码通过区域1进行更改。该方法的缺点为当远程升级过程中由于非正常或人为原因引发设备掉电或通信中断时,应用程序的接收和存储过程被打断,下次上电后应用程序无法退回到升级前的状态启动运行,只能依靠再次远程升级或返厂维修的方式将应用程序成功烧写到设备才能启动运行,对升级时环境和维修人员专业能力要求极高。
发明内容
为了解决上述问题,本发明提出一种基于STM32F746处理器的远程升级方法,这种升级方法可以在不影响当前系统功能的情况下,完成应用程序的远程传输,即使在传输过程中由于人为或非人为因素造成传输中断,依然在下次上电时可保证设备正常运行,需要升级应用程序重新启动远程数据传输即可。
本发明提出的一种基于STM32F746处理器的远程升级方法包括:
程序存储器重新分区:将程序存储器划分为4个区域,分别为引导区、运行区、备份区和系统变量区,所述引导区用于存放bootloader程序,完成应用程序的搬移和启动引导;所述运行区用于存放真正运行的user application程序,完成远程升级文件传输和处理,并将所述远程升级文件存储到所述备份区;所述备份区用于存放远程升级传输的新版本user application程序;所述系统变量区用于存放系统变量;
应用程序远程升级:在应用程序进行远程升级时,只有当远程传输成功且数据存储到所述备份区后,在下次上电后才会通过bootloader程序的搬移和启动引导处理完成应用程序的升级,否则下次上电后依然会运行升级前的应用程序。
进一步的,所述系统变量包括软件更新标识、版本号和文件总大小。
进一步的,STM32F746处理器的运行流程包括以下步骤:
S16.STM32F746处理器启动后,首先从0x8000 0004处获取复位中断向量的地址并跳转到复位中断服务程序,执行完复位中断服务程序后跳转至main函数处开始执行;
S17.在main函数中根据软件更新标识是否有效执行应用程序目标文件的搬移,处理完成后根据user application程序偏移量跳转到user application程序的复位向量表;
S18.取出user application程序的复位中断地址,跳转至新的复位中断服务程序,执行完成后跳转至user application的main函数;
S19.在user application的main函数的运行过程中,如果接收到任一中断请求,PC指针仍强制跳转到0x8000 0004处,然后再根据预先设置的user application程序偏移量跳转到相应中断源的中断服务程序执行;
S110.执行完相应中断服务程序后,返回到user application的main函数处继续运行。
进一步的,每个数据包在传输过程中采用CRC8完成数据校验,整个远程升级文件在传输过程中采用CRC16完成文件校验。
进一步的,远程升级文件传输过程中采用连续循环滚动序号的方式进行发送:首次发起文件传输请求时,序号为0,user application接收到文件传输请求后回复序号为0的应答,开始文件传输;文件传输过程中,序号依次从1到255循环递增,user application接收端按预计序号从1~255递增的方式进行同步识别和接收,当接收到得序号与预期序号不一致时,回复文件传输错误应答;当接收到得序号与预期序号一致,回复文件传输正确应答。
进一步的,bootloader程序的运行流程包括以下步骤:
S27.系统时钟和GPIO初始化;
S28.读取所述系统变量区中软件更新标识检查是否需要对user application进行更新;
S29.不需要更新则跳转到步骤S26;
S210.需要更新,擦除所述运行区中扇区1、2和3的内容,读取所述系统变量区软件总大小,并将所述备份区中目标程序文件根据文件总大小按字节依次搬移到所述运行区;
S211.所述系统变量区中软件更新标识置为无效;
S212.跳转到所述运行区执行user application应用程序。
进一步的,user application程序启动后,主要完成初始化、工作模式状态切换、网络数据接收、应用程序文件处理和存储,所述工作模式状态切换包括以下步骤:
S38.系统时钟、GPIO接口、网络芯片、软件任务和系统变量初始化完成后,进入运行模式;
S39.接收上位机发送的维护模式控制命令,进入维护模式;
S310.接收上位机发送的数据加载控制命令,进入数据加载模式,开始远程升级;
S311.接收上位机发送的文件传输请求和文件数据完成应用程序的更新;
S312.接收上位机发送的退出加载指令,返回维护模式;
S313.接收上位机发送的退出维护模式指令进行软件复位;
S314.从0x8000 0004地址处启动运行bootloader应用程序,完成应用程序文件的搬移,随后启动运行升级后的user application应用程序,返回步骤S31。
进一步的,所述步骤S34中,应用程序的更新包括网络数据接收过程和文件数据处理过程,所述网络数据接收过程主要完成远程升级过程中对数据包正确性的判别,所述文件数据处理主过程主要完成远程升级过程中文件的接收和存储。
进一步的,所述网络数据接收过程包括以下步骤:
S410.接收网络报文,并将其存储到全局变量update_rev_data中;
S411.数据报文头是否为0x55、0xAA或0xEE,是则进入步骤S43,否则进入步骤S49;
S412.计算数据报文总长度,总长度是否大于最大数据报文长度512,是则进入步骤S49,否则进入步骤S44;
S413.数据报文总长度跟实际接收到得数据报文长度是否一致,是则进入步骤S45,否则进入步骤S49;
S414.计算数据报文总的CRC8值,判断计算出来的CRC8值与数据报文中实际的CRC8值是否一致,是则进入步骤S46,否则进入步骤S49;
S415.如果接收到得数据报文头为0x55,序号为0x0,判断报文中文件名称长度字段数值与实际接收到的文件名称长度是否一致,是则进入步骤S47,否则进入步骤S49;
S416.如果接收到得数据报文头为0xEE,判断报文中错误原因长度字段数值与实际接收到的错误原因长度是否一致,是则进入步骤S48,否则进入步骤S49;
S417.将接收数据报文有效标识置为1;
S418.退出网络接收处理函数。
进一步的,所述文件数据处理过程包括以下步骤:
S513.判断接收数据报文有效标识是否为1,是则表示接收缓存区接收到正确的数据报文进入步骤S52,否则进入步骤S512;
S514.当前是否有文件在传输,无则进入步骤S53,有则进入步骤S56;
S515.判断数据报文是否满足数据头为0x55,序号为0x0,文件名为zau_app.bin,若满足则进入步骤S54,否则进入步骤S55;
S516.擦除所述备份区FLASH扇区内容,发送允许文件传输应答,并跳转至步骤S512;
S517.发送文件名称不符,不允许文件传输的错误应答,并跳转至步骤S512;
S518.判断接收到得帧序号与预计帧序号是否一致,是则进入步骤S57,否则进入步骤S511;
S519.保存文件数据到所述备份区,计算传输文件数据的累加CRC16值,发送文件数据接收成功应答;处理完成后,判断当前是否为文件尾,是则进入步骤S58,否则进入步骤S512;
S520.累计CRC16值与文件请求报文中的CRC16值是否一致,一致进入步骤S59,不一致进入步骤S510;
S521.文件传输完成,将所述系统变量区中软件更新标识置为有效,并存储软件版本号标识,处理完成后跳转至步骤S512;
S522.文件总校验失败,发送文件更新失败应答,跳转至步骤S512;
S523.帧序号不连续,发送文件传输错误应答,跳转至步骤S512;
S524.退出文件处理函数继续等待新的网络数据。
本发明的有益效果在于:通过本发明的远程升级方法实现的远程升级功能,可以在不影响系统整体功能的情况下,完成应用程序的远程传输,即便传输过程中由于人为或非人为因素造成传输中断,依然可保证设备在下次上电后正常运行,需要升级应用程序重新启动远程数据传输即可。同时在数据传输过程中对每包数据采用CRC8正向校验的方式进行正确性判别,使用约定数据传输顺序和CRC16正向校验的方式对整个文件进行正确性判别,大大提高了升级的可靠性。
附图说明
图1为本发明的系统架构框图;
图2为工作模式状态转换图;
图3为STM32F46运行过程图;
图4为bootloader程序的软件实现流程图;
图5为网络接收流程图;
图6为文件处理流程图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现说明本发明的具体实施方式。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,即所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本实施例提供了一种基于STM32F746处理器的远程升级方法,用于远程升级方法的系统由在线升级上位机服务器和基于STM32F746 MCU的客户端设备组成(如图1所示),上位机服务器负责整机系统工作模式的切换和文件传输,客户端设备负责文件的接收和程序更新。整机系统的工作模式状态转换关系如图2所示,设备上电后进入初始化模式,完成硬件接口、系统时钟、软件任务、系统变量等初始化,初始化完成后进入运行模式。当需要远程升级客户端设备应用程序时,首先发送维护命令进入系统维护模式,然后发送数据加载指令进入数据加载模式,在加载模式中完成应用程序传输和存储。应用程序升级完成后,发送退出加载命令,客户端设备进入维护模式。当需要设备正常工作时,发送退出维护模式指令,设备进行软件复位,在启动阶段完成应用程序的替换,然后进入初始化模式启动运行。
1.程序架构
STM32F746远程升级需要实现两个项目程序,一个程序只用来实现应用程序的搬移和启动引导,称为bootloader(引导加载程序);另一个程序用来实现客户端应用的全部功能,包括工作模式状态转换、网络接收目标程序文件、擦写存储器、软件重启等,称为userapplication(用户应用程序)。这两部分程序都存储在STM32F746内部FLASH存储器中。
Bootloader和user application程序首次必须通过专用的程序下载器或程序仿真器(JTAG/ST-Link等)连接到目标板的调试接口,并通过keil公司研发的PC端软件完成烧写。烧写完成后bootloader程序作为默认出厂程序保持不变,后续需要更新应用程序可通过在线升级上位机软件升级user application应用程序即可完成系统应用的更新。
2.STM32F746存储器的划分
STM32F746为大容量产品,具有1MB FLASH,320KB SDRAM。FLASH分为主存储块和信息块,主存储块分为4个32KB扇区、1个128KB扇区和3个256KB扇区,信息块包括系统存储器、1024字节OTP(一次性可编程)和选项字节。FLASH支持字节、半字、字和双字数据写入,扇区擦除与全部擦除。
远程升级过程将STM32F746芯片的FLASH区划分为4个部分,第一个部分用来存储bootloader(引导加载程序),称为引导区,第二个部分用来存储user application(用户应用程序),称为运行区,第三个部分用来存储上位机服务器远程传送的客户端设备应用程序文件,称为备份区,第四部分用来存储系统全局变量(如软件更新标识、版本号、文件总大小等)称为系统变量区。FLASH的构成和区域划分情况见表1。
表1 FLASH构成和区域划分
3.STM32F746运行流程
STM32F746程序启动后首先执行bootloader程序,执行完成后在bootloader的main函数中启动引导user application程序,具体运行流程如下:
a)STM32F746程序启动后,首先从0x8000 0004处获取复位中断向量的地址并跳转到复位中断服务程序,执行完复位中断服务程序后跳转至main函数处开始执行,如图3中的标号①。
b)在main函数中根据软件更新标识是否有效执行应用程序目标文件的搬移,处理完成后根据user application程序偏移量跳转到user application程序的复位向量表,如图3中的标号②;
c)然后取出user application程序的复位中断地址,跳转至新的复位中断服务程序,执行完成后跳转至user application的main函数,如图3中的标号③;
d)在user application main函数的运行过程中,如果接收到任一中断请求,PC指针仍强制跳转到0x8000 0004处,如图3中标号④。然后再根据预先设置的userapplication程序偏移量跳转到相应中断源的中断服务程序执行,如图3标号⑤。
e)执行完相应中断服务程序后,返回到user application main函数处继续运行,如图3标号⑥。
4.文件传输协议
为了保证user application应用程序远程升级过程中数据传输的可靠性,每个数据包在传输过程中都采用了CRC8完成数据校验,整个文件在传输过程中采用了CRC16完成文件校验。另外为了保证文件传输的连续性,文件传输过程中采用连续循环滚动序号的方式进行发送,首次发起文件传输请求时,序号为0,user application接收到文件传输请求后回复序号为0的应答,开始文件传输。文件传输过程中,序号依次从1到255循环递增,userapplication接收端按预计序号从1~255递增的方式进行同步识别和接收,当接收到得序号与预期序号不一致时,回复文件传输错误应答;当接收到得序号与预期序号一致,回复文件传输正确应答。远程文件传输请求数据格式定义见表2和表3,文件传输数据格式定义见表4,传输应答数据格式定义表5。
表2文件请求数据格式定义
表3文件请求数据段(N字节)数据定义
表4文件传输数据格式定义
表5应答数据格式定义
5.Bootloader实现过程
芯片上电后,首先bootloader程序启动运行,bootloader程序的软件实现流程如图4所示,主要完成以下操作:
a)系统时钟和GPIO初始化;
b)读取系统变量区中软件更新标识检查是否需要对user application进行更新;
c)不需要更新则跳转到f);
d)需要更新,擦除FLASH运行区扇区1、2和3的内容,读取系统变量区软件总大小,并将备份区中目标程序文件根据文件总大小按字节依次搬移到运行区;
e)系统变量区中软件更新标识置为无效;
f)跳转到运行区执行user application应用程序。
6.User application实现过程
user application程序启动后,主要完成初始化、工作模式状态切换、网络数据接收、应用程序文件处理和存储。
工作模式状态转换过程如图2所示,由远程升级上位机软件发送网络控制数据完成状态切换。远程升级状态转换具体过程如下:
a)系统时钟、GPIO接口、网络芯片、软件任务、系统变量初始化完成后,进入运行模式;
b)接收上位机发送的维护模式控制命令,进入维护模式;
c)接收上位机发送的数据加载控制命令,进入数据加载模式,开始远程升级;
d)接收上位机发送的文件传输请求和文件数据完成应用程序的更新;
e)接收上位机发送的退出加载指令,返回维护模式;
f)接收上位机发送的退出维护模式指令进行软件复位;
g)从0x8000 0004地址处启动运行bootloader应用程序,完成应用程序文件的搬移,随后启动运行升级后的user application应用程序,返回步骤a)。
切换到数据加载模式后进行应用程序的更新主要由网络数据接收过程和文件数据处理过程两部分组成。网络数据接收过程如图5所示,主要完成远程升级过程中对数据包正确性的判别。具体实现流程如下:
a)接收网络报文,并将其存储到全局变量update_rev_data中;
b)数据报文头是否为0x55、0xAA或0xEE,是则进入步骤c),否则进入步骤i);
c)计算数据报文总长度,总长度是否大于最大数据报文长度512,是则进入步骤i),否则进入步骤d);
d)数据报文总长度跟实际接收到得数据报文长度是否一致,是则进入步骤e),否则进入步骤i);
e)计算数据报文总的CRC8值,判断计算出来的CRC8值与数据报文中实际的CRC8值是否一致,是则进入步骤f),否则进入步骤i);
f)如果接收到得数据报文头为0x55,序号为0x0,判断报文中文件名称长度字段数值与实际接收到的文件名称长度是否一致,是则进入步骤g),否则进入步骤i);
g)如果接收到得数据报文头为0xEE,判断报文中错误原因长度字段数值与实际接收到的错误原因长度是否一致,是则进入步骤h),否则进入步骤i);
h)将接收数据报文有效标识置为1;
i)退出网络接收处理函数。
文件数据处理过程如图6所示,主要完成远程升级过程中文件的接收和存储。
具体实现流程如下:
a)判断接收数据报文有效标识是否为1,是则表示接收缓存区接收到正确的数据报文进入步骤b),否则进入步骤l);
b)当前是否有文件在传输,无则进入步骤c),有则进入步骤f);
c)判断数据报文中数据头为0x55,序号为0x0,文件名为zau_app.bin吗?是则进入步骤d),否则进入步骤e);
d)擦除备份区FLASH扇区内容,发送允许文件传输应答,并跳转至步骤l);
e)发送文件名称不符,不允许文件传输的错误应答,并跳转至步骤l);
f)判断接收到得帧序号与预计帧序号是否一致,是则进入步骤g),否则进入步骤K);
g)保存文件数据到备份区,计算传输文件数据的累加CRC16值,发送文件数据接收成功应答。处理完成后,判断当前是否为文件尾,是则进入步骤h),否则进入步骤l);
h)累计CRC16值与文件请求报文中的CRC16值是否一致,一致进入步骤i),
不一致进入步骤j);
i)文件传输完成,将系统变量区中软件更新标识置为有效,并存储软件版本号标识,处理完成后跳转至步骤l);
j)文件总校验失败,发送文件更新失败应答,跳转至步骤l);
k)帧序号不连续,发送文件传输错误应答,跳转至步骤l);
l)退出文件处理函数继续等待新的网络数据。
以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
Claims (6)
1.一种基于STM32F746处理器的远程升级方法,其特征在于,包括:
程序存储器重新分区:将程序存储器划分为4个区域,分别为引导区、运行区、备份区和系统变量区,所述引导区用于存放bootloader程序,完成应用程序的搬移和启动引导;所述运行区用于存放真正运行的user application程序,完成远程升级文件传输和处理,并将所述远程升级文件存储到所述备份区;所述备份区用于存放远程升级传输的新版本userapplication程序;所述系统变量区用于存放系统变量;
应用程序远程升级:在应用程序进行远程升级时,只有当远程传输成功且数据存储到所述备份区后,在下次上电后才会通过bootloader程序的搬移和启动引导处理完成应用程序的升级,否则下次上电后依然会运行升级前的应用程序;
STM32F746处理器的运行流程包括以下步骤:
S11.STM32F746处理器启动后,首先从0x8000 0004处获取复位中断向量的地址并跳转到复位中断服务程序,执行完复位中断服务程序后跳转至main函数处开始执行;
S12.在main函数中根据软件更新标识是否有效执行应用程序目标文件的搬移,处理完成后根据user application程序偏移量跳转到user application程序的复位向量表;
S13.取出user application程序的复位中断地址,跳转至新的复位中断服务程序,执行完成后跳转至user application的main函数;
S14.在user application的main函数的运行过程中,如果接收到任一中断请求,PC指针仍强制跳转到0x8000 0004处,然后再根据预先设置的user application程序偏移量跳转到相应中断源的中断服务程序执行;
S15.执行完相应中断服务程序后,返回到user application的main函数处继续运行;
步骤S34中,应用程序的更新包括网络数据接收过程和文件数据处理过程,所述网络数据接收过程主要完成远程升级过程中对数据包正确性的判别,所述文件数据处理主过程主要完成远程升级过程中文件的接收和存储;
所述网络数据接收过程包括以下步骤:
S41.接收网络报文,并将其存储到全局变量update_rev_data中;
S42.数据报文头是否为0x55、0xAA或0xEE,是则进入步骤S43,否则进入步骤S49;
S43.计算数据报文总长度,总长度是否大于最大数据报文长度512,是则进入步骤S49,否则进入步骤S44;
S44.数据报文总长度跟实际接收到得数据报文长度是否一致,是则进入步骤S45,否则进入步骤S49;
S45.计算数据报文总的CRC8值,判断计算出来的CRC8值与数据报文中实际的CRC8值是否一致,是则进入步骤S46,否则进入步骤S49;
S46.如果接收到得数据报文头为0x55,序号为0x0,判断报文中文件名称长度字段数值与实际接收到的文件名称长度是否一致,是则进入步骤S47,否则进入步骤S49;
S47.如果接收到得数据报文头为0xEE,判断报文中错误原因长度字段数值与实际接收到的错误原因长度是否一致,是则进入步骤S48,否则进入步骤S49;
S48.将接收数据报文有效标识置为1;
S49.退出网络接收处理函数;
所述文件数据处理过程包括以下步骤:
S51.判断接收数据报文有效标识是否为1,是则表示接收缓存区接收到正确的数据报文进入步骤S52,否则进入步骤S512;
S52.当前是否有文件在传输,无则进入步骤S53,有则进入步骤S56;
S53.判断数据报文是否满足数据头为0x55,序号为0x0,文件名为zau_app.bin,若满足则进入步骤S54,否则进入步骤S55;
S54.擦除所述备份区FLASH扇区内容,发送允许文件传输应答,并跳转至步骤S512;
S55.发送文件名称不符,不允许文件传输的错误应答,并跳转至步骤S512;
S56.判断接收到得帧序号与预计帧序号是否一致,是则进入步骤S57,否则进入步骤S511;
S57.保存文件数据到所述备份区,计算传输文件数据的累加CRC16值,发送文件数据接收成功应答;处理完成后,判断当前是否为文件尾,是则进入步骤S58,否则进入步骤S512;
S58.累计CRC16值与文件请求报文中的CRC16值是否一致,一致进入步骤S59,不一致进入步骤S510;
S59.文件传输完成,将所述系统变量区中软件更新标识置为有效,并存储软件版本号标识,处理完成后跳转至步骤S512;
S510.文件总校验失败,发送文件更新失败应答,跳转至步骤S512;
S511.帧序号不连续,发送文件传输错误应答,跳转至步骤S512;
退出文件处理函数继续等待新的网络数据。
2.根据权利要求1所述的一种基于STM32F746处理器的远程升级方法,其特征在于,所述系统变量包括软件更新标识、版本号和文件总大小。
3.根据权利要求1所述的一种基于STM32F746处理器的远程升级方法,其特征在于,每个数据包在传输过程中采用CRC8完成数据校验,整个远程升级文件在传输过程中采用CRC16完成文件校验。
4.根据权利要求1所述的一种基于STM32F746处理器的远程升级方法,其特征在于,远程升级文件传输过程中采用连续循环滚动序号的方式进行发送:首次发起文件传输请求时,序号为0,user application接收到文件传输请求后回复序号为0的应答,开始文件传输;文件传输过程中,序号依次从1到255循环递增,user application接收端按预计序号从1~255递增的方式进行同步识别和接收,当接收到得序号与预期序号不一致时,回复文件传输错误应答;当接收到得序号与预期序号一致,回复文件传输正确应答。
5.根据权利要求2所述的一种基于STM32F746处理器的远程升级方法,其特征在于,bootloader程序的运行流程包括以下步骤:
S21.系统时钟和GPIO初始化;
S22.读取所述系统变量区中软件更新标识检查是否需要对user application进行更新;
S23.不需要更新则跳转到步骤S26;
S24.需要更新,擦除所述运行区中扇区1、2和3的内容,读取所述系统变量区软件总大小,并将所述备份区中目标程序文件根据文件总大小按字节依次搬移到所述运行区;
S25.所述系统变量区中软件更新标识置为无效;
S26.跳转到所述运行区执行user application应用程序。
6.根据权利要求1所述的一种基于STM32F746处理器的远程升级方法,其特征在于,user application程序启动后,主要完成初始化、工作模式状态切换、网络数据接收、应用程序文件处理和存储,所述工作模式状态切换包括以下步骤:
S31.系统时钟、GPIO接口、网络芯片、软件任务和系统变量初始化完成后,进入运行模式;
S32.接收上位机发送的维护模式控制命令,进入维护模式;
S33.接收上位机发送的数据加载控制命令,进入数据加载模式,开始远程升级;
S34.接收上位机发送的文件传输请求和文件数据完成应用程序的更新;
S35.接收上位机发送的退出加载指令,返回维护模式;
S36.接收上位机发送的退出维护模式指令进行软件复位;
S37.从0x8000 0004地址处启动运行bootloader应用程序,完成应用程序文件的搬移,随后启动运行升级后的user application应用程序,返回步骤S31。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010056030.XA CN111273937B (zh) | 2020-01-18 | 2020-01-18 | 一种基于stm32f746处理器的远程升级方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010056030.XA CN111273937B (zh) | 2020-01-18 | 2020-01-18 | 一种基于stm32f746处理器的远程升级方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111273937A CN111273937A (zh) | 2020-06-12 |
CN111273937B true CN111273937B (zh) | 2023-04-07 |
Family
ID=71003030
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010056030.XA Active CN111273937B (zh) | 2020-01-18 | 2020-01-18 | 一种基于stm32f746处理器的远程升级方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111273937B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112104501A (zh) * | 2020-09-16 | 2020-12-18 | 山东省计算中心(国家超级计算济南中心) | 一种农机深松物联网终端设备的软件远程升级的方法 |
CN112152846B (zh) * | 2020-09-18 | 2023-04-18 | 重庆神缘智能科技有限公司 | 一种基于物联网的计量仪表远程升级方法 |
CN112241161A (zh) * | 2020-10-22 | 2021-01-19 | 贝思特门机(嘉兴)有限公司 | 一种门机控制器软件升级方式 |
CN112527371B (zh) * | 2020-12-17 | 2024-06-04 | 杭州海康威视数字技术股份有限公司 | 一种引导加载程序升级方法、装置、电子设备及存储介质 |
CN112860301B (zh) * | 2021-01-12 | 2022-08-16 | 明见(厦门)软件开发有限公司 | 一种app使用bootloader中断函数的方法及单片机 |
CN113031991B (zh) * | 2021-04-13 | 2023-11-17 | 南京大学 | 一种嵌入式系统的远程自适应升级方法及其装置 |
CN113918202B (zh) * | 2021-09-16 | 2024-07-16 | 海南云智联科技有限公司 | 一种支持iap功能的单片机远程升级固件的方法与设备 |
CN114281375A (zh) * | 2021-12-03 | 2022-04-05 | 航天科技控股集团股份有限公司 | 一种具有断点续传功能的汽车仪表程序在线升级的方法 |
CN114442766A (zh) * | 2021-12-24 | 2022-05-06 | 曙光信息产业股份有限公司 | 散热系统、方法和单片机 |
CN114816460A (zh) * | 2022-06-29 | 2022-07-29 | 上海捷勃特机器人有限公司 | 一种机器人系统远程升级微控制器的装置及其方法 |
CN117707567A (zh) * | 2023-11-06 | 2024-03-15 | 上海联适导航技术股份有限公司 | 一种mcu固件完整性识别方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8051467B2 (en) * | 2008-08-26 | 2011-11-01 | Atmel Corporation | Secure information processing |
CN102236581B (zh) * | 2010-04-30 | 2013-08-14 | 国际商业机器公司 | 用于数据中心的映射化简方法和系统 |
CN108279910B (zh) * | 2018-01-17 | 2021-04-13 | 珠海市杰理科技股份有限公司 | 程序代码烧写方法、装置、计算机设备和存储介质 |
CN108415718B (zh) * | 2018-03-28 | 2021-06-08 | 南京理工大学 | 一种应用于星载软件在线更新的BootLoader设计方法 |
CN109240730B (zh) * | 2018-08-29 | 2021-10-08 | 武汉光迅科技股份有限公司 | 一种单片机在线升级方法和系统 |
CN109871223A (zh) * | 2019-01-17 | 2019-06-11 | 南京品畅科技发展有限公司 | 一种基于stm32单片机的IAP方法及系统 |
CN110134415A (zh) * | 2019-04-12 | 2019-08-16 | 深圳市致宸信息科技有限公司 | 一种控制器及其软件升级方法和装置 |
-
2020
- 2020-01-18 CN CN202010056030.XA patent/CN111273937B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111273937A (zh) | 2020-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111273937B (zh) | 一种基于stm32f746处理器的远程升级方法 | |
US7322029B2 (en) | Method and system for recovering program code in a computer system | |
EP3080693B1 (en) | Devices, updaters, methods for controlling a device, and methods for controlling an updater | |
WO2020124958A1 (zh) | 固件升级方法、装置及计算机可读存储介质 | |
CN102364430B (zh) | 支持一次性可编程存储器多次编程的微控制器和编程方法 | |
CN112152846B (zh) | 一种基于物联网的计量仪表远程升级方法 | |
CN110321170B (zh) | 开机方法 | |
CN109189434A (zh) | 一种电能表的在线升级方法 | |
CN111562933A (zh) | 一种空调升级方法以及空调系统 | |
JP3824580B2 (ja) | 移動通信携帯端末及びダウンロードプログラムファイル管理用プログラム | |
CN113741933B (zh) | 控制器的远程升级方法、控制器及系统 | |
WO2012071852A1 (zh) | 引导程序的升级方法和装置 | |
CN101872306B (zh) | 一种实现软件更新和软件备份的嵌入式系统及其实现方法 | |
CN103092659A (zh) | 脱离仿真器支持环境的dsp软件升级系统及其升级方法 | |
CN110096290A (zh) | 一种电池模拟器主控板软件升级方法 | |
CN113110860A (zh) | 一种嵌入式终端远程软件更新方法 | |
CN114840242A (zh) | 一种电子设备的系统升级方法、装置及可读存储介质 | |
TW202009696A (zh) | 用於更新系統之rom編碼之電腦實施方法、電腦系統以及電腦可讀取媒體 | |
CN110362323B (zh) | 基于分布式自组网的嵌入式终端设备程序更新方法 | |
CN108182079A (zh) | 一种基于串口的tms320c6748程序加载方法 | |
CN102681819B (zh) | 实现灵活且低成本的指令替换方法及装置 | |
CN109426511A (zh) | 软核更新方法和系统 | |
CN110377303A (zh) | 基于备用存储区方式升级程序的方法及其设备 | |
CN115145228A (zh) | 过程控制系统、过程控制装置以及程序更新方法 | |
CN107562440A (zh) | 一种eeprom版本更新方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB03 | Change of inventor or designer information |
Inventor after: Wu Jun Inventor after: Lu Xiaoxia Inventor after: Zhu Zhengyan Inventor before: Lu Xiaoxia Inventor before: Wu Jun Inventor before: Deng Yulong |
|
CB03 | Change of inventor or designer information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |