您好,欢迎来到爱问旅游网。
搜索
您的当前位置:首页STM32F4xx系列IAP之U盘版

STM32F4xx系列IAP之U盘版

来源:爱问旅游网
STM32F4xx系列IAP之U盘版

本文是STM32F4xx系列 U盘IAP的详细说明文档,并采用理论结合例程的全新方式向读者讲述如何使用本例程进行IAP操作,凡是STM32F4xx系列单片机(带USBOTG接口)并满足USB硬件连接条件的系统都可以使用本例程,本例程具有丰富的可拓展性,例如可以改变BOOT区的大小,可以屏幕打印IAP输出信息,可以选择BOOT程序的启动方式,可以自启动,也可以由事件启动比如按键,等。

本文主要对以下内容进行讲解: 1.STM32IAP技术简介

2.STM32F4xx系列U盘IAP方案 3.U盘IAP程序例程详细讲解

4.使用该BOOT可能遇到的问题及解决办法 5.程序拓展

1.STM32IAP技术简介

IAP,全称是“In-Application-Programming”,中文解释为“在程序中编程”。IAP是一种对通过微控制器的对外接口实现自身程序更新的技术。 在STM32微控制器上实现IAP程序之前首先要回顾一下STM32的内部闪存组织架构和其启动过程。STM32的内部闪存地址起始于0x8000000,一般情况下,程序文件就从此地址开始写入。此外STM32是基于Cortex内核的微控制器,其内部通过一张“中断向量表”来响应中断,程序启动后,将首先从“中断向量表”取出复位中断向量执行复位中断程序完成启动。而这张“中断向量表”的起始地址是0x8000004,当中断来临,STM32的内部硬件机制亦会自动将PC指针定位到“中断向量表”处,并根据中断源取出对应的中断向量执行中断服务程序。最后还需要知道关键的一点,通过修改STM32工程的链接脚本可以修改程序文件写入闪存的起始地址。

2.STM32F4xx系列U盘IAP方案

要在STM32上实现IAP功能首先需要将FLASH分为两个区域,一部分叫

做BOOT区,它的起始地址这0x08000000,它的作用是将需要升级的程序写入特定的区域并实现跳转,另一部分叫用户程序区,存储用户的应用程序,它的起始地址要根据BOOT区的程序大小而定。

系统上电之后先执行BOOT程序,BOOT程序判断U盘是否插入,没插入则表示没有IAP操作,此时PC指针直接跳转到用户程序区执行,如果插入U盘则进行对ROM.bin文件的读取并写入到用户程序区,写入完成之后PC同样跳转至用户程序区。

3.U盘IAP程序例程详细讲解

本例程文件夹里包含程序里所需要的各种库文件,USB库文件,

FATFS源码、不用添加任何文件就能直接编译,免去了很多麻烦。

图1 例程文件结构

本例程所需要的USB部分硬件连接图如下图所示。

图2.USB部分连接图

上图中J100为USB接口,用于插入U盘 PA11,PA12分别为USBFS-DM,USBFS-DP。BOOT区程序流程图如下:

开始 跳转到用户程序区 否

U盘是否插入? 是

对U盘进行初始化,并用f_open打开U盘中ROM.bin 否

打开成功? 是

图3. BOOT区程序流程图

读取ROM.bin并写入到 用户程序区,直到完成

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- awee.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务