打印
[应用相关]

STM32开发 -- IAP详解

[复制链接]
407|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
STM32开发 -- IAP详解

使用特权

评论回复
沙发
wangjiahao88|  楼主 | 2020-8-7 22:00 | 只看该作者
首先stm32本身有bootloader,用其自身的bootloader升级最快捷。

使用特权

评论回复
板凳
wangjiahao88|  楼主 | 2020-8-7 22:01 | 只看该作者
1. User Flash Memory(Main Memory)
= 芯片内置的Flash,用户程序存放在其中,这是正常的工作模式。一般情况下,都是选择这种启动方式。
2. System Memory(System Memory)   
= 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。这个区域在出厂后没人能进行擦写或修改,是一个ROM区。
3. SRAM
= 芯片内置的RAM去,也就是STM32的内存了。这种模式可用于调试。一般不推荐

使用特权

评论回复
地板
wangjiahao88|  楼主 | 2020-8-7 22:01 | 只看该作者
分析一下这3种启动方式:
1. Boot from mainFlash Memory
这是STM正常的启动方式,STM32从Flash存储的第一条指令开始执行,即执行STM32的启动代码stm32f10x_vector.s(或stm32F10x_xxx_xxx.s或startup_xxx.s 根据STM32 Firmware library的不同而不同),执行启动代码后会跳到main函数,执行用户程序。
2. Boot from System Memory
该启动方式主要是用于下载程序到main Flash Memory中。System Memory即STM32的ROM,该区域中存放着出厂前预置好的bootloader程序,该程序支持Uart,CAN,USB下载(STM32F103XX只支持从UART1下载)。用户可以根据bootloader中的命令定义(可参考《AN3155》),自己编写一个PC客户端程序,通过将PC的串口与STM32的UART1相连,然后将程序下载到User Flash Memory中。
因为最终还是要运行用户的程序,因此必须让STM32跳转到User Flash Memory中运行。有两个方法:
1)当程序成功下载到User Flash Memory后,将bootloader的GO命令的address设置为User Flash Memory中的地址,然后通过PC客户端程序发送GO命令给bootloader,bootloader会根据GO命令的address参数,跳转到User Flash Memory中启动程序。
2)当程序成功下载到User Flash Memory后,将pin BOOT0设置为0,Reset STM32,则STM32会从User Flash Memroy中启动。

使用特权

评论回复
5
wangjiahao88|  楼主 | 2020-8-7 22:02 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

473

主题

7517

帖子

30

粉丝