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

这篇具有很好参考价值的文章主要介绍了STM32 keil烧录出现program algorithm出错问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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


情景复现:
STM32 keil烧录出现program algorithm出错问题,嵌入式,stm32,单片机,嵌入式硬件
STM32 keil烧录出现program algorithm出错问题,嵌入式,stm32,单片机,嵌入式硬件
STM32 keil烧录出现program algorithm出错问题,嵌入式,stm32,单片机,嵌入式硬件

这里报错我们看到是No Algorithm found for:08000000H - 08006647H
尝试解决:
STM32 keil烧录出现program algorithm出错问题,嵌入式,stm32,单片机,嵌入式硬件

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

STM32 keil烧录出现program algorithm出错问题,嵌入式,stm32,单片机,嵌入式硬件

STM32 keil烧录出现program algorithm出错问题,嵌入式,stm32,单片机,嵌入式硬件

这里有很多,主要是对应的FlashSize,我们烧录一般都是烧录到Flash中,Flash的大小可以参考芯片手册的Memory mapping原理图。这里有各个分区的起始地址。这里算一下大小080F FFFF-0800 0000=000F FFFF,拿得到的结果除以1024为1023,也就是说Flash大小为1Mbyte
STM32 keil烧录出现program algorithm出错问题,嵌入式,stm32,单片机,嵌入式硬件
STM32 keil烧录出现program algorithm出错问题,嵌入式,stm32,单片机,嵌入式硬件

所以这里设置为1M,我们看这里的Address Range也符合我们原理图中的标识。因此这里设置应该是正确的。编译后烧录成功。
STM32 keil烧录出现program algorithm出错问题,嵌入式,stm32,单片机,嵌入式硬件


配置新工程烧录地址相关

上面是我遇到问题的情况的解决方法配置,现在阐述一下对于一个新的工程新的型号板子怎么配置烧录。
1.配置ROM与RAM
STM32 keil烧录出现program algorithm出错问题,嵌入式,stm32,单片机,嵌入式硬件

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


STM32 keil烧录出现program algorithm出错问题,嵌入式,stm32,单片机,嵌入式硬件

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


STM32 keil烧录出现program algorithm出错问题,嵌入式,stm32,单片机,嵌入式硬件

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


STM32 keil烧录出现program algorithm出错问题,嵌入式,stm32,单片机,嵌入式硬件
上面是编译成功后出现的Program Size,各个含义如下。

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

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

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

到了这里,关于STM32 keil烧录出现program algorithm出错问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

领支付宝红包 赞助服务器费用

相关文章

  • 解决keil5.38编译stm32报四个错误问题

     以上为错误截图,一下为错误信息 Start/core_cm3.c(445): error: non-ASM statement in naked function is not supported   uint32_t result=0;   ^ Start/core_cm3.c(442): note: attribute is here uint32_t __get_PSP(void) __attribute__( ( naked ) );                                           ^ Start/core_cm3.c(465): error: paramet

    2024年02月08日
    浏览(57)
  • Keil环境下CANopenNode移植到STM32问题记录(一)---printf重定向问题

    在直接将CANopenSTM32的示例工程直接移植到Keil环境下。 如果移植工程未实现printf函数重定向,则要注释掉log_printf下面的printf函数,使日志打印失效 在未在选项中勾选使用微库的时候,程序会卡死。调试会发现是卡死在了BKAP 0xAB处,网上搜索会有很多说明,是因为使用了print

    2024年02月13日
    浏览(45)
  • ZYNQ SDK jtag烧录出现错误,Error while launching program: Memory write error at 0xF8000108. Invalid DAP

    之前基于微相的XME0724-10的ZYNQ7010最小系统板画了一个板子。当时烧录正常,隔了几天后发现烧录出现错误,Error while launching program: Memory write error at 0xF8000108. Invalid DAP。首先考虑软件问题,改为仅ps端的hello world 程序,run as 继续出现该问题。考虑是硬件错误,但是在vivado中au

    2024年02月11日
    浏览(43)
  • 【STM32】HAL库的STOP低功耗模式UART串口唤醒,第一个接收字节出错的问题(已解决)

    【STM32】HAL库的STOP低功耗模式UART串口唤醒,第一个接收字节出错的问题(已解决) 最近做项目时 用到了STOP1停止模式的串口唤醒 唤醒配置如下: 【STM32】HAL库低功耗STOP停止模式的串口唤醒(解决进入以后立马唤醒、串口唤醒和回调无法一起使用、接收数据不全的问题) 我

    2024年01月15日
    浏览(48)
  • 【STM32】Keil V5联合VSCode配置代码编写与下载环境,解决报错问题

    最近重新捡起了STM32的开发工作,由于之前一年多的时间一直在从事PC端与Linux下的开发,习惯了VSCode的开发界面以及各种方便的插件,再次打开keil的界面时倍感丑陋。于是花了不少心思配置了VSCode中的代码编写环境,再次特做记录。 VSCode的插件商店中其实包含了支持Keil的插

    2024年02月06日
    浏览(73)
  • 【STM32】HAL库的STOP低功耗模式UART串口唤醒,解决首字节出错的问题(全网第一解决方案)

    【STM32】HAL库的STOP低功耗模式UART串口唤醒,解决首字节出错的问题(全网第一解决方案) 前文: 【STM32】HAL库的STOP低功耗模式UART串口唤醒,第一个接收字节出错的问题(疑难杂症) 目前已解决 并更新了我的gitee库: 基于HAL库建立自己的低功耗模式配置库(STM32L4系列低功耗

    2024年01月18日
    浏览(47)
  • 【经验分享】使用Keil5烧录代码遇到的问题及解决方法

    目录 一. 前言 二. 所遇问题及解决方法         1. 首先最基本的Options for target​编辑的设置不用多说,下载器根据自己所使用的类型进行选择。(我使用的是CMSIS-DAP)         2 .第二种可能出现的问题如下(SWD/JTAG Communication Failure):         3 .第三种可能出现的问题如

    2024年02月05日
    浏览(277)
  • 解决keil5.38编译stm32报四个错误问题,无需更换ARM5编译器

     以上为错误截图,一下为错误信息 Start/core_cm3.c(445): error: non-ASM statement in naked function is not supported   uint32_t result=0;   ^ Start/core_cm3.c(442): note: attribute is here uint32_t __get_PSP(void) __attribute__( ( naked ) );                                           ^ Start/core_cm3.c(465): error: paramet

    2024年02月11日
    浏览(188)
  • STM32芯片连接电脑出现的问题与解决方法

    我用的是正点原子STM32F1系列芯片,在用FLYMCU烧录程序时出现不少问题,下面是我列举的问题和解决方法。 1.FLYMCU参数设置 ①DTR低电平复位,RTS高电平进BootLoader ②勾选:校验、编程后执行、编程后重装文件 ③波特率:F1系列芯片可设置为115200 2.FLYMCU连接不上芯片,显示连接超

    2024年04月23日
    浏览(44)
  • Keil STM32配置SRAM启动并解决SRAM模式代码跑向中断向量表导致程序跑飞的问题

    STM32的Flash的可擦写次数在10000次,在学习或调试过程中为了延长Flash的寿命,将程序写入SRAM是一个很好的办法。在百度上找到的SRAM启动方法总有各种各样的问题,接下来我将会提供一个完整的思路给大家学会如何配置SRAM启动的环境。 这里用来演示的开发板是STM32F103C8T6 1. 在

    2024年02月03日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包