CN115599417A - 电子设备的mcu固件更新方法 - Google Patents
电子设备的mcu固件更新方法 Download PDFInfo
- Publication number
- CN115599417A CN115599417A CN202211274813.0A CN202211274813A CN115599417A CN 115599417 A CN115599417 A CN 115599417A CN 202211274813 A CN202211274813 A CN 202211274813A CN 115599417 A CN115599417 A CN 115599417A
- Authority
- CN
- China
- Prior art keywords
- mcu
- firmware
- storage area
- stored
- area
- 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)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种电子设备的MCU固件更新方法,其包括:步骤10、MCU上电运行,首先运行启动加载区域所存储的代码,确认第一存储区域中所存储内容的完整性,如果没问题,就跳转到第一存储区域中,执行MCU的初始固件;步骤20、当MCU收到固件更新软件发送的更新固件请求,开始搬迁第一存储区域所存储的初始固件到第二存储区域,并确保搬迁成功;步骤30、搬迁成功后,跳转到第二存储区域中,执行所存储的MCU的初始固件,并继续执行固件更新;步骤40、MCU通过数据总线接受主机发送的数据以更新第一存储区域所存储的初始固件;步骤50、固件更新完成后,重启MCU。本发明能够灵活、方便实现软件更新MCU固件。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种电子设备的MCU固件更新方法。
背景技术
目前,市面上种类繁多的电子设备大都含有MCU(微控制单元),但是由于设备功能升级、bug修复等原因,经常需要对设备上的MCU的固件程序进行升级。通常的MCU固件升级方法主要采用烧录器烧录的方式。但是,烧录器烧录的方式需要烧录器与板载烧录接口硬连接,需要专用烧录设备,且通常需要拆机、逐台烧录,对于大批量布放的设备,升级成本较大。
以国产的GD32系列芯片来说,其为兆易创新公司发布的国产MCU,目前在国产化有着越来越广泛的应用。目前GD32系列MCU的固件更新依赖jlink硬件直连的方式。这种方式使用场景受限,必须拆机连接jlink烧录器烧录固件,终端客户上很难上手操作。所以当前GD32系列MCU缺乏灵活的、方便的软件更新固件的方法。
发明内容
因此,本发明的目的在于提供一种电子设备的MCU固件更新方法,能够软件更新MCU固件。
为实现上述目的,本发明提供了一种电子设备的MCU固件更新方法,提供电子设备,所述电子设备的需要进行固件更新的板载MCU通过通讯总线与运行有固件更新软件的主机的CPU通讯连接,所述MCU的闪存包括启动加载区域、第一存储区域及第二存储区域,所述第一存储区域存储有所述MCU的初始固件;
当进行固件更新时包括步骤:
步骤10、所述MCU上电运行,首先运行启动加载区域所存储的代码,校验第一存储区域中的内容,确认第一存储区域中所存储内容的完整性,如果没问题,就跳转到第一存储区域中,执行所存储的MCU的初始固件;
步骤20、当所述MCU通过数据总线收到所述固件更新软件通过CPU发送的更新固件请求,MCU开始搬迁第一存储区域所存储的初始固件到第二存储区域,并判断所述第一存储区域和第二存储区域中所存储的初始固件是否一致,以确定是否搬迁成功;
步骤30、搬迁成功后,跳转到第二存储区域中,执行所存储的MCU的初始固件,并继续根据来自固件更新软件的更新固件请求执行固件更新;
步骤40、所述MCU通过数据总线接受所述主机发送的数据以更新第一存储区域所存储的MCU的初始固件;
步骤50、当固件更新完成后,重启MCU。
所述电子设备的MCU固件更新方法还包括:
步骤60、所述MCU重启后,执行所述步骤10,如果此时校验到第一存储区域所存储内容不完整,认为刷写失败,则搬迁第二存储区域所存储的MCU的初始固件到第一存储区域内。
所述电子设备的MCU固件更新方法还包括步骤15:所述MCU判断通过所述数据总线收到的数据是否为所述固件更新软件通过CPU发送的更新固件请求,当判断为是时则执行步骤20,否则继续执行第一存储区域中所存储的MCU的初始固件。
所述电子设备的MCU固件更新方法还包括步骤25:步骤20中如果确定搬迁未成功,则重新执行步骤20以确保搬迁成功。
所述MCU为GD32系列芯片。
所述电子设备包括计算机、平板电脑、车载主机或者手机。
所述通讯总线为UART总线或者I2C总线。
所述第一存储区域及第二存储区域各自具有一个内容校验值,以用于检查对应区域的所存储内容的完整性。
所述启动加载区域所存储的代码包含第一存储区域内容校验功能模块、第一存储区域内容恢复功能模块以及跳转执行功能模块。
所述启动加载区域为内容固定的存储区域。
综上,本发明的电子设备的MCU固件更新方法,能够灵活、方便实现软件更新MCU固件;并且同时具备更新、备份和异常恢复固件的功能。
附图说明
下面结合附图,通过对本发明的具体实施方式详细描述,将使本发明的技术方案及其他有益效果显而易见。
附图中,
图1为本发明电子设备的MCU固件更新方法的流程图;
图2为本发明电子设备的MCU固件更新方法一较佳实施例的原理框图;
图3为本发明电子设备的MCU固件更新方法一较佳实施例的流程图。
具体实施方式
参见图2,其为本发明电子设备的MCU固件更新方法一较佳实施例的原理框图;本发明电子设备的MCU固件更新方法通过软件烧录MCU固件实现更新。本发明中,在硬件方面上提供电子设备,电子设备的需要进行固件更新的板载MCU通过通讯总线与运行有固件更新软件的主机的CPU通讯连接,结合图2,在此较佳实施例中,MCU具体可以为国产的GD32系列芯片,电子设备具体可以为计算机,此时,需要更新固件的MCU与主机的CPU均设置在同一主板上,连接MCU与CPU的通讯总线具体可以为UART总线或者I2C总线;本领域技术人员可以理解,在本发明的其他实施例中,根据MCU型号和功能的不同,需要更新固件的MCU可以设在各种类型的电子设备上,包括但不限于计算机、平板电脑、车载主机或者手机等,同时MCU与CPU可能不设置在一块主板上,采用MCU的电子设备与运行有固件更新软件的主机也可能不是同一设备,电子设备与主机之间可以是采用数据线直接连接,也可以是采用其它有线或无线方式来通讯连接。同时,本发明中,MCU的闪存(Flash)包括启动加载区域、第一存储区域及第二存储区域,所述第一存储区域存储有所述MCU的初始固件,结合图2,在此较佳实施例中,即为把GD32系列芯片的闪存空间划分为3个区域:启动加载区域也即BootLoader区域,第一存储区域也即ROM1区域和第二存储区域也即ROM2区域,其中ROM1区域存储有MCU即GD32的初始固件。
在此本发明的较佳实施例中,板载的GD32 MCU通过UART/I2C总线和主机CPU相连,主机的软件通过I2C/UART总线给GD32发送命令的方式,使GD32具备更新、备份和异常恢复固件的功能,使用该方法可以方便安全的更新GD32固件。
结合图1、图2及图3可知,其中图1为本发明电子设备的MCU固件更新方法的流程图,图3为本发明电子设备的MCU固件更新方法一较佳实施例的流程图,本发明电子设备的MCU固件更新方法当进行固件更新时主要包括步骤:
步骤10、所述MCU上电运行,首先运行启动加载区域所存储的代码,校验第一存储区域中的内容,确认第一存储区域中所存储内容的完整性,如果没问题,就跳转到第一存储区域中,执行所存储的MCU的初始固件;
在此较佳实施例中,具体来说,把MCU的闪存空间划分为3个区域:启动加载区域也即BootLoader区域,第一存储区域也即ROM1区域和第二存储区域也即ROM2区域,其中ROM1区域存储有MCU的初始固件。出厂时MCU固件可以只烧录BootLoader区域和ROM1区域,ROM1区域和ROM2区域都可以有一个内容校验值,用来检查其对应ROM1区域和ROM2区域存储内容的完整性。
在此较佳实施例中,BootLoader区域所存储的内容主要包含第一存储区域内容校验功能模块、第一存储区域内容恢复功能模块以及跳转执行功能模块,从而可以对应包含三种功能:ROM1区域内容校验,ROM1区域内容恢复,以及跳转执行各区域所存储的代码。在此较佳实施中,BootLoader区域内容可以是固定的,常规手段无法刷写这个区域,从而可以保证BootLoader区域的独立性和完整性。当软件更新MCU固件失败导致MCU无法正常工作时,通过BootLoader区域所存储的内容可以正常运行并能恢复MCU固件。
在此较佳实施例中,ROM1区域包含正常的功能代码,也就是MCU的初始固件,更新MCU的固件就是刷新这个区域;ROM2区域是更新固件时ROM1区域中代码的备份空间;MCU上电运行时,首先运行BootLoader区域中的代码,通过BootLoader区域的代码校验ROM1区域中的内容,确认ROM1区域中代码的完整性,如果没问题,就跳转到ROM1区域,执行MCU的正常功能代码。
步骤20、当所述MCU通过数据总线收到所述固件更新软件通过CPU发送的更新固件请求,MCU开始搬迁第一存储区域所存储的初始固件到第二存储区域,并判断所述第一存储区域和第二存储区域中所存储的初始固件是否一致,以确定是否搬迁成功;
本发明的电子设备的MCU固件更新方法还可以包括步骤25:步骤20中如果确定搬迁未成功,则重新执行步骤20以确保搬迁成功。
在此较佳实施中具体来说,在ROM1区域的代码执行过程中,当MCU通过I2C或者UART纵向收到CPU发送的更新固件请求时,MCU开始搬迁ROM1区域的代码到ROM2区域,并确定是否搬迁成功;搬迁成功,则继续执行后续步骤,此时ROM2区域中的代码是ROM1区域中代码的镜像,二者的内容相同,只是存储位置不同;只需要给当前MCU的指令指针加上ROM1区域和ROM2区域的地址偏移值,就可以使MCU跳转到ROM2区域中继续执行当前刷写代码;搬迁不成功,可以重新进行搬迁,直至确定搬迁成功。
步骤30、搬迁成功后,跳转到第二存储区域中,执行所存储的MCU的初始固件,并继续根据来自固件更新软件的更新固件请求执行固件更新;
步骤40、所述MCU通过数据总线接受所述主机发送的数据以更新第一存储区域所存储的MCU的初始固件;
具体来说,此时MCU在ROM2区域中运行代码,可以安全地刷写ROM1区域;MCU通过I2C或者UART总线接受主机CPU发送的数据开始更新ROM1区域,即在ROM1区域中更新MCU的固件。
步骤50、当固件更新完成后,重启MCU。当MCU刷写完成后,重启MCU,完成MCU固件的更新。
进一步来说,本发明还可以包括:
步骤60、所述MCU重启后,执行所述步骤10,如果此时校验到第一存储区域所存储内容不完整,认为刷写失败,则搬迁第二存储区域所存储的MCU的初始固件到第一存储区域内。
具体来说,MCU重启后,按照步骤10,执行BootLoader区域的代码;如果此时校验到ROM1区域内容不完整,认为刷写MCU固件的刷写失败,会用ROM2区域中的代码恢复ROM1区域中的代码。当然,本领域技术人员可以理解,对于经历过不止一次固件更新的MCU来说,ROM2区域中的代码是上一次刷新时存储的上一版本的MCU固件,可以作为备份以用于恢复,而对于未进行过固件更新的MCU来说,可以在ROM2区域中预先存储MCU的固件作为备份,从而在即使未进行过固件更新的情况下,也可以为ROM1区域的内容受到破坏的情况提供了进行恢复的可能。
进一步来说,在此较佳实施例中本发明还可以包括步骤15:所述MCU判断通过所述数据总线收到的数据是否为所述固件更新软件通过CPU发送的更新固件请求,当判断为是时则执行步骤20,否则继续执行第一存储区域中所存储的MCU的初始固件。
具体来说,实际运行中,MCU可能会通过数据总线保持与CPU之间的通讯,当接收到CPU发送的固件刷写指令时,才开始固件刷写过程,否则正常运行初始固件。
进一步来说,在此较佳实施例中本发明还可以包括步骤:当固件更新完成即刷写完成后,MCU和/或固件更新软件判断刷写过程中是否有错误,如果无错误,则结束固件刷新过程,如果有错误,则可以返回步骤10以进一步执行固件的异常恢复。
综上,本发明的电子设备的MCU固件更新方法,能够灵活、方便实现软件更新MCU固件;并且同时具备更新、备份和异常恢复固件的功能。特别是对于国产的GD32系列芯片,板载的GD32 MCU可以通过UART/I2C总线和主机CPU相连,主机的软件通过I2C/UART总线给GD32发送命令的方式,使GD32具备更新、备份和异常恢复固件的功能,使用该方法可以方便安全的更新GD32固件。
以上所述,对于本领域的普通技术人员来说,可以根据本发明的技术方案和技术构思作出其他各种相应的改变和变形,而所有这些改变和变形都应属于本发明后附的权利要求的保护范围。
Claims (10)
1.一种电子设备的MCU固件更新方法,其特征在于,提供电子设备,所述电子设备的需要进行固件更新的板载MCU通过通讯总线与运行有固件更新软件的主机的CPU通讯连接,所述MCU的闪存包括启动加载区域、第一存储区域及第二存储区域,所述第一存储区域存储有所述MCU的初始固件;
当进行固件更新时包括步骤:
步骤10、所述MCU上电运行,首先运行启动加载区域所存储的代码,校验第一存储区域中的内容,确认第一存储区域中所存储内容的完整性,如果没问题,就跳转到第一存储区域中,执行所存储的MCU的初始固件;
步骤20、当所述MCU通过数据总线收到所述固件更新软件通过CPU发送的更新固件请求,MCU开始搬迁第一存储区域所存储的初始固件到第二存储区域,并判断所述第一存储区域和第二存储区域中所存储的初始固件是否一致,以确定是否搬迁成功;
步骤30、搬迁成功后,跳转到第二存储区域中,执行所存储的MCU的初始固件,并继续根据来自固件更新软件的更新固件请求执行固件更新;
步骤40、所述MCU通过数据总线接受所述主机发送的数据以更新第一存储区域所存储的MCU的初始固件;
步骤50、当固件更新完成后,重启MCU。
2.如权利要求1所述的电子设备的MCU固件更新方法,其特征在于,还包括:
步骤60、所述MCU重启后,执行所述步骤10,如果此时校验到第一存储区域所存储内容不完整,认为刷写失败,则搬迁第二存储区域所存储的MCU的初始固件到第一存储区域内。
3.如权利要求1所述的电子设备的MCU固件更新方法,其特征在于,还包括步骤15:所述MCU判断通过所述数据总线收到的数据是否为所述固件更新软件通过CPU发送的更新固件请求,当判断为是时则执行步骤20,否则继续执行第一存储区域中所存储的MCU的初始固件。
4.如权利要求1所述的电子设备的MCU固件更新方法,其特征在于,还包括步骤25:步骤20中如果确定搬迁未成功,则重新执行步骤20以确保搬迁成功。
5.如权利要求1所述的电子设备的MCU固件更新方法,其特征在于,所述MCU为GD32系列芯片。
6.如权利要求1所述的电子设备的MCU固件更新方法,其特征在于,所述电子设备包括计算机、平板电脑、车载主机或者手机。
7.如权利要求1所述的电子设备的MCU固件更新方法,其特征在于,所述通讯总线为UART总线或者I2C总线。
8.如权利要求1所述的电子设备的MCU固件更新方法,其特征在于,所述第一存储区域及第二存储区域各自具有一个内容校验值,以用于检查对应区域的所存储内容的完整性。
9.如权利要求1所述的电子设备的MCU固件更新方法,其特征在于,所述启动加载区域所存储的代码包含第一存储区域内容校验功能模块、第一存储区域内容恢复功能模块以及跳转执行功能模块。
10.如权利要求1所述的电子设备的MCU固件更新方法,其特征在于,所述启动加载区域为内容固定的存储区域。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211274813.0A CN115599417A (zh) | 2022-10-18 | 2022-10-18 | 电子设备的mcu固件更新方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211274813.0A CN115599417A (zh) | 2022-10-18 | 2022-10-18 | 电子设备的mcu固件更新方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115599417A true CN115599417A (zh) | 2023-01-13 |
Family
ID=84849754
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211274813.0A Pending CN115599417A (zh) | 2022-10-18 | 2022-10-18 | 电子设备的mcu固件更新方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115599417A (zh) |
-
2022
- 2022-10-18 CN CN202211274813.0A patent/CN115599417A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7100087B2 (en) | Module and method for automatic restoring BIOS device | |
CN101329632B (zh) | 一种使用boot启动cpu的方法与装置 | |
US20100169709A1 (en) | System Of Updating Firmware And Method Thereof, And Method Of Creating Firmware | |
US20200394144A1 (en) | Information processing system, information processing device, bios updating method for information processing device, and bios updating program for information processing device | |
US20090271660A1 (en) | Motherboard, a method for recovering the bios thereof and a method for booting a computer | |
CN108345464A (zh) | 一种安卓系统的启动方法及安卓车机 | |
TWI764454B (zh) | 韌體損壞恢復技術 | |
CN109634781B (zh) | 一种基于嵌入式程序双区备份映像系统及启动方法 | |
US20180322020A1 (en) | Backup and recovery of configuration files in management device | |
CN111258666A (zh) | 计算机文件的读取方法、装置、计算机系统及存储介质 | |
CN115718610A (zh) | 一种可靠的单片机应用程序更新的方法 | |
CN114265603A (zh) | 基于不对称分区的系统升级方法、装置和电子设备 | |
CN112988465A (zh) | 一种单片机升级失败自动恢复运行的方法 | |
CN112148339A (zh) | 一种双核芯片及其程序更新方法 | |
JP2005284902A (ja) | 端末装置、その制御方法及び制御プログラム、ホスト装置、その制御方法及び制御プログラム、遠隔更新システム、方法及びプログラム | |
CN113377425B (zh) | Bmc固件生成方法和装置、bmc启动方法和装置及存储介质 | |
CN115599417A (zh) | 电子设备的mcu固件更新方法 | |
US9529581B2 (en) | Circuit and method for writing program codes of basic input/output system | |
CN111045709B (zh) | 固件升级方法和固件升级装置 | |
CN113778485A (zh) | 电子芯片的系统运行方法、装置、电子芯片和存储介质 | |
CN112667444A (zh) | 一种系统升级方法、存储介质及终端设备 | |
US9081727B2 (en) | Method, apparatus and computer program for loading files during a boot-up process | |
CN213751050U (zh) | 一种双核芯片 | |
CN117215604A (zh) | 一种软件更新方法、装置、车辆控制器及可读存储介质 | |
CN117762449A (zh) | 一种毫米波雷达软件升级备份方法 |
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 |