参考资料

stm32 启动过程官方介绍

基本知识点

  • ROM,FLASH,RAM
    根据芯片手册可知flash,ram 大小,及启动模式设计。
    ROM: 存储区,用户不能修改,掉电后数据不会丢失
    FLASH:存储区,用户代码区,掉电后数据不丢失。
    RAM: 内存,相当于电脑DDR内存,掉电后数据丢失。

    BOOT ROM: 芯片出产时会在芯片内部写入一段boot程序, 用户不可修改,可以根据boot pin 来选择启动模式。比如重uart,spi 启动。此处boot rom 与产品bootloader 功能相似,主要引导应用启动。

  • 链接脚本
    了解更多

  • 堆,栈
    了解更多

  • NVIC中断向量表
    向量表有固定的地址空间,可以查看手册及代码。中断支持可屏蔽中断、非屏蔽中断。一些异常中断是不能屏蔽的,比如hard-fault,程序发生异常后自动执行异常处理函数。 了解更多

NVIC
irq

程序启动流程

在c语言学习过程中,main 函数是C代码的入口点,嵌入式开发时,可以发现main 函数之前还有代码在执行,即 startup_xxx.s 汇编程序。芯片上电后执行第一行指令为Reset_handler,这是NVIC 的第一个向量表,地址为0x0000 00004。 了解更多

Reset_handler –> start –> __main() –> main()