1 前言 对于大多数基于 Flash 的系统而言,在最终产品中安装之后,能够对固件进行更新,这一点非常重要。这一功能被称为在应用中编程 (IAP)。此应用笔记的目的就是为创建 IAP 应用程序提供通用准则。 % {& `9 \& b7 P STM32F4xx 微控制器能够运行用户指定的固件,从而执行微处理器内置 Flash 的 IAP。借助这一特性,在重新编程过程中可以使用任意类型的通信协议。本应用笔记以 USART 为例进行说明。 2 IAP 概述 ! b% x2 a( ]& S$ `% s7 @4 m: H STM32F4xx 器件可在意法半导体的 STM324xG-EVAL 评估板上实现。 0 b& m/ V6 n' K" C) z0 m 2.1 原理 应使用所选的开发工具通过 JTAG/SWD 接口,或使用系统存储区中工厂内置的自举程序将IAP 驱动程序编程到 Flash 的基址。 5 b% K2 o$ y7 O6 N9 C IAP 驱动程序使用 USART 执行以下操作: ● 从超级终端将二进制文件下载到 STM32F4xx 内部 Flash 中。 ! y6 n q- ~) s9 `- `( ~, f# M) s+ r9 ] ● 将 STM32F4xx 的内部 Flash 内容(从指定的用户应用程序地址开始)上传到二进制文件中。 ● 执行用户程序。 2.2 IAP 驱动程序说明IAP . X$ `( r% v* \1 W' k( K$ i ) Q$ B5 y5 g- u. h1 I 驱动程序包含下列源文件: ) `1 x; H6 q1 F! q# I ● main.c:在此文件中对 USART 进行初始化并配置 RCC。然后通过 menu.c 文件执行主菜单。 ● menu.c:包含主菜单例程。主菜单提供了多种操作选项,包括下载新的二进制文件,上传内部 Flash,执行已加载的二进制文件,去除将要被加载二进制文件页的写保护(如果这些页面被写保护)。 $ E, J3 x) l; j. u! P, e% l ● flash_if.c:包含内部 Flash 的写入、擦除和禁止写保护功能。 $ T+ b; u* W, C7 i ● common.c:包含从/向 USART 外设读取/写入相关功能 ● ymodem.c:使用 YMODEM 协议从/向超级终端应用程序接收/发送数据(a)。如果接收数据时出现故障,则显示错误消息“接收文件失败”。如果成功接收数据,则将该数据编程到内部 Flash 的相应地址中。然后对内部 RAM 内容与内部 Flash 内容进行比较,以验证数据是否完整。如果数据存在不一致的情况,则显示错误消息“验证失败”。如果映像文件大小超过允许的存储空间,或用户中止任务时,还会显示其它错误消息。 [1 R% N+ ~' H, \8 I2 b ● STM32F4xx 标准外设库。 - a6 J" z& p F* s 用户可以按下连接到引脚的按钮来选择是执行用户应用程序,还是执行 IAP 重新编程: / f3 x& m H6 l ● 复位时不按按钮:切换到用户应用程序。 8 |% a. U$ u M3 s: N9 y3 @6 Z ● 复位时按下按钮:显示 IAP 主菜单。 - c# J# T' t& q9 ` 有关 STM324xG-EVAL 板上用于进入 IAP 模式的按钮的详细信息,请参见表 1:STM32F4xxIAP 的实现。 IAP 流程图如图 1 所示。 3 运行 IAP 驱动程序 ! v! X5 U" ~$ ^5 R " \; E) J* K) W+ b4 T. E 3.1 超级终端配置 要使用 IAP,用户的 PC 必须能够运行超级终端或其它支持 ymodem 协议的终端程序。本文档中使用超级终端。图 2 给出了超级终端的配置。) O, S3 }9 f3 m H# H4 I8 j 注: 使用波特率值 115200 bps 进行举例说明。选择系统时钟频率时,必须要小心。为了能顺利通过 USART 进行通信,最终应用中的系统时钟频率必须保证能够产生 115200 bps 的波特率。3.2 执行 IAP 驱动程序例如,在本应用笔记中,按下连接到引脚的按钮可以启动 IAP 驱动程序。在复位时按下按钮,用户可运行 IAP 驱动程序以重写编程 STM32F4xx 的内部 Flash。当然,不一定要使用按钮,用户还可以对该引脚施加相当于有效电平的信号。请参见表 1:STM32F4xx IAP 的实现。 4 I, i; n/ u9 Z( d% F. d& w& i) `# d5 O6 B9 `( C& y8 E. s$ U |
《RT-Thread设备驱动开发指南》书籍学习记录
STM32F407/STM32F417通过以太网实现在应用中编程 (IAP)
STM32固件库分享,超全系列整理
分享STM32F407的学习资料 附学习笔记
STM32F4中文资料--基础篇
基于STM32F407和Cubemx的ADC采集+DMA传输实现简易示波器经验分享
基于STM32F407的DMA采样+FFT时域经验分享
基于STM32F407中的RNG获取随机数经验分享
STM32F4-DISC 实现USB主机(U盘)和USB设备(虚拟串口)自动切换
STM32F4中文用户手册
这个我怎么没有找到官方例程!!!