什么是Flash烧写算法
Flash编程算法是一种用于擦除应用程序或将应用程序下载到微控制器Flash的程序代码。MDK本身支持的器件都自带下载算法,存放在MDK各种器件的软件包里面,以STM32U5为例,算法存放在\Keil Packs\Keil\STM32U5xx_DFP\2.1.0\CMSIS\Flash(软件包版本不同,数值 2.1.0 不同),开发板上通过MCU外设扩展的存储器件,编程算法需要我们自己生成。
MDK中编程算法的核心是通过MDK创建一批与地址信息无关的函数,函数实现的功能主要有初始化、擦除、编程、读取、校验等(注意:烧写算法源码中,禁止所有中断使用),在 MDK 调试下载阶段,会将算法文件加载到芯片的内部 RAM 里面(加载地址可以通过 MDK 设置), MDK通过与这个算法文件的交互, 实现程序下载以及 调试阶段数据读取等操作。
Flash下载步骤
在进入下一个Flash下载步骤之前,必须完成所有这些步骤。例如,在编写第一个Flash页面之前,首先要擦除所有相关扇区。多个步骤中需要的Flash算法在接下来的每一步中都要再次下载。
- 连接调试器:建立调试器连接。
- 加载AXF文件:在调试驱动程序中加载和缓存AXF文件中的代码(在主机PC端)。如果需要,可以在Flash
- 下载之前加载和合并多个AXF文件。
- 擦除:擦除整个芯片或即将被新编程的扇区。
- 程序:由加载的AXF文件和Flash下载设置对话框覆盖的程序页面。
- 验证:验证所编程的区域是否包含预期的代码。
- 关闭Flash下载:完成Flash下载,关闭核心调试。
- 重置和运行应用程序:执行HW复位,即通过设备的外部复位引脚复位。