CN105955764A - 一种stm32单片机iap串口程序烧录的改进方法 - Google Patents

一种stm32单片机iap串口程序烧录的改进方法 Download PDF

Info

Publication number
CN105955764A
CN105955764A CN201610256075.5A CN201610256075A CN105955764A CN 105955764 A CN105955764 A CN 105955764A CN 201610256075 A CN201610256075 A CN 201610256075A CN 105955764 A CN105955764 A CN 105955764A
Authority
CN
China
Prior art keywords
data
cpu
dma
chip microcomputer
program
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
Application number
CN201610256075.5A
Other languages
English (en)
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.)
FOSHAN CITY NANHAI DISTRICT OPTOMEDIC SCIENCE & TECHNOLOGY Co Ltd
Original Assignee
FOSHAN CITY NANHAI DISTRICT OPTOMEDIC SCIENCE & TECHNOLOGY 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 FOSHAN CITY NANHAI DISTRICT OPTOMEDIC SCIENCE & TECHNOLOGY Co Ltd filed Critical FOSHAN CITY NANHAI DISTRICT OPTOMEDIC SCIENCE & TECHNOLOGY Co Ltd
Priority to CN201610256075.5A priority Critical patent/CN105955764A/zh
Publication of CN105955764A publication Critical patent/CN105955764A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • G06F9/44578Preparing or optimising for loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • G06F13/282Cycle stealing DMA

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microcomputers (AREA)

Abstract

本发明公开了一种STM32单片机IAP串口程序烧录的改进方法,包括以下步骤:单片机上电后,初始化单片机的DMA控制器、串口资源;当接收到用户的应用程序升级请求后,程序执行以下步骤,否则转跳到最后步骤;打开DMA控制器开关,每当串口有数据来,DMA传输数据到内存里;当DMA传输完数据时,产生传输完成中断,通知CPU,CPU把内存里的数据写入到Flash中,接着CPU使能DMA继续传输数据,如此循环;当串口传输完数据后,串口产生一个空闲中断通知CPU,在中断函数中CPU把最后接收到的数据写入到flash内存中,并关闭DMA中断控制器;程序跳到应用程序函数入口,开始执行应用程序,采用本发明可克服更新程序应用程序大小的限制,省却了更新时的CPU使用资源,提高了焼写速度。

Description

