【海东青电子-简书】touchgfx 之 《IAR-hex文件的烧写方法》

IAR ---- 跟KEIL一样,TouchGFX自动生成的工程项目,在IAR中同样不能正确烧写片外flash!不过,经过适当的手动配置,IAR是可以烧写片外flash的,只是要费些周折。下面以Clock例程为例说明配置过程。

以STM32F769I-DISCO板子为例,创建一个TouchGFX工程,并使用系统自带的Clock例程:

图一

不需要编写任何代码,使用Clock例程就行,先运行VS、看看在仿真器上是否能正确跑起来这个Clock。然后,进入IAR,因为使用的是目前最新的IAR版本V8.32,所以要使用 IAR8.x 这个目录下的IAR工程:

图二

这个目录中还有 .board、.flash等文件,这些文件非常重要,烧写flash就靠他们了,后面将详述。双击 application.eww ,打开IAR,如果弹出询问是否升级的窗口:

图三

选择 Yes ,转换成新版的工程文件,然后就进入了IAR界面。 按下 F7 编译:

图四

IAR正确生成了out 和 hex 目标文件。尝试下载:

图五

弹出一个错误信息:

图六

大意是:系统在生成flash算法时出错了,左下方的 Debug Log 中有详细解释:

图七

图七中显示了一个警告:烧写flash警告,代码段位于地址 [0x90000000,0x9003CC5F] 范围的将不能被烧写。这个地址范围正是片外flash的地址,检查一下当前IAR关于烧写flash的配置情况,Alt+F7 打开工程选项,在  =>调试器=>下载  选项页下,有一个 .board 文件:

图八

IAR项目主目录下有一个 FlashSTM32F76xxI.board 文件,它描述了目标板子上flash的“配置”情况,在上图中直接点击 Edit 按钮就可以打开这个文件:

图九

可以看到,.board 文件中描述了F7片内2个地址段对应的烧写算法文件(.flash文件),但没有配置片外地址为0x9000 0000开始的flash对应的算法文件,所以造成烧写失败。

通过查找IAR的相关资料,并仿照另外一个IAR支持片外flash烧写的ST官方开发板的 .board 文件,针对 STM32F769I-DISCO 板子重新编写了几个烧写片外flash的算法文件、一共6个文件如下:

图十

【 网盘下载地址:https://pan.baidu.com/s/1Q_lG1L_7NpJAhYBX8MqJ6g,提取码:toyr 】

将这6个文件全部copy到IAR工程目录下:

图十一

在IAR中重新指定烧写flash的 .board 文件为 FlashSTM32F769I-DISCO.board :

图十二

再次点击 Edit 查看:

图十三

地址0x9000 0000已经有对应的算法文件了(并且,去掉了本项目中没用到的TCM flash)。再次下载,目标板成功烧写:

图十四

板子实际跑的效果:

图十五

也许有网友好奇:那个 FlashSTM32F769I-DISCO.board 文件,以及其他5个文件是怎么做出来的?对这些文件制作过程以及分析思路感兴趣的朋友请继续往下看。

烧写算法文件制作

我们使用自己修改的 .board 文件成功实现了IAR烧写片外flash,下面说说这个 .board 文件的制作过程。

KEIL中的flash算法烧写文件是 *.flm 文件,例如,STM32F769I-DISCO 板子对应的是 STM32F769I_QSPI_Macronix.FLM  文件:

图一

这是一个经过编译的二进制文件,ST的每一个开发板都对应着一个 flm 文件。在IAR中,flash算法烧写文件是 *.board 文件:

图二

这是个文本文件(脚本),内容是若干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

.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。

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

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

图三

图四

图五

QSPI接口片外flash的6个pin是:PB2、PB6、PC9、PC10、PE2、PD13。很遗憾,IAR自带的 STM32F746G-DISCO 板子的算法文件描述的是MICRON的芯片、并且QSPI管脚定义也不兼容,无法直接拿来使用。经过仔细查找,发现 FlashSTM32F7xx_QSPI_STM32F723E-DISCO.mac 文件中定义的6个pin跟  STM32F769I-DISCO 板子上的完全相同!就是说,把 FlashSTM32F7xx_STM32F723E-DISCO.board、FlashSTM32F7xx_QSPI_STM32F723E-DISCO.flash、FlashSTM32F7xx_QSPI_STM32F723E-DISCO.mac 移植过来(几乎是原样照搬^_^)就行了。

图六

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

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

来源

原文地址:https://www.cnblogs.com/skullboyer/p/12261893.html

时间: 2024-10-08 07:33:03

【海东青电子-简书】touchgfx 之 《IAR-hex文件的烧写方法》的相关文章

Python 2.7_发送简书关注的专题作者最新一篇文章及连接到邮件_20161218

