STM32H7外部FLASH下载算法开发指南-FLM

5星 · 超过95%的资源 需积分: 8 26 下载量 32 浏览量 更新于2024-08-04 收藏 421KB DOCX 举报
"STM32H7XX-KEIL-MDK-外部FLASH-FLM下载算法-Application-Note" 在嵌入式系统开发中,STM32H7XX系列微控制器是一个常用的选择,而MDK (Keil uVision) 是一个广泛使用的开发环境。在某些情况下,需要对STM32H7XX的外部FLASH执行编程或下载操作,这时就涉及到了FLM(Flash Loader Demonstrator)下载算法的开发。 MDK下载算法基础知识 MDK的下载算法是实现程序烧录到MCU Flash的关键。它包含了一系列特定于硬件的函数,用于初始化、擦除、编程和验证Flash存储器。这些函数是地址无关的,因此可以在不同的内存位置执行。对于STM32H7XX,标准的MDK软件包提供了内置的Flash算法,但如果是不常见的外部Flash设备,可能需要开发者自行创建算法。例如,当使用外部Flash作为ISP(In-System Programming)模式运行时,就需要定制的FLM下载算法。 在MDK调试过程中,算法被加载到MCU的内部RAM,然后通过MDK与该算法的交互完成程序的下载和调试数据的读取。理解这一点对于正确地配置和使用FLM至关重要。 FLM开发 开发FLM时,首先需要创建一个工程。可以选择KEIL_MDK提供的模板,或者直接使用已有的STM32H7XX FLM工程作为起点。在修改工程时,需要注意几个关键点,具体细节可参考《安富莱_STM32-V7开发板_用户手册,含BSP驱动包设计(V3.1)》的相关章节。 制作SPI Flash的MDK下载算法时,有几个重要提示。首先,应避免开启中断,而是使用查询方式。其次,由于HAL库中的超时判断依赖于sysTick,因此需要重写HAL_InitTick、HAL_GetTick和HAL_Delay函数,使用简单的延时循环代替。在配置I/O口(IOC)时,只需设置必要的时钟、QSPI、OCTOSPI接口,以及一些额外的GPIO用于调试。 STM32H7XX的FLM开发涉及到理解MDK的下载机制、Flash编程原理以及HAL库的适配。通过正确构建和配置工程,开发者可以创建自己的FLM下载算法,从而实现对特定外部Flash设备的有效编程和调试。
2022-12-24 上传
MDK程序下载 程序下载----FLM⽂件 ⽂件 MDK编程算法 编程算法   ⽤过MDK下载程序的⼩伙伴可能都知道,在下载程序之前需要都在Debug设置的Flash Download⼦选项卡选择编程算法。⼤多数时 候, 我们只要安装了芯⽚包之后,就可以直接得到对应的编程算法,并不需要我们去修改它。但是,当你是⼀个芯⽚包的开发者,或者你有独特 的下载需求(⽐如在你的程序⾥加⼊⼀些校验信息),这个时候你就需要去了解它了!   编程算法呢,说⽩就其实也就是⼀段程序,主要功能就是擦除相应的内存块,并将我们的程序写⼊到相应的内存区域上去。 在你点击下载按钮的时候,这段程序会被先下载到RAM上(RAM for Algorithm上的设置),然后才会通过它,将你的程序写⼊到 指定的内存区域内。 实现⼀个⾃⼰的编程算法 实现⼀个⾃⼰的编程算法   怎么去实现⼀个⾃⼰的编程算法?⾸先我们找到⾃⼰的MDK的安装路径,进⼊到ARM\Flash⽂件夹下(例如: D:\Keil_v5\ARM\Flash)。 这⾥有个编程算法的⼯程模板,复制这个⼯程到你的⼯程⽂件夹下,重命名你⾃⼰的想要的名字。   打开⼯程,⾥⾯主要有两个⽂件 FlashPrg.c 和 FlashDev.c:   FlashDev.c主要实现了⼀个设备相关的结构体(根据⾃⼰的Flash情况去实现)      ⽐如STM32L051实现如下:   FlashPrg.c实现了⼏个Flash编程相关的函数:   根据⾃⼰的需要去实现,STM32L051实现如下: 1 /* ----------------------------------------------------------------------------- 2 * Copyright (c) 2014 ARM Ltd. 3 * 4 * This software is provided 'as-is', without any express or implied warranty. 5 * In no event will the authors be held liable for any damages arising from 6 * the use of this software. Permission is granted to anyone to use this 7 * software for any purpose, including commercial applications, and to alter 8 * it and redistribute it freely, subject to the following restrictions: 9 * 10 * 1. The origin of this software must not be misrepresented; you must not 11 * claim that you wrote the original software. If you use this software in 12 * a product, an acknowledgment in the product documentation would be 13 * appreciated but is not required. 14 * 15 * 2. Altered source versions must be plainly marked as such, and must not be 16 * misrepresented as being the original software. 17 * 18 * 3. This notice may not be removed or altered from any source distribution. 19 * 20 * 21 * $Date: 18. November 2014 22 * $Revision: V1.00 23 * 24 * Project: Flash Programming Functions for ST STM32L0xx Flash 25 * --------------------------------------------------------------------------- */ 26 27 /* History: 28 * Version 1.00 29 * Initial release 30 */ 31 32 #include "FlashOS.H" // FlashOS Structures 33 34 typedef volat