datasheet

基于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://www.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协议)

STM32F4定时器时钟频率和时钟源

从时钟树中我们可以得知(1)高级定时器timer1, timer8以及通用定时器timer9, timer10, timer11的时钟来源是APB2总线(2)通用定时器timer2~timer5,通用定时器timer12~timer14以及基本定时器timer6,timer7的时钟来源是APB1总线从STM32F4的内部时钟树可知,(1)当APB1和APB2分频数为1的时候,TIM1、TIM8~TIM11的时钟为APB2的时钟,TIM2~TIM7、TIM12~TIM14的时钟为APB1的时钟;(2)而如果APB1和APB2分频数不为1,那么TIM1、TIM8~TIM11的时钟为APB2的时钟的两倍,TIM2~TIM7、TIM12
发表于 2019-06-18
STM32F4定时器时钟频率和时钟源

STM32CubeMX开发stm32f103rbt6 CAN例程(二)

1、STM32CubeMX配置    2、生成代码查看  3、编写代码程序下载:http://download.csdn.net/download/white_loong/101374684、使用CAN分析仪测试(波特率125K)问题:程序CAN收发同时打开例如:1、main() {     HAL_CAN_Receive_IT();     HAL_CAN_Transmit_IT(); }  HAL_CAN_RxCpltCallback() { 
发表于 2019-06-18
STM32CubeMX开发stm32f103rbt6 CAN例程(二)

stm32f407之CAN控制器(操作寄存器)

),和can2(从),其中过滤器的设置是通过can1来设置,其他工作模式,波特率等,可以各自设置。每个控制器有三个发送邮箱,两个fifo,每个fifo有三个接收邮箱。发送:选择一个空的发送邮箱,把帧信息写到该发送邮箱的寄存器里,请求发送,控制器就会根据标识符的优先级把帧先后发送出去。接收:如果接收到的帧的标识符能过过滤表的一系列过滤,该帧信息就会保存在fifo接收邮箱的寄存器里。过滤器:stm32f407共有28组过滤器,每组过滤器可以设置关联到fifo0或者fifo1,每组都包括两个32位存储器,可以配置成一个32位有位屏蔽功能的标识符过滤器,或者两个32位完全匹配的标识符过滤器,或者两个16位有位屏蔽功能的标识符过滤器,或者四个16位完全
发表于 2019-06-18
stm32f407之CAN控制器(操作寄存器)

小广播

何立民专栏

单片机及嵌入式宝典

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

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