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

辛辛苦苦用TouchGFX Designer做出了一个GUI界面、也顺利地用KEIL编译生成了hex文件,但是download到目标板时杯具了:要么KEIL提示无法烧写片外FLASH,要么貌似看到KEIL在烧写、但漫长地等待之后等来的却是悲催的“下载失败”!(经过配置后KEIL可以烧写TouchGFX生成的项目,见这里)如果你也有过类似惨痛的经历,这篇文章也许可以稍稍抚慰你那颗受伤的小心脏^_^。

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

为了能在KEIL中调用(就是:运行)ST-LINK,首先需要KEIL能找到ST-LINK的目录位置。为了简便起见,第一步先在WIN10中配置ST-LINK的PATH环境变量,使得在任何目录路径中都可以运行ST-LINK。

WIN10中,在桌面上,鼠标右键点击 “此电脑 ” 图标,选择“属性”,弹出窗口:

 

 
图一

选择《高级系统设置》,弹出窗口:系统属性,然后选择《环境变量》:

 

 
图二

在《系统变量》栏中,选择 Path 条目,点击《编辑》按钮:

 

 
图三

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

如果不知道ST-LINK安装在哪里了,这……。在桌面上鼠标右键点击ST-LINK的图标,选择《属性》,在弹出的窗口中,有显示其所在路径位置:

 

 
图四

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

 

 
图五

第二步,打开KEIL,以TouchGFX Designer中的 clock 钟表例程为例,打开keil工程,编译生成hex目标文件:

 

 
图六-1 KEIL编译touchgfx慢如牛啊,呵呵了

 

 
图六-2

其中,Keil 是clock工程下KEIL版本的主目录,编译之后会在子目录 Flash 中生成名为 application.hex 的目标文件。了解这个目录结构很重要,才能在KEIL中做相关的配置。打开KEIL工程配置窗口,选择最右边的《Utilities》选项页,默认情况下,烧写选项是 Use Target Driver for Flash Programming,意思是用安装KEIL时自带的debug驱动程序来执行烧写。这里我们勾选第二个选项:Use External Tool for Flash Programming,即:不使用KEIL的驱动,而使用外部(第三方)的烧写工具:

 

 
图七

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

<Arguments>中,填入:-c -Rst -EL "C:Program Files (x86)STMicroelectronicsSTM32 ST-LINK UtilityST-LINK UtilityExternalLoaderMX25L512G_STM32F769I-DISCO.stldr"。

这一行命令参数非常重要:-c -- ST-LINK连接目标板,-Rst -- 系统复位, -EL -- 选择一个烧写目标板片外flash“算法文件”(即所谓的 memory-loader),这是最重要的一个参数了,本例中使用的板子是官方的 STM32F769I-DISCO,对应的loader文件是 MX25L512G_STM32F769I-DISCO.stldr (如果你使用的是其他官方的板子,请选择对应的stldr文件)。因为上述stldr文件路径中包含了空格,所以一定要对 路径+文件名 加上双引号

 

 
图八 stldr文件所在目录

然后,在KEIL中按下 F8 烧写快捷键,这次可以正确烧写了:桌面上会弹出一个DOS窗口(ST-LINK 命令行),5-6秒钟后烧写完毕,比KEIL直接烧写快多了!

 

 
图九

 

 
来源
原文地址:https://www.cnblogs.com/skullboyer/p/12261886.html