一种STM32单片机IAP串口程序烧录的改进方法
技术领域
本发明涉及单片机控制技术领域,尤其涉及的是一种STM32单片机IAP串口程序烧录的改进方法。
背景技术
IAP(In Application Programming)即在线应用编程,IAP是用户客户端的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。通常实现在线应用编程功能时,需要在设计固件程序时编写两个项目代码,第一个项目程序可以称为Bootloader,它不执行正常的功能操作,而只是通过某种通信方式(如USB、USART)接收程序或数据,执行对第二部分代码的更新;第二个项目代码才是真正的功能代码。这样处理后,当芯片上电后,首先是Bootloader开始运行,它运行时先检查是否需要对应用程序进行更新,如果不需要更新则跳转到应用程序的入口点,如需要更新则进行更新,然后再转跳到应用程序的入口。
这种技术通常应用在嵌入式领域里,对应用程序进行升级维护。目前许多嵌入式产品对应用程序进行更新升级都需要先将要更新的代码通过串口或者USB等接口一次性加载到内存里,然后通过擦除、重写Flash对应用程序进行更新。使用这种方法进行应用程序更新的前提是内存的容量一定要大于要加载的应用程序。由于单片机是单线程执行的,在串口接收数据的过程中CPU所有时间都在忙碌着把串口的数据运送到内存里,CPU腾不出时间来把内存的数据写入到flash里,只能是暂时先把接收到的数据堆积到内存里,等串口接收完成后CPU慢慢的把这些数据写入到flash里。而STM32单片机的RAM一般只有4K到64K的大小,意味着其内存最多只能堆积4K到64K的数据,这样限制了在线更新的应用程序的大小。
因此,现有技术还有待于改进和发展。
发明内容
本发明的目的在于提供一种STM32单片机IAP串口程序烧录的改进方法,以解决现有技术如下技术问题:
(1)单片机程序在线烧录时所更新的应用程序不能大于内存容量,否则无法烧录;
(2)单片机CPU大量时间都花费在读取串口的数据,浪费CPU资源,运行效率较为低下。
本发明的技术方案如下:
一种STM32单片机IAP串口程序烧录的改进方法,其中,包括以下步骤:
步骤a:单片机上电后,初始化单片机的DMA控制器、串口资源;
步骤b:当接收到用户的应用程序升级请求后,程序执行步骤c-步骤f,否则转跳到步骤f;
步骤c:单片机打开DMA控制器开关,准备传输串口数据到内存,此时每当串口有数据到来,DMA自动传输数据到指定的内存里;
步骤d:当DMA传输完设定大小的数据时,产生传输完成中断,通知CPU,CPU把传输到内存里的数据写入到Flash中,然后使能DMA继续搬运数据到指定内存区域,如此循环;
步骤e:当串口传输完数据后,串口产生一个空闲中断通知CPU,在串口中断函数中CPU把最后接收到的数据写入到Flash内存中,并关闭DMA中断控制器;
步骤f:程序跳到APP函数入口,开始执行应用程序。
所述的STM32单片机IAP串口程序烧录的改进方法,其中,在步骤d中,所述DMA一次传输完2K数据时,产生传输完成中断,通知CPU把内存里的数据写入到Flash中。
所述的STM32单片机IAP串口程序烧录的改进方法,其中,在步骤d中,所述DMA一次传输完1K的数据时,产生传输完成中断,通知CPU把内存里的数据写入到Flash中。
所述的STM32单片机IAP串口程序烧录的改进方法,其中,在步骤d中,CPU把DMA传输到内存里的数据以块为单位一次性写入到Flash中。
所述的STM32单片机IAP串口程序烧录的改进方法,其中,在步骤d中,CPU把内存里的数据写入到Flash后,重新开启DMA并清空缓冲数据。
所述的STM32单片机IAP串口程序烧录的改进方法,其中,在步骤a中,所述串口的波特率设置为9600Bd。
本发明的有益效果:本发明通过供一种STM32单片机IAP串口程序烧录的改进方法,利用单片机内的DMA(Direct Memory Access直接储存器访问)把串口的数据搬运到内存,节省了CPU的资源,而CPU利用节省下的CPU资源把内存的数据写入Flash中,使IAP串口在线程序烧写克服了更新应用程序大小的限制,同时提高了焼写速度。
附图说明
图1是Bootloader程序运行流程图。
图2是本发明程序流程图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。
参阅图1,现有技术实现在线应用编程功能时,需要在设计固件程序时编写两个项目代码,第一个项目程序,称为Bootloader,它不执行正常的功能操作,而只是通过某种通信方式(如USB、USART)接收程序或数据,执行对第二部分代码的更新;第二个项目代码为应用程序才是真正的功能代码。芯片上电后,Bootloader开始运行,运行时先检查是否需要对应用程序进行更新,如果不需要更新则跳转到应用程序程序的入口,如需要更新则进行更新后再转跳到应用程序程序的入口。
参阅图2,本发明提供一种STM32单片机IAP串口程序烧录的改进方法,其中,包括以下步骤:
步骤a:单片机上电后,初始化单片机的DMA控制器、串口资源。
步骤b:当接收到用户的应用程序升级请求后,程序执行步骤c-步骤f,否则转跳到步骤f;
步骤c:单片机打开DMA控制器开关,准备传输串口数据到内存,此时每当串口有数据到来,DMA自动传输数据到指定的内存里;
步骤d:当DMA传输完设定大小的数据时,产生传输完成中断,通知CPU,CPU把内存里的数据写入到Flash后,重新开启DMA并清空缓冲数据,接着DMA继续传输数据,当传输完设定大小的数据时,产生传输完成中断,如此循环;
步骤e:当串口传输完数据后,串口产生一个空闲中断通知CPU,在串口中断函数中CPU把最后接收到的数据写入到flash内存中,并关闭DMA中断控制器;
步骤f:程序跳到APP函数入口,开始执行应用程序。
在步骤a中,所述DMA是直接储存器访问(Direct Memory Access),传输将数据从一个地址空间复制到另外一个地址空间,传输动作本身是由DMA控制器来实行和完成,它无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为单片机RAM与I/O设备开辟一条直接传送数据的通路,能使CPU的效率大为提高。
优选地,在步骤d中,所述DMA一次性传输完2K的数据后,产生传输完成中断,通知CPU把内存里的数据写入到Flash中。由于大容量Flash内存一页大小为2K,若CPU一次向Flash中写入2K的数据,刚好写满一页,减少了对Flash的擦除次数,节省了时间。但如果一次写入2页或者更多页的数据时,会占用太多CPU的时间,导致串口接收端的数据丢失。因此,对于大容量的Flash来说,DMA一次传输的数据设置为2K为一种优选的实施方式。
作为本发明的另一实施方式,所述DMA也可传输完1K的数据后,产生传输完成中断,通知CPU把内存里的数据写入到Flash中。由于中小容量Flash内存一页大小为1K,CPU每次以1K每块为单位一次性将数据写入到Flash内存中,刚好写满一页Flash内存。
进一步地,在步骤a中,所述串口的波特率设置为9600Bd,串口的波特率设置为较低速率,可以避免在CPU写入Flash的过程中DMA处于中断状态而导致串口的数据丢失,若串口设置一个较大的波特率,例如波特率115200,串口的数据会有丢失。因此,串口的波特率设置为9600Bd为一种优选的实施方式。
本发明通过供一种STM32单片机IAP串口程序烧录的改进方法,利用单片机内的DMA(Direct Memory Access直接储存器访问)把串口的数据搬运到内存,而CPU利用节省下来的资源把内存的数据写入Flash中,使IAP串口在线程序烧写克服了应用程序大小的限制,提高了焼写速度。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

