基于Ymodem协议的STM32F407的串口IAP

2019-06-14来源: eefocus关键字:Ymodem协议  STM32F407  串口IAP

IAP简介

IAP:In Application Programming 是指在应用编程,即在程序运行中编程,就是片子提供一系列的机制(硬件/软件上的)当片子在运行程序的时候可以提供一种改变flash数据的方法。这种机制的存在可以实现单片机设备的免拆机升级和远程升级。一般实现形式为在单片机内先执行引导程序,由引导程序判断是否需要进行固件升级。如果需要执行固件升级,则引导程序通过串口或者SD卡等IO设备将应用程序的固件写到规定的地址上,然后跳转到规定的地址上执行应用程序。


Ymodem协议

Ymodem是一种错误纠正协议。使用较大数据块的调制解调采用这种协议,以获得更高的工作效率。采用Ymodem协议的调制解调器以1024字节数的块发送数据。成功接收的不会被确认。有错误的块被确认(NAK),并重发。Ymodem类似于Xmodem-1K,不同之处是提供批处理模式(batch mode)。在批处理模式下,可以使用一个命令发送一些文件。Ymodem使用循环冗余码校验作为错误校验方式。——摘自百度百科


基于Ymodem协议的IAP引导程序

硬件平台

原子探索者STM32F407开发板


通信接口

串口


实现流程

按住复位键时按下KEY1键,在松开复位键之前按住KEY1不放,松开复位键,红色LED灯常亮,这时便进入固件升级程序,不断向上位机发送字符’C’请求上位机发送应用程序固件。这时打开上位机查询请求,上位机接收到请求后,通过串口发送第一个数据包,这个数据包主要包含了传输的文件的文件名和文件大小,因为这次的引导程序是直接将接收的固件直接写入单片机内部的Flash,所以我们真正需要的数据就是文件的大小的,文件的大小就整个应用程序固件的大小。我们需要根据这个数据来决定需要擦除多少个扇区来保证有足够空间存放应用程序固件。 

当单片机擦除扇区完成后,会向上位机发送一个应答字符。接着再发送一个’C’,准备接收真正的应用程序固件的数据。上位机接收到单片机发送过来的应答字符和’C’字符后,开始正式的文件传输,每次传送一个包的数据,单片机把接收到的数写进指定的内部Flash中。并向上位机发送应答字符,上位机接收到应答字符后,继续发送下一包数据,直至文件传送完毕后,上位机向单片机发送一个表示文件传输结束的包。标识文件传输完成。单片机在接受到此包后,向上位机发送一个应答字符。之后执行一系列操作后跳转至应用程序。 

整个引导程序通过IAP更新应用程序固件的流程就如上所述。

 

实现细节

STM32F407内部Flash模块构成 

 这里写图片描述

由于STM32F4系列的内部Flash扇区大小并不是标准统一的,所以在擦除时较之前的F103系列有所不一样。

STM32F407擦除指定地址和空间大小的Flash 

这里写图片描述

从首地址开始,每擦除一片扇区,地址在加上此扇区的大小,再作为基地址擦除下一扇区。直至擦除的FLASH达到指定的大小。

获取指定扇区的大小 



关键字:Ymodem协议  STM32F407  串口IAP

编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic464668.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM32 Keil查看程序占用ROM和RAM
下一篇:STM32 YMODEM实现bootloader

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

stm32 Bootloader设计(YModem协议)

位的win7才可以使用 超级终端。64位的win7下超级终端没办法使用。 不过SecureCRT工具到是可以在64位win7使用,但是官方代码不对其支持。SecureCRT下支持的是最原始的YModem协议,第一帧数据包中不包含总字节数。超级终端下的YModem应该是改进版的,所以官方的dome只可以在超级终端下传输。下面会对YModem进行详细说明。就会知道其中的原因。         首先奉上一个精简的Bootloader工程。         http://pan.baidu.com/share/link
发表于 2019-06-14
stm32 Bootloader设计(YModem协议)

