CN109800012A - 一种mcu固件升级方法 - Google Patents
一种mcu固件升级方法 Download PDFInfo
- Publication number
- CN109800012A CN109800012A CN201910156105.9A CN201910156105A CN109800012A CN 109800012 A CN109800012 A CN 109800012A CN 201910156105 A CN201910156105 A CN 201910156105A CN 109800012 A CN109800012 A CN 109800012A
- Authority
- CN
- China
- Prior art keywords
- flash
- mcu
- write
- jlink
- firmware
- 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
Abstract
本发明公开了一种MCU固件升级方法,包括以下步骤:A.编写MCU初始化和嵌入式Flash驱动程序;B.安装JLink下载器驱动程序包;C.拷贝JLink.exe可执行文件和JLinkARM.dll库文件到同一目录下;D.编写flash.txt命令脚本文件和flash.bat批处理文件;E.导入固件升级程序;F.运行flash.bat批处理文件,MCU通过JLink自动烧写固件程序到Flash。本发明的方法可显著降低烧写工具初期设计复杂度和操作难度,且用户在操作过程中无需手动设定Flash烧写地址及长度,极大地简化了烧写过程,提升了烧写准确度和操作效率。
Description
技术领域
本发明涉及电子信息技术领域,特别涉及一种MCU固件升级方法。
背景技术
目前针对标准的通用型外部Flash模块,市面上有很多第三方下载工具如JLink配套工具J-Flash,都提供了Flash烧写功能,对于不同品牌和不同型号的Flash芯片,由于下载工具内部都集成了相应的驱动,因此可以完全支持各类外部Flash芯片的烧写功能。
对于大多数芯片内部集成的Flash模块,即嵌入式eFlash,上述下载工具也根据不同品牌和不同型号的芯片,集成了相应的Flash驱动程序,因此这类下载工具也可以比较好地支持嵌入式Flash的程序烧写。
然而,针对少数非通用型嵌入式Flash芯片,尤其是某些芯片厂商自行开发,并且用在特定产品和领域中的嵌入式Flash芯片,因为与多数标准通用型Flash芯片并不兼容,所以上述下载工具并不能很好地支持这类芯片。
为了解决少数非通用型嵌入式Flash芯片的程序烧写问题,大多数设计厂商或开发者会自己编写Flash驱动程序,通过集成开发环境配合调试下载工具,将固件升级程序烧写到Flash中。
参见申请号CN201810844547.8的专利申请,其公开了一种MCU固件程序的下载方法,该方法通过设计者自行开发Flash驱动程序,并利用ARM集成开发工具,配合JLink下载工具和VS集成开发环境,设计了基于WINDOWS可视化界面的嵌入式Flash烧写工具,解决了少数非通用型嵌入式Flash芯片的固件升级问题。
然而,该方法也存在一些不足,例如设计者在设计烧写工具初期,设计复杂度高、设计周期长;需要完成ARM集成开发工具和VS集成开发环境的配合,配合难度较大,各版本兼容性差;用户在使用烧写工具过程中需要手动设置固件路径、烧写地址、固件长度等参数,增加了操作复杂性,降低了效率和可靠性。因此,如何降低烧写工具的设计复杂度和操作难度,提高烧写速度,提升效率,成为一个急需解决的问题。
发明内容
本发明的目的是克服上述背景技术中不足,提供一种MCU固件升级方法,可以有效地解决背景技术中提到的技术问题,显著降低烧写工具初期设计复杂度和操作难度,且用户在操作过程中无需手动设定Flash烧写地址及长度,极大地简化了烧写过程,提升了烧写准确度和操作效率。
为了达到上述的技术效果,本发明采取以下技术方案:
一种MCU固件升级方法,包括以下步骤:
A.编写MCU初始化和嵌入式Flash驱动程序;
B.安装JLink下载器驱动程序包;
C.拷贝JLink.exe可执行文件和JLinkARM.dll库文件到同一目录下;
D.编写flash.txt命令脚本文件和flash.bat批处理文件;其中,flash.bat批处理文件用于调用flash.txt命令脚本文件,flash.txt命令脚本文件包含各行命令,这些命令可以通过调用JLink.exe文件执行,从而实现JLink仿真器对MCU的控制;
E.导入固件升级程序;
F.运行flash.bat批处理文件,MCU通过JLink自动烧写固件程序到Flash。
进一步地,所述步骤A具体包括以下步骤:
A1.复位MCU计数器和主时钟,解锁时钟配置功能,选择外部MCU时钟源,设置时钟分频系数,锁定时钟配置功能,复位串口;
A2.复位Flash控制器,解锁Flash写保护,设置Flash控制器时钟为80MHz;
A3.全片擦除Flash;
A4.设置SRAM起始地址,Flash起始地址和块写入长度,等待接收写入命令;
A5.接收到写入命令后,将SRAM起始地址处的数据分多次写入到Flash起始地址处,每次写入单块数据长度,并将写入Flash中的数据读出,与写入前的数据比较,完成校验,其中,每次写入数据长度由步骤A4中规定的块写入长度决定,写入次数由固件程序的总长度决定。
进一步地,所述步骤A4具体为:设置SRAM起始地址为0x20000000,设置Flash起始地址为0x1000000,块写入长度设置为4K字节,即每次写入数据的长度为4K字节;写入命令通过内存的一个标志位写入,当标志位未写入时,CPU一直处于查询等待状态,标志位一旦写入,CPU就开始执行Flash写入过程。
进一步地,所述步骤D中编写flash.txt命令脚本文件具体包括:
D1.设置目标芯片型号为CORTEX-M3,设置下载接口方式为SWD,设置JLink工作频率为4MHz;
D2.将MCU初始化和嵌入式Flash驱动程序boot.bin载入到SRAM起始地址处,规定CPU起始运行的程序内容和程序地址;
D3.设置CPU主堆栈指针和程序计数器值,使CPU运行驱动程序;
D4.将固件程序片段1载入到内存指定地址;
D5.对写入标志位置位,使CPU开始运行,将内存指定地址中的固件程序片段1烧入Flash中;
D6.延时600ms,等待烧写完成;
D7.将固件程序片段2直到固件程序片段n载入到内存指定地址,并置位标志位,完成剩下所有固件程序片段的写入;其中固件程序片段个数n由固件程序长度决定。
进一步地,所述步骤E具体为将固件升级程序以bin文件的方式,与驱动程序boot.bin、JLink.exe可执行文件、JLinkARM.dll库文件、flash.txt命令脚本文件、flash.bat批处理文件一起放在同一个目录下。
本发明与现有技术相比,具有以下的有益效果:
通过本发明提出的MCU固件升级方法,针对特定的非通用型内嵌式Flash芯片,将Flash驱动、JLink驱动和Flash读写功能,都集成到一个烧写工具中,并且通过批处理文件和命令行脚本文件,实现了Flash一键式烧写功能,简化了固件升级步骤,提高了操作效率。
同时,针对不同的固件程序,只需将对应的bin文件放在与其它相关驱动文件同一目录下,系统就可以自动载入固件并烧写到Flash中。该方法操作流程简单,无需专业知识,具有较大的推广和实用价值。
附图说明
图1是本发明的MCU固件升级方法流程示意图。
具体实施方式
下面结合本发明的实施例对本发明作进一步的阐述和说明。
实施例:
实施例一:
如图1所示,一种MCU固件升级方法,具体包括以下步骤:
步骤101:编写MCU初始化和嵌入式Flash驱动程序:
其中,编写MCU初始化和嵌入式Flash驱动程序boot.bin,包括:首先,复位MCU计数器和主时钟,解锁时钟配置功能,选择外部MCU时钟源,设置时钟分频系数,锁定时钟配置功能,复位串口,复位Flash控制器,解锁Flash写保护,设置Flash控制器时钟为80MHz,全片擦除Flash,保证MCU和Flash基本功能能够正常工作;其次,设置SRAM起始地址,Flash起始地址和块写入长度,等待接收写入命令;最后,接收到写入命令后,将SRAM起始地址处的数据分多次写入到Flash起始地址处,每次写入单块数据长度,并将写入Flash中的数据读出,与写入前的数据比较,完成校验。这样,就可以完成整个Flash写入和校验流程。
具体的,在本实施例中,编写MCU初始化和嵌入式Flash驱动程序具体为:
首先,根据芯片手册编写MCU初始化程序,完成MCU时钟源选择、系统时钟设置、分频系数设置等功能。
本实例以所使用的MCU型号HCM32为例进行说明,MCU时钟源选择,可以通过设置系统控制单元SCU的RC_CTRL寄存器,选择外部8MHz晶振为时钟源;系统时钟设置通过系统控制单元SCU的CKCFG_LOCK和RSTCFG_LOCK寄存器,设置解锁、锁定系统时钟和系统软件复位;分频系数设置通过设置系统控制单元SCU的SYS_PLLC寄存器参数为9,使主时钟经过PLL倍频后,输出72MHz时钟。
其次,根据芯片Flash模块手册,编写Flash读、写、擦除功能接口函数,本实施例中,分别对应Flash_Read()函数、Flash_Write()函数和Flash_Erase()函数。其中,Flash写和擦除默认是按照块操作的,且每一块大小为512字节,因此由Flash写和擦除函数构成实际上的Flash写块操作函数。Flash读函数构成数据检验功能函数。
最后,编写程序,利用上述已实现的Flash写块操作函数,将SRAM内存数据区的数据写入到Flash起始地址0x1000000处;再设置MCU的程序存储区地址和写入Flash的数据存储区地址。
其中,设置MCU的程序存储区地址和写入Flash的数据存储区地址的具体方法如下:
首先,以IAR集成编译环境为例进行说明,新建一个工程并导入程序代码;进入Project->Options->Linker->Config,在Override Default项前打钩,并在下面的文件路径栏中填入$PROJ_DIR$\sram.icf;
之后进入工程目录,并在目录下新建一个.icf后缀名文件,并编辑文件。在文件中加入内容define symbol__ICFEDIT_region_ROM_start__=0x1FFF0000;define symbol__ICFEDIT_region_ROM_end__=0x1FFF2FF0两行,设置程序运行的起始地址为0x1FFF0000。
然后,再进入Project->Options->Output Converter->Output,在Generateadditional output项前打钩,并在Output format下拉列表框中选择binary;在Overridedefault项前打钩,并在下面的文本框中填写boot.bin;
最后,点击Project->Make完成程序代码的编译链接过程,之后可以在工程目录下的Debug/Exe/文件夹中找到生成的boot.bin文件。此文件包含了MCU初始化和Flash驱动程序。
步骤102:安装JLink下载器驱动程序包。
步骤103:将安装目录下的JLink.exe文件和JLinkARM.dll文件拷贝到同一目录下。
步骤104:编写flash.txt命令脚本文件和flash.bat批处理文件:
编写的flash.bat批处理文件用来直接调用flash.txt命令脚本文件中的各行命令,这些命令又是通过调用JLink.exe可执行文件,执行JLinkARM.dll库文件中支持的各类命令来实现的。
编写flash.txt命令脚本文件,具体操作如下:
首先,用DEVICE CORTEX-M3命令设置芯片内核参数;用si 1命令设置JLink连接方式为SWD四线模式;用speed 4000k命令设置JLink频率为4MHz;用loadbin boot.bin0x1FFF0000命令完成MCU向内存0x1FFF0000地址处载入Flash驱动程序;用wreg MSP0x1FFF3618和SetPC 0x1FFF0879命令设置MCU主栈指针和PC指针地址,启动MCU开始执行Flash驱动程序。
此时,驱动程序会完成MCU初始化流程和Flash初始化配置,之后不断查询内存标志位,并等待标志位置位。
然后,再用loadbin BinSlice0.bin 0x20000000命令完成MCU向内存指定地址载入固件程序片段;用w4 0x1FFF3FF4 1命令对内存标志位置位。此时,程序检测到内存标志位置位,开始把内存指定地址处的数据搬移到Flash起始地址处。
最后,再依次把其它多个固件程序片段载入到内存指定地址处,并对内存标志位置位,完成内存到Flash的数据搬移。
具体的,本实施例中,flash.bat批处理文件执行2个任务:第1个任务是将固件升级程序文件拆分为多个固件程序片段,以方便后期MCU载入内存指定地址。具体方法是在此处执行一个文件拆分程序Partition.exe,该程序用VS集成开发编译工具自行编写程序,并生成可执行文件;第2个任务是调用JLink.exe程序,执行flash.txt命令脚本文件,完成上述一系列功能,将数据写入Flash中。
步骤105:导入固件升级程序;
将需要升级的固件程序文件与JLink.exe、JLinkARM.dll、flash.txt、flash.bat文件放入同一目录下,并执行flash.bat文件,就可以将固件程序一次性写入Flash。
步骤106:运行flash.bat批处理文件,使MCU通过JLink自动烧写固件程序到Flash。
可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。
Claims (5)
1.一种MCU固件升级方法,其特征在于,包括以下步骤:
A.编写MCU初始化和嵌入式Flash驱动程序;
B.安装JLink下载器驱动程序包;
C.拷贝JLink.exe可执行文件和JLinkARM.dll库文件到同一目录下;
D.编写flash.txt命令脚本文件和flash.bat批处理文件;
E.导入固件升级程序;
F.运行flash.bat批处理文件,MCU通过JLink自动烧写固件程序到Flash。
2.根据权利要求1所述的一种MCU固件升级方法,其特征在于,所述步骤A具体包括以下步骤:
A1.复位MCU计数器和主时钟,解锁时钟配置功能,选择外部MCU时钟源,设置时钟分频系数,锁定时钟配置功能,复位串口;
A2.复位Flash控制器,解锁Flash写保护,设置Flash控制器时钟为80MHz;
A3.全片擦除Flash;
A4.设置SRAM起始地址,Flash起始地址和块写入长度,等待接收写入命令;
A5.接收到写入命令后,将SRAM起始地址处的数据分多次写入到Flash起始地址处,每次写入单块数据长度,并将写入Flash中的数据读出,与写入前的数据比较,完成校验。
3.根据权利要求1所述的一种MCU固件升级方法,其特征在于,所述步骤A4具体为:设置SRAM起始地址为0x20000000,设置Flash起始地址为0x1000000,块写入长度设置为4K字节;写入命令通过内存的一个标志位写入,当标志位未写入时,CPU一直处于查询等待状态,标志位一旦写入,CPU就开始执行Flash写入过程。
4.根据权利要求2所述的一种MCU固件升级方法,其特征在于,所述步骤D中编写flash.txt命令脚本文件具体包括:
D1.设置目标芯片型号为CORTEX-M3,设置下载接口方式为SWD,设置JLink工作频率为4MHz;
D2.将MCU初始化和嵌入式Flash驱动程序boot.bin载入到SRAM起始地址处,规定CPU起始运行的程序内容和程序地址;
D3.设置CPU主堆栈指针和程序计数器值,使CPU运行驱动程序;
D4.将固件程序片段1载入到内存指定地址;
D5.对写入标志位置位,使CPU开始运行,将内存指定地址中的固件程序片段1烧入Flash中;
D6.延时600ms,等待烧写完成;
D7.将固件程序片段2直到固件程序片段n载入到内存指定地址,并置位标志位,完成剩下所有固件程序片段的写入;其中固件程序片段个数n由固件程序长度决定。
5.根据权利要求4所述的一种MCU固件升级方法,其特征在于,所述步骤E具体为将固件升级程序以bin文件的方式,与驱动程序boot.bin、JLink.exe可执行文件、JLinkARM.dll库文件、flash.txt命令脚本文件、flash.bat批处理文件一起放在同一个目录下。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910156105.9A CN109800012A (zh) | 2019-03-01 | 2019-03-01 | 一种mcu固件升级方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910156105.9A CN109800012A (zh) | 2019-03-01 | 2019-03-01 | 一种mcu固件升级方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109800012A true CN109800012A (zh) | 2019-05-24 |
Family
ID=66562493
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910156105.9A Pending CN109800012A (zh) | 2019-03-01 | 2019-03-01 | 一种mcu固件升级方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109800012A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110837391A (zh) * | 2019-11-04 | 2020-02-25 | 广州华多网络科技有限公司 | 应用程序的热更新方法及装置、存储介质及电子设备 |
CN112380146A (zh) * | 2021-01-15 | 2021-02-19 | 南京沁恒微电子股份有限公司 | 一种嵌入式固件远程调试方法及系统 |
CN113760806A (zh) * | 2021-11-09 | 2021-12-07 | 南京沁恒微电子股份有限公司 | 多模式虚拟串口芯片、实现方法、固件下载系统及其方法 |
CN114327005A (zh) * | 2021-11-17 | 2022-04-12 | 北京智芯微电子科技有限公司 | 芯片的复位管理方法及模块和Flash复位装置及芯片结构 |
TWI764824B (zh) * | 2021-09-01 | 2022-05-11 | 新加坡商鴻運科股份有限公司 | 固件升級方法、裝置、晶片及電腦存儲介質 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030233493A1 (en) * | 2002-06-15 | 2003-12-18 | Boldon John L. | Firmware installation methods and apparatus |
CN103677885A (zh) * | 2012-09-21 | 2014-03-26 | 厦门雅迅网络股份有限公司 | 一种arm flash简易程序烧写的方法 |
CN106648759A (zh) * | 2016-11-30 | 2017-05-10 | 苏州华芯微电子股份有限公司 | 一种通用编程器固件的更新方法 |
CN107566169A (zh) * | 2017-08-24 | 2018-01-09 | 上海斐讯数据通信技术有限公司 | 一种基于openwrt的固件升级方法及路由器 |
CN109062562A (zh) * | 2018-07-27 | 2018-12-21 | 四川长虹电器股份有限公司 | Mcu固件程序的下载方法 |
-
2019
- 2019-03-01 CN CN201910156105.9A patent/CN109800012A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030233493A1 (en) * | 2002-06-15 | 2003-12-18 | Boldon John L. | Firmware installation methods and apparatus |
CN103677885A (zh) * | 2012-09-21 | 2014-03-26 | 厦门雅迅网络股份有限公司 | 一种arm flash简易程序烧写的方法 |
CN106648759A (zh) * | 2016-11-30 | 2017-05-10 | 苏州华芯微电子股份有限公司 | 一种通用编程器固件的更新方法 |
CN107566169A (zh) * | 2017-08-24 | 2018-01-09 | 上海斐讯数据通信技术有限公司 | 一种基于openwrt的固件升级方法及路由器 |
CN109062562A (zh) * | 2018-07-27 | 2018-12-21 | 四川长虹电器股份有限公司 | Mcu固件程序的下载方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110837391A (zh) * | 2019-11-04 | 2020-02-25 | 广州华多网络科技有限公司 | 应用程序的热更新方法及装置、存储介质及电子设备 |
CN112380146A (zh) * | 2021-01-15 | 2021-02-19 | 南京沁恒微电子股份有限公司 | 一种嵌入式固件远程调试方法及系统 |
TWI764824B (zh) * | 2021-09-01 | 2022-05-11 | 新加坡商鴻運科股份有限公司 | 固件升級方法、裝置、晶片及電腦存儲介質 |
CN113760806A (zh) * | 2021-11-09 | 2021-12-07 | 南京沁恒微电子股份有限公司 | 多模式虚拟串口芯片、实现方法、固件下载系统及其方法 |
CN114327005A (zh) * | 2021-11-17 | 2022-04-12 | 北京智芯微电子科技有限公司 | 芯片的复位管理方法及模块和Flash复位装置及芯片结构 |
CN114327005B (zh) * | 2021-11-17 | 2024-03-08 | 北京智芯微电子科技有限公司 | 芯片的复位管理方法及模块和Flash复位装置及芯片结构 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109800012A (zh) | 一种mcu固件升级方法 | |
US7293166B2 (en) | Method of indicating a format of accessing an operating system contained on a USB memory device | |
EP1938200B1 (en) | Initialization of flash storage via an embedded controller | |
KR100987628B1 (ko) | 엠비디드 컨트롤러의 펌웨어 갱신방법 및 갱신용 펌웨어저장매체 | |
JP2000242598A (ja) | ファームウェア更新システムおよびその更新方法 | |
CN101183337A (zh) | 基于nand flash移动终端存储介质的空间管理方法 | |
TWI421686B (zh) | 資料存取方法與系統、儲存媒體控制器與儲存系統 | |
US7032213B1 (en) | Fixing incompatible applications using a light debugger | |
CN101620542B (zh) | 一种超声成像设备软件数据的兼容更新方法 | |
CN106909480B (zh) | 一种嵌入式系统交叉调试方法和装置 | |
US20230266958A1 (en) | Method for creating private image in public cloud and related device | |
CN106909351B (zh) | 一种基于uefi固件的ext文件系统的实现方法 | |
CN116541032A (zh) | 数据烧录方法、装置、设备及计算机存储介质 | |
CN110716721A (zh) | 兼容网口和串口的tms320c6748程序加载方法 | |
CN100524316C (zh) | 用于文件信息移动处理的方法和装置 | |
CN112925569A (zh) | 一种固件数据处理方法、装置、设备及存储介质 | |
CN108334362B (zh) | 一种fpga芯片的升级方法、装置及存储设备 | |
CN114816491A (zh) | 用于多系统移动终端的系统升级方法、装置及终端 | |
CN108536458A (zh) | 一种fpga在线升级方法、装置、设备及存储介质 | |
WO2000067132A1 (en) | Combination ata/linear flash memory device | |
CN116560688A (zh) | 用于域控制器的软件更新方法 | |
CN100498710C (zh) | 自储存装置上读取选择只读存储器程序代码的方法 | |
CN115495135A (zh) | 一种fpga烧录方法及终端设备 | |
CN113900693A (zh) | 一种固件升级方法、装置、系统、电子设备及存储介质 | |
CN109062562A (zh) | Mcu固件程序的下载方法 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190524 |
|
RJ01 | Rejection of invention patent application after publication |