当前位置:   article > 正文

对STM32的三种启动模式的理解_stm32下载器启动与设备冷启动的区别

stm32下载器启动与设备冷启动的区别

目录

概括

第一种,主闪存存储器启动

第二种,系统存储器启动

第三种,内置SRAM启动

概括

       在系统复位后, SYSCLK的第4个上升沿, BOOT引脚的值将被锁存。用户可以通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启动模式。

       在从待机模式退出时, BOOT引脚的值将被被重新锁存;因此,在待机模式下BOOT引脚应保持为需要的启动配置。在启动延迟之后, CPU从地址0x0000 0000获取堆栈顶的地址,并从启动存储器的0x0000 0004指示的地址开始执行代码。

        因为固定的存储器映像,代码区始终从地址0x0000 0000开始(通过ICode和DCode总线访问),而数据区(SRAM)始终从地址0x2000 0000开始(通过系统总线访问)。 Cortex-M3的CPU始终从ICode总线获取复位向量,即启动仅适合于从代码区开始(典型地从Flash启动)。 STM32F10xxx微控制器实现了一个特殊的机制,系统可以不仅仅从Flash存储器或系统存储器启动,还可以从内置SRAM启动。

第一种,主闪存存储器启动

        从主闪存存储器启动:主闪存存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址(0x0800 0000)访问它,即闪存存储器的内容可以在两个地址区域访问, 0x00000000或0x0800 0000。

       该模式是正常的模式,运行用户自定义程序的必然选择。

第二种,系统存储器启动

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

     该模式用于启动bootloader,宏观来讲就是这个存储器提供了一个usb下载程序,我们启动这个下载程序程序就可以通过usb下载程序到FLASH, 注意是下载到FLASH,如果我们需要运行刚才下载的程序,那么我们必须转化换成正常模式(从FLASH启动),不过可以设计电路实现一键下载。

        这种模式启动的程序功能是由厂家设置的,STM32 在出厂时由ST 在这个存储区间内部预置了一段BootLoader(也即ISP 程序),这段程序出厂后无法修改。厂家提供的BootLoader 一般支持UART 协议,可以让我们直接通过串口将程序代码烧录到Main Flash memory 中;

第三种,内置SRAM启动

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

        内置SRAM,既然是SRAM,自然也就没有程序存储的能力了,这个模式一般用于程序调试。假如我只修改了代码中一个小小的地方,然后就需要重新擦除整个Flash,比较的费时,可以考虑从这个模式启动代码(也就是STM32的内存中),用于快速的程序调试,等程序调试完成后,再将程序下载到flash中去,完成开发。该模式可以减少FLASH擦除次数,掉电后程序丢失。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/75854
推荐阅读
相关标签
  

闽ICP备14008679号