Claims (6)

1.一种STM32单片机IAP串口程序烧录的改进方法,其特征在于,包括以下步骤:
步骤a:单片机上电后,初始化单片机的DMA控制器、串口资源;
步骤b:当接收到用户的应用程序升级请求后,程序执行步骤c-步骤f,否则转跳到步骤f;
步骤c:单片机打开DMA控制器开关,准备传输串口数据到内存,此时每当串口有数据到来,DMA自动传输数据到指定的内存里;
步骤d:当DMA传输完设定大小的数据时,产生传输完成中断,通知CPU,CPU把传输到内存里的数据写入到Flash中,然后使能DMA继续搬运数据到指定内存区域,如此循环;
步骤e:当串口传输完数据后,串口产生一个空闲中断通知CPU,在串口中断函数中CPU把最后接收到的数据写入到flash内存中,并关闭DMA中断控制器;
步骤f:程序跳到APP函数入口,开始执行应用程序。
2.根据权利要求1所述的STM32单片机IAP串口程序烧录的改进方法,其特征在于,在步骤d中,所述DMA一次传输完2K的数据时,产生传输完成中断,通知CPU把内存里的数据写入到Flash中。
3.根据权利要求1所述的STM32单片机IAP串口程序烧录的改进方法,其特征在于,在步骤d中,所述DMA一次传输完1K的数据时,产生传输完成中断,通知CPU把内存里的数据写入到Flash中。
4.根据权利要求1所述的STM32单片机IAP串口程序烧录的改进方法,其特征在于,在步骤d中,CPU把DMA传输到内存里的数据以块为单位一次性写入到Flash中。
5.根据权利要求4所述的STM32单片机IAP串口程序烧录的改进方法,其特征在于,在步骤d中,CPU把内存里的数据写入到Flash后,重新开启DMA并清空缓冲数据。
6.根据权利要求1所述的STM32单片机IAP串口程序烧录的改进方法,其特征在于,在步骤a中,所述串口的波特率设置为9600Bd。
CN201610256075.5A 2016-04-22 2016-04-22 一种stm32单片机iap串口程序烧录的改进方法 Pending CN105955764A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610256075.5A CN105955764A (zh) 2016-04-22 2016-04-22 一种stm32单片机iap串口程序烧录的改进方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610256075.5A CN105955764A (zh) 2016-04-22 2016-04-22 一种stm32单片机iap串口程序烧录的改进方法

