首页 > 代码库 > STM32F40x/STM32F41x in-application programming using the USART中文版
STM32F40x/STM32F41x in-application programming using the USART中文版
我是第一次翻译英文手册,知道自己有很多地方翻译的很稀烂,希望高手可以给与指导,谢谢!
AN3965
应用手册
STM32F40x/STM32F41x 使用USART在应用编程
1.简介
当大多数闪存存储器系统被安装在终端产品里时,都要求有升级固件的能力。这种能力就叫做在应用编程能力。本应用手册的目的就是为开发IAP应用程序提供一般指导方法。
STM32F4xx微控制器能够运行用户特定固件来执行嵌入在微控制器的闪存存储器中的IAP。这种操作的特征是允许使用任何类型的通信协议来实现重编程过程。在本应用手册中将使用USART来作为例子介绍。
2.IAP 概述
在意法半导体公司的STM324xG-EVAL 评估板上实现了STM32F4xx 设备。
2.1 原理
你应该通过JTAG/SWD接口,使用选择好的开发工具链或者使用出厂嵌入到系统存储区域的启动加载程序来把IAP驱动程序编程到存储存储器基地址处。
IAP驱动需要使用USART的目的是:
l 从超级终端下载二进制文件到STM32F4xx的内部闪存存储器中。
l 上传STM32F4xx内部闪存存储器内容到一个二进制文件中。
l 执行用户程序
2.2 IAP驱动说明
IAP驱动包括以下源文件:
l main.c:在这里USART串口初始化和RCC 电源初始化,然后,在menu.c文件中 执行主菜单。
l menu.c:这个文件包括主菜单程序。该主菜单提供了一些下载新的二进制文件的可
选项,上载到内部闪存存储器,执行已经下载好的二进制文件和失能用户下载他的二进制文件页的写保护(如果他们写保护了)。
l flash_if.c:这个文件包含写,擦除和失能内部闪存存储器函数写保护。
l common.c:这个文件包含一些与从USART串口外设读写或者读写到USART串 口外设有关的函数。
l ymodem.c: 这个文件通过YMODEM协议,从超级终端应用程序中接收和发送 数据,并且还要接收和发送数据到超级终端中。为了防止接收数据失败,“接收文 件失败”的错误信息要显示出来。如果数据能成功接收,这个数据要从合适的地址 编程到内部闪存存储器中。为了检查数据的完整性,需要在内部数据存储器和闪存 存储器之间做一个对比。如果有任何数据的不符,“验证失败”的错误信息会显示 出来。当图像文件的尺寸比允许的存储器空间大时,或者当用户中止这个任务时, 其它的错误信息也同样会显示出来。
l STM32F4xx 标准外设库。
用户可以执行用户应用程序,也可以按下连接某个引脚的按钮执行IAP来实现重编程目的:
l 不按下复位按钮:切换到用户应用程序。
l 按下复位按钮:显示IAP主菜单。
参考Table 1: STM32F4xx IAP implementation 来获取更多有关STM32F4xG-EVAL 开发板上用来进入IAP模式的操作按钮。
图1是IAP流程图。
3. 运行IAP驱动
3.1 配置超级终端
用户需要使用一个PC端的超级终端或者其他支持ymodem 协议的终端程序,才能运行IAP。在这个文档中使用超级终端。图2是配置超级终端。
图2是COM端口属性
上图以115200bps波特率作为例子。
用户一定要注意系统时钟频率。为了保证串口通信成功,终端应用中的系统时钟频率一定要保证波特率为115200bps。
3.2 执行IAP驱动
作为演示例子,在本应用手册里是按下一个与引脚连接的按钮来启动IAP驱动。
通过按下复位按钮,用户可以运行IAP驱动来给STM32F4xx的内部闪存存储器重编程。使用按钮不是强制性的;用户也可以为这个有效引脚提供一个信号。 表1 : STM3 2 F4 x x IAP 实现。;
4.IAP 驱动菜单
在window超级终端上面运行IAP显示下面的菜单。
图3 IAP在STM32F4xx闪存存储器没有受保护时的驱动菜单
4.1 下载镜像到内部闪存存储器中
通过以下步骤,使用超级终端向STM32F4xx的内部闪存存储器下载二进制文件。
1. 按下键盘1选择菜单下载镜像到STM32F4xx内部闪存中。
2. 在传输菜单中选择发送文件。
3. 在文件名地方,选择你想要下载的二进制文件的名字和路径。
4. 在协议列表中选择Ymodem协议。
5. 点击发送按钮。
这样,IAP驱动从已经定义好的基地址加载二进制文件到STM32F4xx的内部闪存存储器中,并且,在超级终端上显示二进制文件的名字和大小。更多有关基地址设置的内容可以参考第 6章,用户变成条件。
4.2 从内部闪存存储器上载镜像
通过以下步骤,从用户应用程序地址开始上载一个内部闪存存储器的拷贝。
1.按下键盘2选择菜单从上载STM32F4xx的内部闪存的镜像。
2.选择传输菜单接收文件。
3.选择保存二进制文件的文件夹。
4.从协议列表中选择Ymodem协议。
5.点击接收按钮。
4.3 执行新程序
一旦新程序被加载,按下键盘3选择菜单执行新程序,和执行这段代码。
4.4 失能写保护
当IAP启动时,它会检查闪存存储器页,用户程序会被加载到那里处理是否有任
何写保护。如果有,菜单会显示图4
图4 当STM32F4xx的内部闪存存储器写保护时的IAP驱动菜单
在下载新程序之前,必须要失能写保护。可以按下键盘4来做到这个。失能写保护和重载新的选项字节值时,一定要系统复位。从复位恢复后,如果按下了这个按钮,图3中的菜单就会显示。
注意:在这个应用中,不支持读保护,用户需要验证这个闪存存储器没有读保护。
5.STM32F4xx IAP实现总结
表1 做了一个STM32F4xx IAP实现总结
表1 STM32F4xx IAP实现
1.在文件flash_if.h中定义了用户应用字单元地址: #define APPLICATION_ADDRESS
0x8004000 。可以修改这个默认值为自己想要的值。
STM32F4xx IAP 程序包里有以下内容:
l 源文件和IAP程序预配置项目(在路径Project\STM32F4xx_IAP的文件夹下)
l 源文件和预配置项目,这些项目可以使用IAP把建立好的应用加载到闪存存储器中(在路径Project\STM32F4xx_IAP\binary_template的文件夹下)。
在程序包中的Readme.txt文件说明了怎样一步步地实现这个IAP应用。