当前位置: 首页 > ds >正文

读取STM32单片机升级写入Flash的.bin文件方法

1.背景

        在项目中,使用STM32L051C8Tx系列单片机做裸机升级,使用方案是通过串口485+YMODEM协议方案

关于Ymodem协议参考如下:Ymodem协议解析-CSDN博客

        在bootload升级过程中,也成功把.bin文件写到flash中,但是最后执行跳转app操作没有反应(正常使用keil烧录bootload和app是能正常跳转到app中运行的),所以需要排查问题,查看Flash中对应地址写入的bin文件数据是否正确。

2.读取 Flash 中 BIN 文件的工具

2.1 J-Flash 工具(推荐)

        J-Flash 是 SEGGER 公司开发的通用 Flash 烧录工具,支持多数 STM32/Cortex-M 芯片的读写操作。 操作步骤如下:

  • 连接调试器:使用 J-Link 或 ST-Link 连接单片机,确保接线正确(SWD 或 JTAG 模式)。
  • 新建工程:在 J-Flash 中选择芯片型号(如 STM32F103)。
  • 读取 Flash 内容:

                1.点击 Target → Connect 连接芯片。

                2.选择 Target → Manual Programming → Read Back → Entire Chip(读取整个 Flash 区域)。

  • 导出 BIN 文件:点击 File → Save Data File As,选择保存格式为 Binary,指定输出路径即可。 优点:操作简单,支持批量读取和校验功能。

2.2 STM32CubeProgrammer(ST 官方工具)

适用于 STM32 全系列芯片,支持读写出厂配置和数据。 操作步骤:

  • 连接 ST-Link 调试器,启动软件并选择 ST-LINK 模式。
  • 点击 Connect 连接芯片,进入 Memory & File Editing 标签页。
  • 输入 Flash 起始地址(如 0x08000000)和长度,点击 Read 读取数据。

2.3 Keil/IAR 的内存导出功能

在调试模式下直接导出 Flash 内容:

  • Keil:点击 Debug → Memory Save,输入起始地址和长度,保存为 BIN 文件。
  • IAR:使用 Memory Save 功能类似操作。 局限性:需依赖 IDE 环境,适合开发阶段调试

3.通过调试排查自己写入Flash的bin文件数据是否正确

        进入DeBug调试--->点击Memory Windows--->输入Flash中写入app的地址"0x8004000",回车看写入的数据,比较bin文件,看写入数据是否有问题,如下图所示;

        STM32L051C8Tx单片,flash总共64k,这里我分16k给bootload,46k给app,剩下2k做存储功能,所以我查数据从"0x8004000"地址开始。

http://www.xdnf.cn/news/10039.html

相关文章:

  • Vert.x学习笔记-什么是Handler
  • 【第4章 图像与视频】4.2 图像的缩放
  • Java面试八股(Java基础,Spring,SpringBoot篇)
  • 4.1.4 基于数据帧做SQL查询
  • 强化学习极简入门笔记
  • 【Unity基础】Unity新手实战教程:用ScriptableObject控制Cube颜色
  • 【Phytium】飞腾FT2000/4 GPIO功能开发实例
  • Android Gnss模块初步整理
  • Transformer模型:多头注意力机制深度解析
  • 在MDK中自动部署LVGL,在stm32f407ZGT6移植LVGL-8.3,运行demo,显示label
  • leetcode刷题 java总结
  • 数据库 | 使用timescaledb和大模型进行数据分析
  • Allegro 输出生产数据详解
  • BigemapPro 数据坐标转度分秒格式教程
  • C++_核心编程_ 左移运算符重载 “<<” 左移运算符
  • 解释k8s种ConfigMap和Secret的作用,如何在Pod中挂载环境变
  • PortSwigger-04-cors
  • 快递物流查询接口如何用C#进行调用?
  • 微机消谐装置:保障PT柜安全的核心设备
  • 第二章支线一:影之殿堂 · 阴影与过渡魔法
  • 下一代数模ai智能体研发意见征集
  • Win11安装Dify
  • 【Linux】(1)—进程概念-③Linux进程概念与PCB
  • 重温经典算法——选择排序
  • 从“刚性扩容”到“弹性供给”:移动充电服务重构配电网边际成本
  • Node.js 中 require 源码解析
  • 从零起步认知微内核操作系统(AGI)
  • JavaScript 循环语句总结
  • Linux浅谈
  • VMware安装esd格式系统镜像