CN111913727B - 一种采用STM32单片机内部Flash实现AISG-V3协议固件存储的方法 - Google Patents
一种采用STM32单片机内部Flash实现AISG-V3协议固件存储的方法 Download PDFInfo
- Publication number
- CN111913727B CN111913727B CN202010816702.2A CN202010816702A CN111913727B CN 111913727 B CN111913727 B CN 111913727B CN 202010816702 A CN202010816702 A CN 202010816702A CN 111913727 B CN111913727 B CN 111913727B
- Authority
- CN
- China
- Prior art keywords
- flash
- time
- command
- response frame
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 34
- 230000004044 response Effects 0.000 claims abstract description 36
- 230000008569 process Effects 0.000 claims abstract description 23
- 230000005540 biological transmission Effects 0.000 claims abstract description 16
- 238000013507 mapping Methods 0.000 claims description 2
- 230000006870 function Effects 0.000 abstract description 9
- 230000006854 communication Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 239000000243 solution Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
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/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种采用STM32单片机内部Flash实现AISG‑V3协议固件存储的方法,包括以下步骤:将中断向量表、定时中断服务程序、UART接收和发送中断服务程序以及上述三个中断服务程序中调用的函数加载到RAM空间;固件下载阶段,在接收“文件下载”命令过程中读取该命令的数据长度字段N,根据当前Flash写入地址和N判断是否执行Flash页擦除,利用数据传输时间并行完成Flash的按需擦除;“文件下载”命令接收完毕后,封装好响应帧并不启动发送,而立即执行固件数据的Flash写入,最长用时为写入256字节所用时间T_flash_max;响应帧延迟时间T1;在定时中断服务程序中检测发现T1时间到,则启动响应帧发送,响应帧传输用时为T2,有T1+T2>T_flash_max,保证在下一帧到达之前,当前帧的固件数据已成功写到Flash中。
Description
技术领域
本发明涉及计算机技术领域,特别是一种采用STM32单片机内部Flash实现AISG-V3协议固件存储的方法。
背景技术
AISG-V3协议要求ALD(Antenna Line Device)具有固件更新功能,便于对远程部署的ALD设备进行远程升级,固件更新涉及到固件存储和更新两个过程,在固件存储中,根据AISG-V3协议,固件下载过程为:首先发送“Download Start”命令,然后循环执行“Download File”命令,每次发送256字节固件数据,直至发送完毕,AISG-V3协议要求ALD设备收到数据帧之后必须在3ms-10ms内开始回复基站,否则基站将认为ALD通信超时,断开链路,其中3-10ms为随机延时。
以STM32单片机为例,根据STM32单片机的片内Flash写入和擦除的特性:首先,片内Flash擦除的最小单位是一个页,一个页2Kbyte,最短时间为20ms,最长为40ms,写入2个字节用时最短40us最长70us;其次,在执行Flash擦除和写入期间,单片机从内部Flash存储器的取指令操作都将被挂起,即在执行Flash擦除和写入期间,Flash内的程序无法继续执行,直到擦除或写入操作完成后,Flash内的程序将继续执行。因而在单片机存储固件过程中,执行Flash擦除或写入操作期间,单片机将无法在协议规定时间内给基站返回回应帧,基站会误认为ALD设备通信超时,从而中断通信。
如果收到固件数据为256字节,而且在写入这256字节过程中需要执行Flash页擦除操作,因而在最坏情况下,用时间58ms,其中Flash擦除用时40ms,写入256字节用时18ms,且在这58毫秒期间,单片机无法执行Flash中的程序,会导致通讯中断。
现有技术的解决方法是,额外增加一个外部存储芯片,保证在执行外部存储芯片的操作过程中,单片机通信仍然可以正常执行。这样的话就会导致成本变高,安全性也差,程序容易被破解。
发明内容
针对现有技术中存在的问题,本发明的目的在于提供一种采用STM32单片机内部Flash实现AISG-V3协议固件存储的方法,该方法无需增加外部存储设备,且完全符合AISG-V3协议响应帧延迟时间的要求,无需增加额外成本,安全性高。
为解决上述问题,本发明采用如下的技术方案。
一种采用STM32单片机内部Flash实现AISG-V3协议固件存储的方法,包括以下步骤:
将中断向量表映射到RAM空间,将定时中断服务程序、UART接收中断服务程序、UART发送中断服务程序,以及中断服务程序中调用的函数通过分散加载文件配置到RAM空间;
在固件下载过程中,假设Flash的当前写入地址为Addr_cur,在接收“文件下载”命令过程中,首先判别该命令中所包含固件数据的字节数量,记做N,并据此计算判断是否需要执行Flash页擦除;
“文件下载”命令接收完毕,且判断数据有效性之后,封装好响应帧,不执行发送,而是首先启动响应帧延迟时间定时器,然后立即开始执行Flash写入操作,用时记做T_flash,其最大值为写入256字节所用时间T_flash_max;响应帧延迟时间记做T1,在定时中断服务程序中检测发现T1时间到,则立即启动响应帧的发送,响应帧传输用时记做T2,T1+T2>T_flash_max,保证在下一帧到达之前,当前帧的固件数据已成功写到Flash中。
判断是否需要执行Flash页擦除,按照如下算法Addr_cur/2048+1是否等于(Addr_cur+N+256)/2048计算,如果等于则执行页擦除,擦除过程中,串口仍在正常接收数据,从而充分利用了“文件下载”命令的数据传输时间执行Flash擦除,如果不等则表明无需页擦除。
所述T_flash_max=18ms,T1设置为AISG-V3协议允许的最大值:10ms,“文件下载”命令的响应帧为14字节,其传输用时T2=14ms。
本发明的有益效果
相比于现有技术,本发明的优点在于:
1、将定时中断服务程序、UART接收中断服务程序、UART发送中断服务程序,以及中断服务程序中调用的函数通过分散加载文件配置到RAM空间,保证了在通信数据的接收和发送过程中不访问Flash空间,从而在执行Flash擦除和写入的过程中仍然能够正常接收和发送AISG通信数据,执行定时中断服务程序等功能;
2、(通常是在命令帧接收完毕后再进行命令的处理)创新提出在“文件下载”命令帧接收过程中检测“数据长度”字段,确定该命令中包含的固件数据长度,并计算是否需要执行Flash页擦除,如果需要便立即执行Flash页擦除,利用了数据接收过程所用的时间,从而在数据接收完毕后,只需要执行Flash写入操作;
3、合理利用了“文件下载”命令的响应帧延迟时间和响应帧的发送所用时间,将固件数据写入Flash。将“文件下载”命令的响应帧延迟时间人为设置为最大值10ms(T1=10ms),并利用RAM空间的发送函数完成响应帧发送,同时利用发送响应帧所用时间T2,14ms,保证了在接收下一个“文件下载”命令帧是,固件数据已经被成功写入Flash中,且通信过程满足AISG-V3协议要求;
对Flash的擦除操作采用按需擦除,而不是整体擦除,使固件下载功能既可以实现单次下载,又可以实现下载中断后重复下载的应用场景。注:整体擦除方法无法满足基站在下载过程中中断下载,然后又重启下载的应用场景,该设计无需额外增加存储器,降低了ALD设备的硬成本,提高了系统的可靠性和安全性。
附图说明
图1为本发明的时序图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述;显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
一种采用STM32单片机内部Flash实现AISG-V3协议固件存储的方法,对Flash存储空间采用动态擦除方法,不是一次性全部擦除,而是在写入过程中根据需要进行擦除;(根据STM32单片机Flash特性,擦除一个2Kbyte的页用时40ms,因为假设固件存储空间为NKbyte,则擦除时间最小为20*N ms,假设固件存储空间大小为40Kbyte,则用时需要800ms,因而如果ALD在收到Download Start命令后一次性擦除固件存储空间,则会导致ALD响应超时)。
将中断向量表(Table1)映射到RAM空间,保证了单片机因Flash执行写入和擦除操作而挂起时,可以继续响应中断,执行中断跳转;将定时中断服务程序(Fun1)、UART接收中断服务程序(Fun2)、UARTUART发送中断服务程序(Fun3),以及中断服务程序中调用的函数通过分散加载文件配置到RAM空间,保证单片机因Flash执行写入和擦除操作而挂起时,可以正常执行通信数据发送和接受功能。
固件下载过程中,假设Flash的当前写入地址为Addr_cur。在接收“文件下载”命令过程中,首先判别该命令中所包含固件数据的字节数量,记做N,然后按照如下算法计算是否需要执行Flash页擦除:
Addr_cur/2048+1是否等于(Addr_cur+N+256)/2048,如果等于则执行页擦除,擦除过程中,串口仍在正常接收数据,从而充分利用了“文件下载”命令的数据传输时间执行Flash擦除,如果不等则表明无需页擦除。
在Flash执行擦除过程中,由于中断向量表(Table1)和串口接收中断服务程序(Fun2)运行在RAM空间,所以数据接收不受影响。
“文件下载”命令接收完毕,且判断数据有效性之后,封装好响应帧并不启动发送,而是立即开始执行固件数据的Flash写入操作,用时记做T_flash,最大值为写入256字节所用时间T_flash_max=18ms,但并不立即启动发送,而是启动响应帧延迟定时器,响应帧延迟时间记做T1,设置为最大值10ms,在定时中断服务程序(Fun1)中检测发现T1时间到,则立即启动响应帧的发送(Fun3),“文件下载”命令的响应帧14字节,用时记做T2,T2=14ms,T1+T2>T_flash_max,因而保证了在基站发送下一帧“文件下载”命令时,单片机已经完成将上一帧“文件下载”命令中的固件数据成功写入到了Flash中,不影响后续命令的接收。
系统响应时间分析:
假设将当前的“文件下载”帧记做第n帧,下一帧记做第n+1帧。“文件下载”命令的响应帧延迟时间记作T1,根据AISG-V3协议规定,T1最大值可取为10ms,此处令T1=10ms。假设固件总大小为N个字节,固件下载过程一共由M个“文件下载”命令帧完成,则根据协议规定,前M-1个“文件下载”命令帧中各包含256字节的固件数据,最后一个“文件下载”命令帧包含N-256×(M-1)个字节,对“文件下载”命令的响应帧长度为14个字节,在9600波特率情况下,发送响应帧用时记做T2,且T2=14ms。
前M-1个“文件下载”命令帧每个命令帧长度为270个字节,其中命令中的“数据长度”字段位于第10和第11字节,即当单片机接收到“数据长度”字段后,后续还有259个字节需要接受,用时259ms,因而单片机有足够的时间执行Flash页擦除操作,如前所述,每次最多擦除一个页,用时最多40ms。
第M个“文件下载”命令帧,如前所述,在前M-1个“文件下载”命令帧中的擦除判断公式中,每次都多预留了256字节的空间(公式(Addr_cur+N+256)/2048中的256),因而第M帧不需要执行页擦除操作,只需要将固件数据写入Flash,其包含的固件数据为N-256×(M-1),小于256,因而执行Flash写入最多用时小于18ms,有T1+T2>18ms,从而仍可保证在接收到最终的“下载结束”命令帧时,第M帧中的固件数据已经成功写入到Flash中。
如图1所示,以STM32F103C8T6单片机为例,其中T11为发送N+3个字节所用时间,为(N+3)毫秒,协议规定N为256,所以T11为259毫秒,T12最大为70毫秒,T13为响应帧的延时时间10毫秒,T14为响应帧发送所用时间,T15为写入256字节到Flash的用时18毫秒。
以上所述,仅为本发明较佳的具体实施方式;但本发明的保护范围并不局限于此。任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其改进构思加以等同替换或改变,都应涵盖在本发明的保护范围内。
Claims (2)
1.一种采用STM32单片机内部Flash实现AISG-V3协议固件存储的方法,其特征在于,包括以下步骤:
将中断向量表映射到RAM空间,将定时中断服务程序、UART接收中断服务程序、UART发送中断服务程序,以及中断服务程序中调用的函数通过分散加载文件配置到RAM空间;
在固件下载过程中,假设Flash的当前写入地址为Addr_cur,在接收“文件下载”命令过程中,首先判别该命令中所包含固件数据的字节数量,记做N,并据此计算判断是否需要执行Flash页擦除;
“文件下载”命令接收完毕,且判断数据有效性之后,封装好响应帧,不执行发送,而是首先启动响应帧延迟时间定时器,然后立即开始执行Flash写入操作,用时记做T_flash,其最大值为写入256字节所用时间T_flash_max;响应帧延迟时间记做T1,在定时中断服务程序中检测发现T1时间到,则立即启动响应帧的发送,响应帧传输用时记做T2,有T1+T2>T_flash_max,
在判断是否需要执行Flash页擦除,按照如下算法Addr_cur/2048 +1 是否等于(Addr_cur+N+256)/2048计算,如果等于则执行页擦除,擦除过程中,串口仍在正常接收数据,从而充分利用了“文件下载”命令的传输时间执行Flash擦除,如果不等则表明无需页擦除。
2.根据权利要求1所述的一种采用STM32单片机内部Flash实现AISG-V3协议固件存储的方法,其特征在于:所述T_flash_max=18ms,T1设置为AISG-V3协议允许的最大值:10ms,“文件下载”命令的响应帧为14字节,其传输用时T2= 14ms。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010816702.2A CN111913727B (zh) | 2020-08-14 | 2020-08-14 | 一种采用STM32单片机内部Flash实现AISG-V3协议固件存储的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010816702.2A CN111913727B (zh) | 2020-08-14 | 2020-08-14 | 一种采用STM32单片机内部Flash实现AISG-V3协议固件存储的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111913727A CN111913727A (zh) | 2020-11-10 |
CN111913727B true CN111913727B (zh) | 2023-06-30 |
Family
ID=73283071
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010816702.2A Active CN111913727B (zh) | 2020-08-14 | 2020-08-14 | 一种采用STM32单片机内部Flash实现AISG-V3协议固件存储的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111913727B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117193833B (zh) * | 2023-11-06 | 2024-01-23 | 成都科江科技有限公司 | 一种工控应用固件在线升级的方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105302612A (zh) * | 2015-11-18 | 2016-02-03 | 西南技术物理研究所 | 快速升级电子系统机箱内单片机软件程序的方法 |
CN110096294A (zh) * | 2019-05-07 | 2019-08-06 | 柏科智能(厦门)科技有限公司 | 一种可任意断点无线升级mcu应用程序的方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030005212A1 (en) * | 2001-06-29 | 2003-01-02 | Cocca J. David | Method and apparatus for dynamically modifying a stored program |
US8117587B1 (en) * | 2008-06-03 | 2012-02-14 | Richard Paul Testardi | Microcontroller-resident software development environment supporting application-level asynchronous event handling, interactive debugging and pin variables for embedded systems |
CN102567054B (zh) * | 2011-12-22 | 2015-05-20 | 深圳市大富科技股份有限公司 | 双塔放大器的控制方法及相应的装置 |
CN103745167B (zh) * | 2013-12-31 | 2016-10-26 | 广东岭南通股份有限公司 | 单片机的iap方法及装置 |
CN104090796B (zh) * | 2014-07-08 | 2017-06-09 | 成都万维图新信息技术有限公司 | 一种嵌入式设备程序更新方法和系统 |
CN105278998A (zh) * | 2015-11-17 | 2016-01-27 | 北京联合众为科技发展有限公司 | 一种单片机固件升级方法 |
CN110109693A (zh) * | 2019-04-22 | 2019-08-09 | 南京理工大学 | 嵌入式设备远程固件升级方法 |
-
2020
- 2020-08-14 CN CN202010816702.2A patent/CN111913727B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105302612A (zh) * | 2015-11-18 | 2016-02-03 | 西南技术物理研究所 | 快速升级电子系统机箱内单片机软件程序的方法 |
CN110096294A (zh) * | 2019-05-07 | 2019-08-06 | 柏科智能(厦门)科技有限公司 | 一种可任意断点无线升级mcu应用程序的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111913727A (zh) | 2020-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106874224B (zh) | 自动搬运且适应器件的多线SPI-Flash控制器 | |
CN115858431A (zh) | 数据传输控制方法、控制器及电子设备 | |
CN112947977B (zh) | 一种软件在线升级方法及系统 | |
US8990549B2 (en) | Method and system for booting electronic device from NAND flash memory | |
CN111913727B (zh) | 一种采用STM32单片机内部Flash实现AISG-V3协议固件存储的方法 | |
CN106020875A (zh) | 嵌入式终端的固件更新管理方法和装置 | |
CN107301068A (zh) | 一种单片机上的一对多无线程序升级系统及方法 | |
US9063751B2 (en) | Single wire bootloader for target device with self-programming capability | |
CN114138333A (zh) | 程序加载的方法及相关装置 | |
CN111538515A (zh) | 一种电能表程序的升级方法、装置和设备 | |
CN111897560A (zh) | 基于NB-IoT模块的程序升级系统、方法、设备以及存储介质 | |
JPH0728772A (ja) | マイクロコンピュータ | |
CN109408426B (zh) | 一种灵活通用的串行通信方法及系统 | |
US8656089B2 (en) | Electronic device, memory controlling method thereof and associated computer-readable storage medium | |
CN112416411A (zh) | 升级方法及装置、设备端、服务器、计算机可读介质 | |
CN109933479B (zh) | 故障模拟与仿真方法以及相关设备 | |
US10658046B2 (en) | Memory device and method for operating the same | |
EP2618259B1 (en) | Data erasable method of memory in smart card and smart card thereof | |
CN110011824B (zh) | 一种蓝牙单线通讯的配对方法、存储介质及设备 | |
CN111651309B (zh) | 计算机系统的可靠性测试方法及其系统 | |
CN111984291B (zh) | 数据烧录方法、装置、终端及存储介质 | |
CN109299018B (zh) | 一种Flash存储器中历史数据的读取方法及装置 | |
CN112908390A (zh) | 数据存储方法、装置、电子设备及存储介质 | |
CN109144399A (zh) | 一种数据存储方法、装置及电子设备 | |
CN104349209A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |