STM32 ISP 升级体验

摘要

今天玩了一下STM32的ISP升级,记录一下。

前面一段时间工作在调试其他 ARM 芯片的 Bootloader。 就想看看之前了解的 STM32 的 ISP 升级,但是之前一直没试过。

STM32 启动

之前调试 ARM 启动,知道芯片会有一段 BootRom 程序固化在芯片中,这个程序能够加载程序代码到片上 RAM 执行,程序可能来自外部 Flash 或者 串口实时传输。

然后我看了 STM32 F1 的启动,好像BootRom做的内容很简单,只是做了一个地址映射(也可能是我没看全),分3种启动方式。

BOOT1 BOOT0 启动模式 说明
X 0 主闪存存储器 主闪存存储器被选为启动区域
0 1 系统存储器 系统存储器被选为启动区域
1 1 内置SRAM 内置SRAM被选为启动区域

我们平时使用,都是使用的主闪存存储器。就是用Jlink啥的烧写代码,都是烧在主闪存存储器,至于他怎么用JLink烧进去的,我后面再看看呢。

从主闪存存储器启动:主闪存存储器被映射到启动空间(0x00000000),但仍然能够在它原有的地址(0x08000000)访问它。

从系统存储器启动:系统存储器被映射到启动空间(0x00000000),但仍然能够在它原有的地址(互联型产品原有地址为0x1FFF B000,其它产品原有地址为0x1FFF F000)访问它。

从内置SRAM启动:只能在0x2000 0000开始的地址区访问SRAM。

摘录自(STM32中文参考手册)

先不讨论从内置SRAM启动,也就是说,在芯片的地址 0x08000000 开始存放着用户自己烧写的代码,0x1FFFF000 开始存放着ST官方烧写的一段代码。

我们通过控制BOOT引脚,就能控制哪一段代码被映射到0x00000000去执行。

我测试的是系统存储器启动,所以我将BOOT0置1,BOOT1置0。

系统存储器代码下载

系统存储器代码,复位后,使用串口,偶校验,8位数据位,1位停止位,波特率不固定,他会在你第一次发送指令后,计算实际的波特率。

系统存储器代码包含很多功能,读取设备ID,写闪存数据,读闪存数据,这个协议,官方编写了相应的文档《AN2606》和《AN3155》即可知晓他的读写逻辑。

官方的下载器STM32CubeProgrammer,就是使用的这个协议,做的下载和读写。使用串口连接后,就能够下下载和读取了,简易连接前先复位,

记得将BOOT0置1,BOOT1置0。

连接成功后,他会自己去读一下用户主闪存存储器区域的代码,也就是 0x08000000 开始的代码,你也可以点击那个读自己读。

点击那个+号,就可以导入自己的HEX文件,然后下载。

下载完成后,将启动调整成主闪存存储器启动BOOT0置0,BOOT1置0即可,然后复位就可以看到升级内容了。

后续

这个升级一般应该是用在大量出货的时候吧。

好像这个升级还有什么校验的,后面再关注一下。

资料获取

本项目资料完全开源,包含文档和软件安装包。资料包获取方式:

github : https://github.com/snqx-lqh/ProjectReleasePage

gitee(国内镜像) :https://gitee.com/snqx-lqh/ProjectOpenSourceReleasePage

项目属于 32 的编号 B008 ,在发布页中,找到对应项目获取方式。

相关推荐
Brilliantwxx13 分钟前
【STM32】RTC 完结篇:日期操作、闹钟中断与附录(时间戳 / 闹钟 / NTP)
服务器·c语言·stm32·单片机·嵌入式硬件·实时音视频
深圳老胡17 分钟前
STM32C5 应用阶段开发难点解析:从选型到量产的实战经验
笔记·stm32·单片机·代码规范
李永奉18 分钟前
杰理可视化SDK开发-【BUG】AC7006F8芯片开启一拖二和双麦通话语音算法后,设置触摸音在唤醒语音助手和通话时触摸音没作用问题
单片机·嵌入式硬件·mcu·物联网·电脑·bug
HQB202614 小时前
EG1198|屹晶微电子 120V 内置 MOS 异步降压 DC‑DC(高性价比)
嵌入式硬件·硬件工程
果壳science15 小时前
张祥前实验如何获取正电荷
笔记·科技·嵌入式硬件·硬件工程·制造
沉淀的.晴天16 小时前
can总线
stm32
桀人16 小时前
认识AT24C02
stm32·单片机·嵌入式硬件
国科安芯17 小时前
星间激光通信终端CANFD控制网络的时延确定性与辐射可靠性
网络·嵌入式硬件·信息与通信·canfd·低轨卫星·商业航天·抗辐射
一直C17 小时前
嵌入式 Linux 驱动开发学习笔记:内核定时器、platform 总线与 I²C 驱动
linux·驱动开发·嵌入式硬件·学习·imx6ull
传感器与混合集成电路18 小时前
150MHz主频、8路DAC与6路PWM:JLH221360伺服控制SIP解析
嵌入式硬件