最近看简书文章关注了几个专题作者,写的文章都不错,对爬虫和数据分析都写的挺好,因此想到能不能获取最新的文章推送到Ipad网易邮箱大师.邮件发送代码封装成一个函数,从廖雪峰大神那里学的  http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386832745198026a685614e7462fb57dbf733cc9f3ad000 网页源码获取和解析获取文章标题和url依然是用

【凯子哥带你学Android】Andriod性能优化之列表卡顿——以“简书”APP为例

这几天闲得无聊,就打开手机上的开发者模式里面的"GPU过度绘制"功能,看看别家的App做的咋样,然后很偶然的打开了"简书",然后就被它的过度绘制惊呆了,于是写了这篇性能分析的文章,从一个只有APK文件的角度,说下如何寻找布局中可能存在的性能问题,以及解决方案.本文章以简书Android最新版本1.9.1进行分析. GPU过度绘制 Hierarchy View SysTrace TraceView 总结 分析资源下载 GPU过度绘制 首先打开下面两个功能开关 开发者模

《信息安全技术》简书破密

wireshark网络捕获 今天的作业是用wireshark软件捕获网络 我就用它捕获了我登的简书登录账号跟密码,密码是假的,但账号跟错误的密码都捕获成功了. 首先打开软件,点开所用的网络类型,我的是WALN 然后打开网址登录网页,登陆账号 接下来找,因为我登的是http协议,所以可以在应用显示过滤器中输入hhttp.request.method==POET来节省时间 找到了,账号 错误的密码都捕获到了 真的好神奇!越来越对这些课感兴趣了.

如何用css实现类似简书的纵向导航/竖排导航

作为一个专注阅读的网站,它的导航也一定是全局的,固定的,也是简洁的.事实上几家阅读网站豆瓣阅读,多看,简书都是这样做的,刚好实现起来也不算复杂,以下是我想到的实现方法. 首先是html的结构: 1 <body> 2 <nav> 3 <div> 4 <a href="#">点</a> 5 <a href="#">滴</a> 6 <a href="#">一

iOS实现简书的账号识别方式(正则表达式)

通过简书iOS客户端登录,我们会看到请输入手机号或者邮箱登录,但是我们随机输入1234567的时候,便会弹出手机格式不正确,同样也会识别我们的邮箱格式,那么我们在项目中怎么实现这种判断呢? 0E471361-060C-4D93-913F-73622F89BC60.png 这就是我们今天要说的正则表达式. 正则表达式的介绍 正则表达式有多种使用方法,根据我们的需要,我们是要判断输入是否合法,还是查找指定的内容,还是捕获多个输入的内容,可以选用不同的方法,今天我们主要说一下,判断输入是否合法,用谓词

简书-markdown

标题 这是最为常用的格式,在平时常用的的文本编辑器中大多是这样实现的:输入文本.选中文本.设置标题格式. 如: # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标题 注:# 和「一级标题」之间建议保留一个字符的空格,这是最标准的 Markdown 写法. 你可以你的编辑器中尝试输入这六级标题,可以参考下方的截图: 一级标题至六级标题 列表 Markdown 中,只需要在文字前面加上 - 如: - 文本1 - 文本2 - 文本3 有序排列

转载:简书 vim环境配置 作者 fromradio 留作备忘 如侵权请联系删除

为Python创建Vim环境 作者 fromradio 2016.08.04 11:36* 字数 1766 阅读 504评论 0喜欢 12 大部分Python使用者可能习惯使用Sublime Text 3等笔记本式的编辑器.然而实际工作环境中有可能遇到需要在无GUI环境下工作的情况,比如需要登录到虚机上进行调试等.此时vim成为了常用的编辑器选择,所以如何使得vim变得心应手成为一个重要的问题. 第一个问题是vim版本的问题,笔者工作环境中的red hat 6版本的默认vim为7.2,不能支持后

Python 2.7_多进程获取简书专题数据(一)

学python几个月了正好练练手,发现问题不断提高,先从专题入手,爬取些数据,一开始对简书网站结构不熟悉,抓取推荐,热门,城市3个导航栏,交流发现推荐和热门是排序不同,url会重复,以及每个专题详情页三个类目最新评论,最新收录, 热门也会重复 做了下调整,代码执行完毕会返回所有专题的urls元组对象,以便下一步进入每个专题页面解析获取其他数据.注:变量focus关注数,和打开专题后最上面显示的专题关注人数会有差异,例如有的专题关注了10175人,在专题列表页会显示成"10.07k",因

[开源,学习,分享]UWP第三方简书客户端分享

简介 Windows10正式版发布到现在,我利用零零碎碎的一些时间对UWP进行一些学习,也基于这门技术开发了一个第三方的简书App. 基本界面 优酷视频: http://v.youku.com/v_show/id_XMTM2MjU4MjI4NA==.html 基本功能 客户端采用了UWP的技术,所以支持x86,x64,ARM平台,采用了响应式的布局.对手机进行了部分的优化. 对SQLite和本地存储进行了封装,支持缓存. 缓存支持同步和异步的两种方式,分别实现了两个接口: internal in