Publications (1)

Publication Number Publication Date
CN105955764A true CN105955764A (zh) 2016-09-21

Family

ID=56915535

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610256075.5A Pending CN105955764A (zh) 2016-04-22 2016-04-22 一种stm32单片机iap串口程序烧录的改进方法

Country Status (1)

Country Link
CN (1) CN105955764A (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106598671A (zh) * 2016-12-14 2017-04-26 上海华阳检测仪器有限公司 测振仪升级装置及其工作方法
CN106802815A (zh) * 2016-12-21 2017-06-06 北京小鸟看看科技有限公司 一种串口闪存在线烧录方法、装置、系统和电子设备
CN106874049A (zh) * 2017-02-17 2017-06-20 安图实验仪器(郑州)有限公司 基于stm32 iap的在线程序更新方法
CN107729040A (zh) * 2017-09-28 2018-02-23 郑州云海信息技术有限公司 一种单片机的iap方法及系统
CN109918110A (zh) * 2019-03-05 2019-06-21 郑州中豫绿能电子科技有限公司 基于dtu下载板的远程升级方法
CN110099028A (zh) * 2018-01-30 2019-08-06 北京智云芯科技有限公司 一种串口数据传输的方法及装置
CN112131153A (zh) * 2020-09-15 2020-12-25 北京自动化控制设备研究所 一种使用arm处理器串口进行实时通讯的方法
CN112860301A (zh) * 2021-01-12 2021-05-28 明见(厦门)软件开发有限公司 一种app使用bootloader中断函数的方法及单片机
CN114168500A (zh) * 2021-12-01 2022-03-11 武汉港迪技术股份有限公司 一种无系统的单片机多接口扩展方法
CN114675792A (zh) * 2022-05-30 2022-06-28 苏州云途半导体有限公司 一种flash软件控制异步分时擦除方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1365058A (zh) * 2001-01-09 2002-08-21 深圳市中兴集成电路设计有限责任公司 一种通用异步串口控制器
CN1366250A (zh) * 2001-01-18 2002-08-28 深圳市中兴集成电路设计有限责任公司 一种同步串口控制器
CN101046786A (zh) * 2007-04-27 2007-10-03 北京中星微电子有限公司 一种实现高效dma传输的dma控制器及传输方法
CN101237346A (zh) * 2008-02-29 2008-08-06 中兴通讯股份有限公司 网络处理器及网络处理器的读写串口的方法
CN104486355A (zh) * 2014-12-30 2015-04-01 大连楼兰科技股份有限公司 防止代码被恶意篡改的方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1365058A (zh) * 2001-01-09 2002-08-21 深圳市中兴集成电路设计有限责任公司 一种通用异步串口控制器
CN1366250A (zh) * 2001-01-18 2002-08-28 深圳市中兴集成电路设计有限责任公司 一种同步串口控制器
CN101046786A (zh) * 2007-04-27 2007-10-03 北京中星微电子有限公司 一种实现高效dma传输的dma控制器及传输方法
CN101237346A (zh) * 2008-02-29 2008-08-06 中兴通讯股份有限公司 网络处理器及网络处理器的读写串口的方法
CN104486355A (zh) * 2014-12-30 2015-04-01 大连楼兰科技股份有限公司 防止代码被恶意篡改的方法和装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
张星温;玉屏;刘婷: "DMA在EPON系统中的应用", 《光通信技术》 *
王政: "4通道数据采集中频接收机的设计和实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
谭钦红; 张际生; 李文杰; 徐沛: "Linux系统中PCI设备DMA数据传输的实现", 《重庆邮电大学学报(自然科学版)》 *

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106598671A (zh) * 2016-12-14 2017-04-26 上海华阳检测仪器有限公司 测振仪升级装置及其工作方法
CN106802815A (zh) * 2016-12-21 2017-06-06 北京小鸟看看科技有限公司 一种串口闪存在线烧录方法、装置、系统和电子设备
CN106874049A (zh) * 2017-02-17 2017-06-20 安图实验仪器(郑州)有限公司 基于stm32 iap的在线程序更新方法
CN107729040A (zh) * 2017-09-28 2018-02-23 郑州云海信息技术有限公司 一种单片机的iap方法及系统
CN110099028A (zh) * 2018-01-30 2019-08-06 北京智云芯科技有限公司 一种串口数据传输的方法及装置
CN109918110A (zh) * 2019-03-05 2019-06-21 郑州中豫绿能电子科技有限公司 基于dtu下载板的远程升级方法
CN112131153A (zh) * 2020-09-15 2020-12-25 北京自动化控制设备研究所 一种使用arm处理器串口进行实时通讯的方法
CN112131153B (zh) * 2020-09-15 2024-04-02 北京自动化控制设备研究所 一种使用arm处理器串口进行实时通讯的方法
CN112860301A (zh) * 2021-01-12 2021-05-28 明见(厦门)软件开发有限公司 一种app使用bootloader中断函数的方法及单片机
CN112860301B (zh) * 2021-01-12 2022-08-16 明见(厦门)软件开发有限公司 一种app使用bootloader中断函数的方法及单片机
CN114168500A (zh) * 2021-12-01 2022-03-11 武汉港迪技术股份有限公司 一种无系统的单片机多接口扩展方法
CN114675792A (zh) * 2022-05-30 2022-06-28 苏州云途半导体有限公司 一种flash软件控制异步分时擦除方法

Similar Documents

Publication Publication Date Title
CN105955764A (zh) 一种stm32单片机iap串口程序烧录的改进方法
CN102999350B (zh) 一种数字信号处理平台中fpga程序升级在线下载方法
TWI409633B (zh) 快閃記憶體儲存裝置、其控制器與資料寫入方法
CN105573800B (zh) 一种基于zynq的单板或多板系统及在线更新方法
CN103914393A (zh) 一种基于mcu的flash不丢失更新存储方法
CN113377408B (zh) 一种高可靠sram型fpga在线升级方法及系统
CN107562437B (zh) 一种基于MicroBlaze软核的FPGA在线升级的系统及方法
CN100383737C (zh) 单片机在线加载升级方法及系统
CN102565671B (zh) 一种集成电路测试仪在线编程的动态配置方法
CN105573810A (zh) 一种无线传感器网络节点远程升级方法及装置
CN107465539A (zh) 固件的升级方法、终端及固件的升级系统
CN100461105C (zh) 一种智能化设备软件升级与修复的方法和系统
CN104750625A (zh) 数据储存装置以及快闪存储器控制方法
CN103777972A (zh) 基于现场可编程门阵列的系统、配置方法以及升级方法
CN104102518A (zh) 一种双cpu系统及其程序升级方法
CN103745167B (zh) 单片机的iap方法及装置
CN107273170A (zh) 一种SoPC程序远程更新系统及方法
CN106708584A (zh) 程序烧录方法及装置
CN104077166B (zh) 基于fpga中ip核的epcs与epcq存储器在线升级方法
CN105068860A (zh) 一种基于ARM的Linux采煤机管理主机系统
CN105159719A (zh) 一种主备用基本输入输出系统的启动方法及装置
CN105786573A (zh) 快速升级智能家居中ZigBee控制器的方法及系统
CN106020869B (zh) 基于can总线的选择性烧录多个单片机节点程序的方法
CN105653330A (zh) 一种基于SD卡的NorFlash烧写系统和方法
CN102622257B (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: 528200 Guangdong Province Nanhai District of Foshan City, Guicheng Guicheng Ping Chau Street No. 1 Yongan Road, A block 504 Jingu Photoelectric Industrial community

Applicant after: Guangdong euro Mandy Technology Co., Ltd.

Address before: 528200 Guangdong Province Nanhai District of Foshan City, Guicheng Guicheng Ping Chau Street No. 1 Yongan Road, A block 504 Jingu Photoelectric Industrial community

Applicant before: FOSHAN CITY NANHAI DISTRICT OPTOMEDIC SCIENCE & TECHNOLOGY CO., LTD.

CB02 Change of applicant information
RJ01 Rejection of invention patent application after publication

Application publication date: 20160921

RJ01 Rejection of invention patent application after publication