touchgfx的图形界面设计完毕后,最终都要生成可烧写的目标文件、下载到目标板上来验证。一般来说,有4种烧写目标文件的方法:gcc、Keil、IAR、ST-LINK。gcc实际上是在Makefile中调用了ST-LINK,所以去掉gcc、可以认为有3种烧写途径,我们先从ST-LINK讲起。首先,需要先安装好ST-LINK的工具包,桌面图标如下:
touchgfx工程项目因为有图形界面,图片占的存储空间比较大,一般目标板上都有外扩的flash,touchgfx生成的图片等“资源文件”多数情况下需要放到这个外部flash中,如何将目标文件(事实上是其中一部分)烧写到外部flash,是需要特殊处理的。以官方板子 STM32F769I-DISCO 为例,从板子原理图可以看到,板子是有外扩QSPI接口的 nor flash 的:
板子做了冗余设计,是可以支持MICRON和MACRONIX两家器件供应商的IC的,具体是哪一个,让我们来看看板子上的器件吧:
小心地去掉LCD的4个固定螺丝、摘除LCD后,可以看到PCB板子上的那颗IC是MX25L512G,是MACRONIX的。下面要做的就是在ST-LINK中配置支持这个flash芯片烧写的算法文件:在 ST-LINK Utility 中,点击 External Loader 菜单:
所谓 External Loader ,就是外部flash的烧写算法文件。弹出一个窗口,在窗口中选择 STM32F769I-DISCO 板子对应的器件:
点击窗口下方的 Validate 按钮,ST-LINK 中, External Loader 菜单下多出一个项目:
表明外部flash算法文件已经正确加载了。选择一个touchgfx工程生成的目标文件(通过gcc的方法生成的是target.hex)来试着烧写一下:将target.hex文件拖动到ST-LINK窗口中:
可以看到,hex文件中不仅有MCU片内flash代码部分(即0x0800 0000开始的地址),还有从地址0x9000 0000开始的代码,而这部分代码正是要放到片外flash中的。如果之前没有加载外部flash算法文件,烧写时就会出错。
好了,现在从ST-LINK中点击“连接目标板”,然后Ctrl+P,就可以烧写了。