Erase Done.
Programming Done.
Contents mismatch at: 90000000H !
Verify Failed!
Error: Flash Download failed - "Cortex-M7"
编译可以通过,烧录会变成这样
这是报错界面

这是flash download

是这个flash算法文件的错误吗
Erase Done.
Programming Done.
Contents mismatch at: 90000000H !
Verify Failed!
Error: Flash Download failed - "Cortex-M7"
编译可以通过,烧录会变成这样
这是报错界面


下午好🌅🌅🌅
本答案参考通义千问
你遇到的错误信息是:
Contents mismatch at: 90000000H !
Erase Done. Programming Done. Contents mismatch at: 90000000H !
Verify Failed!
Error: Flash Download failed - "Cortex-M7"
这表明在烧录(Flash Download)过程中,程序被写入了 Flash 存储器,但验证时发现内容不匹配,特别是在地址 90000000H 处。这通常与以下几种原因有关:
Flash 算法文件(Flash Algorithm)配置错误
.s 或 .lst 文件)与芯片实际的 Flash 结构不符,会导致烧录失败。目标设备 Flash 配置不正确
代码中存在不可写入 Flash 的区域
烧录工具设置问题
编译器生成的代码位置与 Flash 地址不匹配
.ld 文件(链接脚本),可能会导致代码被写入到非预期的 Flash 地址。.s 或 .lst,位于 Keil、STM32CubeProgrammer、J-Link 等工具的安装目录下。示例路径(Keil):
C:\Keil_v5\ARM\FLASH\
示例路径(STM32CubeProgrammer):
C:\STMicroelectronics\STM32CubeProgrammer\flash\
STM32F4xx、STM32L4xx 等)。0x08000000).text)和数据段(.data)是否被正确分配到 Flash 中示例 .ld 文件片段:
MEMORY
{
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 0x00080000 /* 512KB */
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00020000 /* 128KB */
}
Full Chip Erase 或 Sector Erase(根据需要)J-Link Commander 示例命令:
J-Link > device STM32F407VG
J-Link > connect
J-Link > erase
J-Link > loadfile your_file.hex
J-Link > verify
__HAL_FLASH_CLEAR_FLAG() 或者 FLASH_EraseSector() 等函数,确保这些操作不会影响到当前正在运行的 Flash 区域(如 Bootloader 或代码所在区域)。如果 90000000H 是某个特定的地址(如 SRAM 或外设地址),请确认代码是否被错误地写入到了不该写入的位置。
修改后的链接脚本示例(确保代码只写入 Flash):
SECTIONS
{
.isr_vector :
{
. = ALIGN(4);
KEEP(*(.isr_vector))
. = ALIGN(4);
} > FLASH
.text :
{
. = ALIGN(4);
*(.text)
*(.text.*)
*(.glue_veneers)
*(.eh_frame)
} > FLASH
.data :
{
. = ALIGN(4);
*(.data)
*(.data.*)
} > RAM
}
| 问题类型 | 解决方案 | |----------|----------| | Flash 算法文件错误 | 检查并更换正确的 Flash 算法文件 | | 链接脚本错误 | 确认 Flash 起始地址、大小、段分配 | | 烧录工具配置错误 | 检查 Target Device 和 Flash Algorithm 设置 | | 代码写入非 Flash 区域 | 检查代码是否写入 SRAM 或外设地址 | | 代码中有 Flash 操作 | 确保 Flash 操作不影响当前运行代码 |
如果你使用的是 STM32 系列芯片,推荐使用 STM32CubeProgrammer 工具进行烧录,它会自动检测 Flash 算法,并提供更直观的界面。
如果你能提供具体的芯片型号(如 STM32F407VG)、使用的开发环境(如 Keil、STM32CubeIDE、IAR)以及 Flash 算法文件名,我可以帮你进一步定位问题。