打印
[应用相关]

TouchGFX工程中hex目标文件的烧写方法(三)使用IAR-2

[复制链接]
677|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
上一篇**里,我们使用自己修改的 .board 文件成功实现了IAR烧写片外flash,下面说说这个 .board 文件的制作过程。

使用特权

评论回复
沙发
peripheral|  楼主 | 2020-6-23 15:16 | 只看该作者
KEIL中的flash算法烧写文件是 *.flm 文件,例如,STM32F769I-DISCO 板子对应的是 STM32F769I_QSPI_Macronix.FLM  文件:

使用特权

评论回复
板凳
peripheral|  楼主 | 2020-6-23 15:16 | 只看该作者
这是一个经过编译的二进制文件,ST的每一个开发板都对应着一个 flm 文件。在IAR中,flash算法烧写文件是 *.board 文件:

使用特权

评论回复
地板
peripheral|  楼主 | 2020-6-23 15:17 | 只看该作者
这是个文本文件(脚本),内容是若干flash地址对应的 .flash 描述文件。以 FlashSTM32F7xx_STM32F746G-DISCO.board 为例,其中包含了3个 .flash 文件:

1)0x08000000 0x080FFFFF      FlashSTM32F74xxG.flash

2)0x00200000 0x002FFFFF      FlashSTM32F74xxG_TCM.flash

3)0x90000000 0x90FFFFFF     FlashSTM32F7xx_QSPI_STM32F746G-DISCO.flash

使用特权

评论回复
5
peripheral|  楼主 | 2020-6-23 15:17 | 只看该作者
.flash 文件也是文本文件(脚本),包括2部分内容:指明如何读写flash的二进制算法文件 .out ,以及描述flash总线初始化、芯片pin定义的 .mac 文件。以 FlashSTM32F7xx_QSPI_STM32F746G-DISCO.flash 为例,它描述了片外flash如何烧写,其中一个文件是 FlashSTM32F7xx_QSPI_MICRON.out ,表明flash品牌是MICRON,这是个二进制文件,所有MICRON的flash都是用它来读写;另一个文件是 FlashSTM32F7xx_QSPI_STM32F746G-DISCO.mac,是个文本文件,打开这个文件可以看到 QSPI 接口用到的6个pins :PB2、PB6、PD11、PD12、PD13、PE2。

使用特权

评论回复
6
peripheral|  楼主 | 2020-6-23 15:18 | 只看该作者
总结一下IAR烧写flash过程:先读取 *.board 脚本文件,再读取不同地址映射的 *.flash 文件,从中获得读写flash的二进制代码 *.out 文件,同时读取 *.mac 宏定义脚本文件、对MCU内部、外部flash初始化,并获得片外flash接口的pin定义,至此,烧写片内、片外flash的信息已经齐备,之后就是具体的烧写操作了。

使用特权

评论回复
7
peripheral|  楼主 | 2020-6-23 15:19 | 只看该作者
了解了这个过程,下面可以开始处理如何烧写 STM32F769I-DISCO 板子了。这个虽然是ST官方的板子,但 IAR V8.32 并不直接支持烧写。第一步,我们先要弄明白板子上flash的型号和pin定义,在《TouchGFX工程中hex目标文件的烧写方法(一)使用ST-LINK》中,已经知道片外flash是 MACRONIX 的 MX25L512G ,管脚定义见下图:



使用特权

评论回复
8
peripheral|  楼主 | 2020-6-23 15:20 | 只看该作者
QSPI接口片外flash的6个pin是:PB2、PB6、PC9、PC10、PE2、PD13。很遗憾,IAR自带的 STM32F746G-DISCO 板子的算法文件描述的是MICRON的芯片、并且QSPI管脚定义也不兼容,无法直接拿来使用。经过仔细查找,发现 FlashSTM32F7xx_QSPI_STM32F723E-DISCO.mac 文件中定义的6个pin跟  STM32F769I-DISCO 板子上的完全相同!

使用特权

评论回复
9
peripheral|  楼主 | 2020-6-23 15:20 | 只看该作者
就是说,把 FlashSTM32F7xx_STM32F723E-DISCO.board、FlashSTM32F7xx_QSPI_STM32F723E-DISCO.flash、FlashSTM32F7xx_QSPI_STM32F723E-DISCO.mac 移植过来(几乎是原样照搬^_^)就行了。


修改过的文件改名为:FlashSTM32F769I-DISCO.board (所有移植后的文件下载地址见**末尾),在IAR中加载这个 .board 后、可以烧写片外flash了。

使用特权

评论回复
10
peripheral|  楼主 | 2020-6-23 15:21 | 只看该作者
有一个细节需要注意:IAR项目主目录下有一个自动生成的 FlashSTM32F7xxx_384kB.out 文件,如果使用这个文件,板子可以烧写、不报错,但板子reset后并不能正确运行!而使用 FlashSTM32F7xxx_192kB.out 则没有问题。没弄明白这是为什么、也不一定有代表性,这里记录一下、仅供参考。

使用特权

评论回复
11
peripheral|  楼主 | 2020-6-23 15:21 | 只看该作者

详细情况请见代码(网盘下载地址):https://pan.baidu.com/s/1Q_lG1L_7NpJAhYBX8MqJ6g ,提取码:toyr。

使用特权

评论回复
12
peripheral|  楼主 | 2020-6-23 15:22 | 只看该作者
作者:海东青电子
链接:https://www.jianshu.com/p/f3dd81186167
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

使用特权

评论回复
13
guanjiaer| | 2020-7-10 14:11 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
14
heimaojingzhang| | 2020-7-10 14:11 | 只看该作者
我也跟着长知识来了

使用特权

评论回复
15
keaibukelian| | 2020-7-10 14:11 | 只看该作者
这几篇**都很好

使用特权

评论回复
16
labasi| | 2020-7-10 14:12 | 只看该作者
这个文件是干嘛用的呢

使用特权

评论回复
17
paotangsan| | 2020-7-10 14:12 | 只看该作者
用什么接口烧写的呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

32

主题

438

帖子

2

粉丝