STM32启动模式理解浅析
扫描二维码
随时随地手机看文章
对于正点原子开发开发指南这个串口下载不是很理解,简单看了下手册。
STM32可以分为三种其启动模式,1:从主Flash启动 ; 2:从系统存储器启动(其实就是ROM);3:从嵌入式SRAM启动(其实就是常规的RAM)。三种模式根据BOOT0 和BOOT1的管脚电平来决定。具体参考STM32手册。STM32上电或者复位后,代码区始终从0x00000000开始,三种启动模式其实就是将各自存储空间的地址映射到0x00000000中。
1:从Flash启动,将主Flash地址0x08000000映射到0x00000000,这样代码启动之后就相当于从0x08000000开始。
2:从RAM启动,将RAM地址0x20000000映射到0x00000000,这样代码启动之后就相当于从0x20000000开始。
3:从系统存储器启动,开发指南上所讲就是这种启动模式。首先控制BOOT0 BOOT1管脚,复位后,STM32与上述两种方式类似,从系统存储器地址0x1FFF F000开始执行代码。系统存储器存储的其实就是STM32自带的bootloader代码,在bootloader中提供了UART1的接口,通过此接口可以将用户所需的程序代码下载到主Flash中(具体见手册:http://www.st.com/content/ccc/resource/technical/document/application_note/b9/9b/16/3a/12/1e/40/0c/CD00167594.pdf/files/CD00167594.pdf/jcr:content/translations/en.CD00167594.pdf)。下载完毕后,此时程序代码已经存储咋主Flash当中,这时切换启动模式(从主Flash启动),复位后所执行的就是刚刚下载到Flash中的代码了。