打印
[应用相关]

TouchGFX工程中hex目标文件的烧写方法(二)使用KEIL-1

[复制链接]
894|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
辛辛苦苦用TouchGFX Designer做出了一个GUI界面、也顺利地用KEIL编译生成了hex文件,但是download到目标板时杯具了:要么KEIL提示无法烧写片外FLASH,要么貌似看到KEIL在烧写、但漫长地等待之后等来的却是悲催的“下载失败”!(经过配置后KEIL可以烧写TouchGFX生成的项目,见这里)如果你也有过类似惨痛的经历,这篇**也许可以稍稍抚慰你那颗受伤的小心脏^_^。


作者:海东青电子
链接:https://www.jianshu.com/p/21f1cf737892
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

使用特权

评论回复
沙发
features|  楼主 | 2020-6-23 14:23 | 只看该作者
其实,就算KEIL能正常烧写hex,烧写速度也绝算不上快。要说烧写芯片这事儿,在行的还得属官方的专业工具 -- ST-LINK。毕竟,KEIL作为功能强大的IDE开发工具,其调试能力已经登峰造极,烧写文件这个短板实属瑕不掩瑜。只是,涉及到烧写片外FLASH,KEIL当前版本V5.23貌似无法胜任这个任务,我们不得不考虑使用ST-LINK。独立使用ST-LINK的方法在上一篇**里已介绍过,这里,我们详细说一下如何在KEIL中自动调用ST-LINK,使得在KEIL IDE开发环境中仍能“一键”完成下载、运行、调试。

使用特权

评论回复
板凳
features|  楼主 | 2020-6-23 14:24 | 只看该作者
为了能在KEIL中调用(就是:运行)ST-LINK,首先需要KEIL能找到ST-LINK的目录位置。为了简便起见,第一步先在WIN10中配置ST-LINK的PATH环境变量,使得在任何目录路径中都可以运行ST-LINK。

使用特权

评论回复
地板
features|  楼主 | 2020-6-23 14:25 | 只看该作者
WIN10中,在桌面上,鼠标右键点击 “此电脑 ” 图标,选择“属性”,弹出窗口:

使用特权

评论回复
5
features|  楼主 | 2020-6-23 14:26 | 只看该作者
选择《高级系统设置》,弹出窗口:系统属性,然后选择《环境变量》:

使用特权

评论回复
6
features|  楼主 | 2020-6-23 14:27 | 只看该作者
在《系统变量》栏中,选择 Path 条目,点击《编辑》按钮:

新建 一个条目,加入你的PC上ST-LINK所在的路径, 然后按下 确定 按钮。再一路按下 各个窗口的 确定,直至窗口消失、回到WIN10桌面(此步骤很重要,这时刚才修改过的 Path 变量才真正起作用)

使用特权

评论回复
7
features|  楼主 | 2020-6-23 14:27 | 只看该作者
如果不知道ST-LINK安装在哪里了,这……。在桌面上鼠标右键点击ST-LINK的图标,选择《属性》,在弹出的窗口中,有显示其所在路径位置:

使用特权

评论回复
8
features|  楼主 | 2020-6-23 14:28 | 只看该作者
好了,完成这些步骤后,先测试一下Path设置得是否正确。在WIN10中打开一个 《cmd》命令行窗口,输入 st-link_cli -v (大小写均可),意思是调用ST-LINK命令行、然后打印他的程序版本,如果窗口中看到了版本信息,说明上面路径配置ok了:

使用特权

评论回复
9
features|  楼主 | 2020-6-23 14:29 | 只看该作者
第二步,打开KEIL,以TouchGFX Designer中的 clock 钟表例程为例,打开keil工程,编译生成hex目标文件:

KEIL编译touchgfx慢如牛啊,呵呵了

使用特权

评论回复
10
features|  楼主 | 2020-6-23 14:29 | 只看该作者

使用特权

评论回复
11
features|  楼主 | 2020-6-23 14:30 | 只看该作者
其中,Keil 是clock工程下KEIL版本的主目录,编译之后会在子目录 Flash 中生成名为 application.hex 的目标文件。了解这个目录结构很重要,才能在KEIL中做相关的配置。打开KEIL工程配置窗口,选择最右边的《Utilities》选项页,默认情况下,烧写选项是 Use Target Driver for Flash Programming,意思是用安装KEIL时自带的debug驱动程序来执行烧写。

使用特权

评论回复
12
features|  楼主 | 2020-6-23 14:31 | 只看该作者
这里我们勾选第二个选项:Use External Tool for Flash Programming,即:不使用KEIL的驱动,而使用外部(第三方)的烧写工具:

使用特权

评论回复
13
features|  楼主 | 2020-6-23 14:32 | 只看该作者
<Command> 中,填入:st-link_cli -P .\Flash\application.hex。因为之前已经设置了Path路径,这里直接写 st-link_cli,KEIL就能正确找到它。-P 是命令行参数 -- 烧写文件,后面可以跟一个烧写起始地址,我们这里默认是0x0800 0000,可以不填。 .\Flash\application.hex 是hex文件所在目录位置,图六中已经说明,KEIL项目主目录下,有一个Flash目录,其中包含了hex文件。 .\Flash 的意思就是“当前”目录(即主目录)下的Flash目录。

使用特权

评论回复
14
features|  楼主 | 2020-6-23 14:32 | 只看该作者
<Arguments>中,填入:-c -Rst -EL "C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility\ExternalLoader\MX25L512G_STM32F769I-DISCO.stldr"。

使用特权

评论回复
15
features|  楼主 | 2020-6-23 14:33 | 只看该作者
这一行命令参数非常重要:-c -- ST-LINK连接目标板,-Rst -- 系统复位, -EL -- 选择一个烧写目标板片外flash“算法文件”(即所谓的 memory-loader),这是最重要的一个参数了,本例中使用的板子是官方的 STM32F769I-DISCO,对应的loader文件是 MX25L512G_STM32F769I-DISCO.stldr (如果你使用的是其他官方的板子,请选择对应的stldr文件)。

使用特权

评论回复
16
features|  楼主 | 2020-6-23 14:34 | 只看该作者
因为上述stldr文件路径中包含了空格,所以一定要对 路径+文件名 加上双引号。

使用特权

评论回复
17
features|  楼主 | 2020-6-23 14:34 | 只看该作者
然后,在KEIL中按下 F8 烧写快捷键,这次可以正确烧写了:桌面上会弹出一个DOS窗口(ST-LINK 命令行),5-6秒钟后烧写完毕,比KEIL直接烧写快多了!

使用特权

评论回复
18
features|  楼主 | 2020-6-23 14:35 | 只看该作者
使用KEIL默认配置烧写TouchGFX生成的目标文件的方法见https://www.jianshu.com/p/2d1faa062c10

使用特权

评论回复
19
features|  楼主 | 2020-6-23 14:36 | 只看该作者

作者:海东青电子
链接:https://www.jianshu.com/p/21f1cf737892
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

使用特权

评论回复
20
观海| | 2020-7-10 14:06 | 只看该作者
非常感谢楼主分享

使用特权

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

本版积分规则

41

主题

463

帖子

1

粉丝