搜索
ST MCU Finder
安装免费手机应用,
寻找理想的ST MCU

[应用相关] stm 32 自举模式 读取内部flash

[复制链接]
311|39
 楼主 | 2020-9-27 21:33 | 显示全部楼层 |阅读模式
本帖最后由 一路向北lm 于 2020-9-27 22:10 编辑

文中的两个文档给大家   STM32微控制器系统存储器自举模式.pdf (3.84 MB, 下载次数: 4)

使用特权

评论回复
 楼主 | 2020-9-27 21:33 | 显示全部楼层
1. STM32有三种启动模式:
01.Main Flash memory:主FLASH
02.System memory:系统存储器
03.Embedded SRAM:内置SRAM
三种模式是通过不同配置来实现,一般通过BOOT引脚和BOOT位来配置启动模式。不同的芯片配置有差异,有些芯片没有BOOT1引脚,会结合BOOT位来实现。

使用特权

评论回复
 楼主 | 2020-9-27 21:33 | 显示全部楼层
2.内嵌的自举程序
STM32内嵌的自举程序存放在系统存储区,由ST在生产线上写入,用户不能修改。我们选择System memory(系统存储器)启动模式,就会进入系统存储区执行自举程序,内嵌的自举程序主要用于通过串行、IIC、SPI、USB、CAN等接口与外部通讯。不同型号MCU支持的串行接口不一样,具体请参看应用笔记 AN2606。

使用特权

评论回复
 楼主 | 2020-9-27 21:34 | 显示全部楼层
3.自举程序中UART协议
通信就会牵涉到协议,这里也说一下自举程序中 USART 协议。
USART 自举程序命令集:(具体参考官方文档AN3155)

704085f7094c7204a4.png

使用特权

评论回复
| 2020-9-27 21:34 | 显示全部楼层
学习学习!

使用特权

评论回复
| 2020-9-27 21:35 | 显示全部楼层
自举程序中UART协议

这个时官方固化好的?

使用特权

评论回复
| 2020-9-27 21:40 | 显示全部楼层
学习学习!

使用特权

评论回复
| 2020-9-27 21:41 | 显示全部楼层
官方文档AN3155

感觉这个文档 写的很好

枚举 也非常清楚!

使用特权

评论回复
 楼主 | 2020-9-27 21:52 | 显示全部楼层
Get 命令
用户通过 Get 命令可获取自举程序的版本及支持的命令。自举程序接收到 Get 命令后,会将
自举程序版本和支持命令的代码发送给主机
407955f709912f3412.png

使用特权

评论回复
 楼主 | 2020-9-27 21:52 | 显示全部楼层
具体如下:
356745f709922ca172.png

使用特权

评论回复
 楼主 | 2020-9-27 21:52 | 显示全部楼层
Get Version & Read Protection Status 命令
Get Version & Read Protection Status 命令用于获取自举程序版本及读保护状态。自举程序
接收到此命令后,会将如下信息(版本、使能和禁止读保护的次数)发送给主机。
895885f7099359fe85.png

使用特权

评论回复
 楼主 | 2020-9-27 21:53 | 显示全部楼层
具体如下:
281015f70994721a22.png

使用特权

评论回复
 楼主 | 2020-9-27 21:54 | 显示全部楼层
Get ID 命令
Get ID 命令用于获取芯片 ID(标识)的版本。自举程序接收到此命令后,会将产品 ID 发送给主机。
431345f709981255e8.png

使用特权

评论回复
 楼主 | 2020-9-27 21:54 | 显示全部楼层
具体如下:
162825f7099910b855.png

使用特权

评论回复
 楼主 | 2020-9-27 21:55 | 显示全部楼层
Read Memory 命令
Read Memory 命令用于从 RAM、 Flash 和信息块(系统存储器或选项字节区域)中的任何
有效存储器地址(参见注释)读取数据。(读的前提是Flash没有加读保护操作)
869775f7099bad68f0.png

使用特权

评论回复
 楼主 | 2020-9-27 21:55 | 显示全部楼层
具体如下:(读取flash 0x 08000000 开始的16个字节的数据)
318645f7099cc63bbf.png

使用特权

评论回复
 楼主 | 2020-9-27 21:55 | 显示全部楼层
Go 命令
Go 命令用于从应用程序指定的地址开始执行已下载的代码或其它任何代码。自举程序接收
到 Go 命令后,会将 ACK 字节发送到应用程序。发送 ACK 字节后,自举程序会等待一个地
址(4 个字节,字节 1 表示地址 MSB,字节 4 表示 LSB)和一个校验和字节,然后检查接
收到的地址。如果接收到的地址有效且校验和正确,则自举程序将发送一个 ACK 字节,否
则将发送一个 NACK 字节并中止此命令。
199925f7099e10044d.png

使用特权

评论回复
 楼主 | 2020-9-27 21:56 | 显示全部楼层
具体如下:使用go 跳转到 flash地址处执行 (0x08000000),此时LED已经闪烁
657255f7099f59d207.png

使用特权

评论回复
 楼主 | 2020-9-27 21:56 | 显示全部楼层
命令太多,其它的就不再介绍了!

使用特权

评论回复
 楼主 | 2020-9-27 22:01 | 显示全部楼层
5.自举程序上位机(自己使用Qt编写的,主要用于测试)
01. 在自举模式下可以简单实现对内部flash的数据的读出(flash不加锁)
02. 在自举模式下可以简单实现对内部sram的数据的读出(flash不加锁)
03.可以生成对应的.hex文件,使用Qt自己设计算法实现。
04.下载部分暂且没有做。

580645f709b2241749.png

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表