LAT1426
Local Application Tips
LAT1426 Rev 1.0 Nov. 2024
IAR flashloader 下载算法制作介绍
关键字:IAR flashloader
1. 引言
一般情况下,IDE 工具都自带了芯片内部 flash 的烧写算法。而实际项目中往往会有
flash 的需求,在调试或下载程序时,烧写外部 flash 则需要额外的 flashloader 程序支
持。本文简要介绍如何 IAR 工具中制作 flashloader 来烧写外部 flash 的原理及实现。
2. IAR flashloader 原理
IAR 烧写芯片 flash 过程,是由 C-SPY 调试器与 flashloader 来完成。Flashloader
IAR C-SPY 调试器开发的一个可执行程序,运行在 RAM 中。
IAR 调用调试器时需要先将 flashloader 下载到目标芯片的 RAM 中,再将要下载
文件加载到 RAM 存中,由 C-SPY 通过指令启动 flashloader 程序,然后 flashloader
会读取编程数据并写入到目标芯片中,完成目标芯片的擦除和写入
Figure 1 IAR 烧写 flash 过程示意图
2.1. IAR 下载算法介绍
IAR 下载算法一共包括 4 个文件 :
LAT1426
LAT1426 - Rev 1.0 page 2/5
1. .out 文件:由 flashloader 代码生成,包含了对 flash 管脚定义,函数 FlashInit(),
FlashWrite(), FlashErase()的实现
2. .flash 文件:是一个 xml 文件,包含了一些必要的属性及可选的属性配置,必要的
属性如下:
a. exe:指向.out 文件
b. flash_baseFlash 的基地址
c. pageFlash 每页大小
d. blockFlash 有多少块,每个块有多大
3. .board 文件:是一个 xml 文件,由<pass> … </pass>进行多个.flash 文件的设
置。每个 pass 包含两个必要属性
a. range:指定 Flash 的起始地址与结束地址
b. loader:当前 pass 调用下载算法的路径
4. .mac 文件:宏文件,是 C-SPY 组件定义和解释执行的一种专用类脚本文件,是一
种脚本语言,由 CSpyBat.exe 在用户调试的过程中解释执行。
3. 下载算法制作
IAR 安装目录中,flashloader 工程要使用的框架文件在以下目录:
Embedded Workbench 9.1\arm\src\flashloader\framework2\
其中,flash_loader.c, flash_loader.h, flash_loader_asm.s, flash_loader_extra.h
四个文件是供 C-SPY 调用的,不用去修改这些文件内容。只用修改 template 文件夹内的
flash_loader_ram.c,实现相应的 FlashInit, FlashWrite, FlashErase 函数即可。
在实际中,也可以直接使用 Embedded Workbench 9.1\arm\src\flashloader\ST
录下已有的例程,比如 FlashSTM32H7xx_QSPI 目录就是 STM32H7 板上实现 QSPI
flashloader 的例程。
这里选用 STM32H743_Nucleo 板,外接 W25Q128 norflash 来测试。首先创建测
试工程,实现 norflash 程序的读、写、擦除等基本操作,验证通过后,封装到
xspi_norflash_api.c 文件中。
然后将 FlashSTM32H7xx_QSPI 目录拷贝出来,替换并实 flash 初始化、擦除、
的接口,最终生成.out 文件。