美文网首页TouchGFXSTM32TouchGFX
TouchGFX工程中hex目标文件的烧写方法(二)使用KEIL

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

作者: 海东青电子 | 来源:发表于2019-03-17 23:23 被阅读0次

    上一篇文章介绍了如何在KEIL中配置ST-LINK实现一键烧写hex文件,可是,我就是想只用自动生成的KEIL文件和工程选项配置来烧写、调试,如何进行呢?

    这难道不是一个多余的问题吗?难道自动生成的KEIL工程不能运行的吗?还真的不能运行(烧写失败!),详情见下:

    (这也许是TouchGFX当前版本V4.10.0的小bug,期待将来升级后的版本不再有这个问题。)

    TouchGFX自动生成的KEIL工程,编译是没有问题的:

    图一

    上图第七行可以看到,0 Error,生成了hex,没有问题。但,按下 F8 烧写快捷键,提示出错:0x9000 0000 地址开始的代码段没有找到相应的烧写算法。这是什么意思呢?让我们来简单说说MCU烧写flash的细节:

    图二

    不同的MCU,其配置的flash物理特性可能是有区别的,读写flash需要一些跟这个flash有关的参数,比如读写周期、等待间隔、读写总线的定义等等,这些参数就是烧写falsh的“算法”。实际进行烧写操作时是分为2个步骤的:首先需要把这些算法加载(download)到MCU内部的RAM中,然后在MCU内部运行代码来具体执行这些算法、读写flash。这样,就容易理解图一提示的错误了:烧写地址 0x0800 0000 (内部flash) 的那些代码没问题,但对于地址 0x9000 0000 (外部flash),因为没有加载对应算法,不知道该怎么读写flash、无法进行烧写。让我们来看看当前的配置中烧写算法加载的情况:

    图三 图四

    图四显示:默认只加载了F7片内2个地址段的flash算法,需要手动添加片外flash算法:点击 Add 按钮,在弹出的窗口中找到本文使用的F769I-DISCO板子对应的算法、并添加进来:

    图五

    试着按下 F8 再烧写一次,又出现了错误:

    图六

    提示:无法加载烧写算法!这是因为download算法文件是需要占用MCU片内RAM空间的,而这个空间大小是由KEIL默认分配好的,一般是0x1000 。现在需要扩大这个空间到0x2000:

    图七

    再次烧写,出现烧写的进度条,直到烧写完毕:

    图八

    如果多次遇到能正常开始烧写、但中途报错、中断烧写的情况,可以改为在KEIL中使用ST-LINK烧写(至少可以烧写的更快!),见这里

    下一节将介绍:如何在IAR中烧写目标文件

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/fznpmqtx.html