STM32 keil烧录出现program algorithm出错问题

近期使用工程代码进行烧录的时候出现program algorithm问题,
Cannot Load Flash Programming Algorithm
针对此问题的解决方案做个记录。


情景复现:
在这里插入图片描述
在这里插入图片描述

这里报错我们看到是No Algorithm found for:08000000H - 08006647H
尝试解决:
在这里插入图片描述

这里初始烧录算法是没有的,需要我们进行手动添加,我使用的板子是F4系列的,所有这里我选择对应的算法。
如果没有对应的算法需要去下载,
下载地址:http://www2.keil.com/mdk5/legacy
这里根据自己使用的STM32芯片型号进行选择。我这个是Cortex-M系列,所以选择左边的,下载后双击打开,一路next即可。
在这里插入图片描述下载完成后进入debug的setting

在这里插入图片描述

在这里插入图片描述

这里有很多,主要是对应的FlashSize,我们烧录一般都是烧录到Flash中,Flash的大小可以参考芯片手册的Memory mapping原理图。这里有各个分区的起始地址。这里算一下大小080F FFFF-0800 0000=000F FFFF,拿得到的结果除以1024为1023,也就是说Flash大小为1Mbyte
在这里插入图片描述
在这里插入图片描述

所以这里设置为1M,我们看这里的Address Range也符合我们原理图中的标识。因此这里设置应该是正确的。编译后烧录成功。
在这里插入图片描述


配置新工程烧录地址相关

上面是我遇到问题的情况的解决方法配置,现在阐述一下对于一个新的工程新的型号板子怎么配置烧录。
1.配置ROM与RAM
在这里插入图片描述

这边正常情况来说Flash就是ROM,SRAM就是RAM
ROM掉电不丢失,RAM掉电丢失,我们烧程序是烧到Flash中去的,开机后单片机从RAM中取数据,大致的流程就是ROM->RAM->CPU
我们通过看原理图知道了ROM和RAM地址范围,那么在配置的地方就可以根据原理图来进行设置。


在这里插入图片描述

这里IROM1即Flash地址,0x0 0000~0xF FFFF的范围即0x10 0000的大小,因为从0开始。后面RAM1与RAM2的size大小分别为1C000和4000都是一个道理。
这里设置不好,后面对应烧写的时候就会报错。


在这里插入图片描述

这里是调试的配置,这里RAM for Algorithm 地址是SRAM的起始地址
后面的size设置需要看具体情况,一般设置默认值即可。一般设置为0x1000


在这里插入图片描述
上面是编译成功后出现的Program Size,各个含义如下。

Code      : 是程序中代码所占字节大小
RO-data :程序中所定义的指令和常量大小 (Read Only)
RW-data :程序中已初始化的变量大小 (Read/Write)
ZI-Data   :程序中未初始化的变量大小 (Zero Initialize)

我们可以通过这个来计算我们需要分配的size大小,不过一般我们debugsetting中使用默认值就好了。

关于烧录的地址设置大体就是这样,毕竟刚入门,能力有限,这里仅记录自己遇到的问题以及解决方案。还有通用的配置情况。文章来源地址https://uudwc.com/A/3wj6b

原文地址:https://blog.csdn.net/Edwinwzy/article/details/129764050

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

h
上一篇 2023年09月29日 02:35
selenium实现智慧树自动刷视频课
下一篇 2023年09月29日 03:35