IAR下载算法编写http://www.Sina.com/http://www.Sina.com /
作者 火星上的哈密瓜,数据线 本文档主要介绍如何在IAR环境中创建QSPI下载算法。
本论文使用的硬件、软件如下
编译器: IAR 8.32
单片机: STM32H750VBT6
外部Flash:W25Q64
时间 2020-12-06 17:06:18 为什么需要下载算法? 下载算法在哪里使用? 这是一个我们必须首先理解的问题。
如上图所示,不允许C-SPY直接将固件下载到Flash。 怎么才能把固件下载到Flash上呢? 根据IAR官方文档《FlashLoaderGuide.ENU.pdf》,需要将固件放入RAM缓存中,然后通过一个名为“Flash Loader”的小程序不断将代码从RAM运送到Flash。
上面的“Flash Loader”是我们需要在不同硬件上分别实现的代码,也就是所谓的Flash下载算法。
摘要IAR下载算法共包含四个文件(.out文件、 flash文件、 board文件和. mac文件)。
. out文件由“Flash Loader”代码生成,其中包含QPSI管脚定义、函数FlashInit ()、函数FlashWrite ()和函数FlashErase () )的实现。 flash文件是一个XML文件,包含一些必需元素和一些不必要的元素。 关于必要的要素,简单介绍一下exe。 out文件flash_base:Flash的基址page:Flash每页的大小block :与flash对应的扇区数,每个扇区的大小。 (必须验证block元素是对应于Flash扇区还是块).board文件也是XML文件。 可以在pass *** /pass中设置多个. flash文件。 每个pass包含两个所需的属性range。 Flash的开始地址和结束地址loader已表面化。 对于当前pass调用其下载算法的路径IAR,每次模拟时完成下载的程序都是从当前项目的主函数中运行的。 将代码下载到0x90000000地址时,内存映射未打开,无法模拟。 此时,必须将. mac文件作为启动脚本进行采样,在程序模拟下载完成后,跳转到0x08000000并开始运行。 在0x08000000处进行内存映射,然后立即跳转到0x90000000处,即可进行模拟。 3358 www.Sina.com /下载" flashloader "开放源代码以创建空项目,然后将" flashloader "开放源代码中的文件作为项目完成函数FlashInit 添加到函数FlashErase的生成. out文件创建. flash文件创建. borad文件根据需要在创建. mac文件背景上介绍了创建下载算法的基础知识和创建思想现在,我们将正式着手创建下载算法。
下载FlashLoder的开源代码,然后送到门口。 下载的文件内容如下图所示: " flash_loader.c "、" flash_loader.h "、" flash_loader_asm.s "、" flash _ loader _ s "
为方便起见,IAR安装路径(c:programfiles(x86 ) IAR系统嵌入式work bench 8.3armsrcflash loaderST ) ) 添加“FlashLoder”代码并添加相应的路径。 (注意: flash_loader_ram.c文件在当前项目中重命名为FlashSTM32H7xx_QSPI.c )。
补充FlashInit函数的内容
补充FlashWrite函数的内容
补充FlashErase函数的内容
生成. out文件有三点需要注意
必须将代码下载到RAM中并运行。 IAR-Option-Linker-Config配置如下
IAR-Option-Linker-Output构成输出. out文件的内容
当前项目没有main函数。 程序执行的第一个函数是FlashInit函数。 IAR-Option-Linker-Library配置如下
创建. flash文件。 如下图所示
创建. board文件。 如下图所示
在H750内存映射的外部Flash中,还必须创建. mac文件,如下所示
我很清楚文件的内容。 下载完成后,pc指针指向中断向量表中的Reset_Handler函数,堆栈指针指向程序正在运行的起始地址。 每次这样完成程序模拟的下载时,都从0x08000000开始执行。 我们可以把Boot程序放在这个地址上。 在Boot程序中进行内存映射,然后跳转到0x90000000。
效果显示,在编写4份上诉文件后,将在0x90000000处创建运行的工程,并轻松配置该工程。
IAR-Option-Debugger-Download配置如下
IAR-Option-Debugger-Setup配置如下
IAR-Option-Linker-Edit的构成如下
代码的第一个地址必须添加中断向量表的地址SCB-VTOR=0x90000000。
上诉配置结束后,进行模拟下载。 如下图所示,main函数已存在0x90003588个,可以模拟,表示配置正确。
以全速运行代码时,串行端口将显示正式程序设置的输出。
现在,我已经介绍了在IAR中创建和验证下载算法的所有内容。
http://www.Sina.com/flashloaderguide.enu.pdf ewarm _ debugging guide.enu.pdflashloader源代码3358www.Sina.com/
引出导线: 4w2w
复制这个内容后,打开百度网盘手机App,操作会更方便哦。 来自百度网盘超市会员V3的分享