STM32学习笔记之Bootloader升级Ymodem协议简介

YModem协议YModem协议是由XModem协议演变而来的,每包数据可以达到1024字节,是一个非常高效的文件传输协议 。源码宏定义#define SOH (0x01) /* start of 128-byte data packet /#define STX (0x02) / start of 1024-byte data packet /#define EOT (0x04) / end of transmission /#define ACK (0x06) / acknowledge /#define NAK (0x15) / negative acknowledge /#define CA (0x18) / two of
发表于 2019-03-24
STM32学习笔记之Bootloader升级Ymodem协议简介

stm32 Bootloader设计(YModem协议)

升级。因为只有xp或32位的win7才可以使用 超级终端。64位的win7下超级终端没办法使用。 不过SecureCRT工具到是可以在64位win7使用,但是官方代码不对其支持。SecureCRT下支持的是最原始的YModem协议,第一帧数据包中不包含总字节数。超级终端下的YModem应该是改进版的,所以官方的dome只可以在超级终端下传输。下面会对YModem进行详细说明。就会知道其中的原因。          首先奉上一个精简的Bootloader工程。        
发表于 2016-10-17
stm32 Bootloader设计(YModem协议)

第51章 设置FLASH的读写保护及解除—零死角玩转STM32-F429系列

本章参考资料:《STM32F4xx 中文参考手册》、《STM32F4xx规格书》、库说明文档《stm32f4xx_dsp_stdperiph_lib_um.chm》以及《Proprietary code read-out protection on microcontrollers》。51.1 选项字节与读写保护在实际发布的产品中,在STM32芯片的内部FLASH存储了控制程序,如果不作任何保护措施的话,可以使用下载器直接把内部FLASH的内容读取回来,得到bin或hex文件格式的代码拷贝,别有用心的厂商即可利用该代码文件山寨产品。为此,STM32芯片提供了多种方式保护内部FLASH的程序不被非法读取,但在默认情况下该保护功能
发表于 2019-09-20
第51章 设置FLASH的读写保护及解除—零死角玩转STM32-F429系列

第45章 DCMI—OV2640摄像头—零死角玩转STM32-F429系列

本章参考资料:《STM32F4xx参考手册》、《STM32F4xx规格书》、库帮助文档《stm32f4xx_dsp_stdperiph_lib_um.chm》。关于开发板配套的OV2640摄像头参数可查阅《ov2640datasheet》配套资料获知。STM32F4芯片具有浮点运算单元,适合对图像信息使用DSP进行基本的图像处理,其处理速度比传统的8、16位机快得多,而且它还具有与摄像头通讯的专用DCMI接口,所以使用它驱动摄像头采集图像信息并进行基本的加工处理非常适合。本章讲解如何使用STM32驱动OV2640型号的摄像头。45.1 摄像头简介在各类信息中,图像含有最丰富的信息,作为机器视觉领域的核心部件,摄像头被广泛地应用在
发表于 2019-09-20
第45章 DCMI—OV2640摄像头—零死角玩转STM32-F429系列

第43章 RTC—实时时钟—零死角玩转STM32-F429系列

函数对每个外设都建立了一个初始化结构体,比如RTC_InitTypeDef,结构体成员用于设置外设工作参数,并由外设初始化配置函数,比如RTC_Init()调用,这些配置好的参数将会设置外设相应的寄存器,达到配置外设工作环境的目的。初始化结构体和初始化库函数配合使用是标准库精髓所在,理解了初始化结构体每个成员意义基本上就可以对该外设运用自如。初始化结构体定义在stm32f4xx_rtc.h头文件中,初始化库函数定义在stm32f4xx_rtc.c文件中,编程时我们可以结合这两个文件内注释使用。RTC初始化结构体用来设置RTC小时的格式和RTC_CLK的分频系数。代码 431 RTC初始化结构体1 typedef st
发表于 2019-09-20
第43章 RTC—实时时钟—零死角玩转STM32-F429系列

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved