查看: 3649|回复: 0

Keil问题解决:烧程序报错,超过最大芯片Flash空间无算法

[复制链接]
  • TA的每日心情
    开心
    4 小时前
  • 签到天数: 3745 天

    连续签到: 71 天

    [LV.Master]伴坛终老

    发表于 2017-12-26 23:46:25 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 toofree 于 2017-12-27 01:25 编辑

    Keil MDK问题解决:烧写程序报错——超过最大芯片Flash空间无算法

       情况是这样的。
       8月份的某一天,在STM32&STM8QQ群里有位网友提问。说是在下载程序时报错了,报错信息如下图:(摘自QQ群历史消息)
        QQ图片20171226234439.png

       根据提示08010000H之后的烧写Flash错误,初步怀疑是芯片烧写Flash选择错误。经询问,网友传上来的Flash选择项为下图:
        QQ图片20171226233715.png    
       显然,选择的目标芯片是最大64K Flash,最大地址才到0x0800ffff,显然跟烧写算法错误更是没关系的呀,空间不会超过64K。

       又经了解到,网友在同一个工程下单跑LED灯程序是正确的,而加入图片显示后,就发生了烧写Flash算法错误。怀疑加入的图片过大,以致于编译后超过了64K空间。按理说,编译如果超过64K空间的话,编译是通不过的,但是他的程序却通过了,让人摸不着头脑。

        QQ图片20171226233641.png

       网友所用芯片型号是:STM32F030C8,几翻核对的确是64K FLash。
        QQ图片20171226233727.jpg    
        QQ图片20171226233807.png

       让网友传来,编译成功的报告截图:
        QQ图片20171226233914.png    
       这下见鬼了,仅RW-data一项就91900,超过了64K。而且还编译成功了。(让查看.map文件,网友却没找对地方,未能给出有效信息。   
       网友上传他的工程"oled_15.zip" 到QQ群空间(目前在群空间已经找不到8月份之前的文件了),我下载文件编译后,成功编译,编译时也没有报错(没有硬件,无法烧写Flash验证)。发现显示的图片占据了很大的空间

       这样也排除了Keil环境损坏或杀毒软件的可能,那么最后只有一种可能,还是Keil工程设置中的某项设置没设对。
       但是这个问题当时我也没能成功解决。后来某天,在查看其它工程时,发现了一个选项。Target的Liner页下有两选项项可能会有问题。
        傲游截图20171227002112.jpg
      默认情况下,第一个红框中的勾是点上的,这时下面的第二个红框中是灰色,不让更改;当第一个框勾去掉后,下面的sct文件可以选择其它的文件或者编辑。好像网友的工程中就没有点上,但由于没有原工程,无法验证。


       上传个Keil环境自带的hello_arm程序,以这个工程为例去验证一下。 Hello_arm.rar (346.94 KB, 下载次数: 0)
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-20 04:28 , Processed in 0.115036 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.