STM32 启动过程解析 1、 通过boot 引脚设置可以将中断向量表定位于 SRAM 区,即起始地址为 0x2000000,同时复位后 PC 指针位于 0x2000000 处; 2、 通过boot 引脚设置可以将中断向量表定位于 FLASH 区,即起始地址为 0x8000000,同时复位后 PC 指针位于 0x8000000 处; 3、 通过boot 引脚设置可以将中断向量表定位于内置 Bootloader 区,本文不对这种情况做论述; 而 Cortex-M3 内核规定,起始地址必须存放堆顶指针,而第二个地址则必须存放复位中断入口向量地址,这样在 Cortex-M3 内核复位后,会自动从 起始地址的下一个 32 位空间取出复位中断入口向量,跳转执行复位中断服务程序
对比 ARM7/ARM9 内核,Cortex-M3内核则是固定了中断向量表 的位置而起始地址是可变化的
有了上述准备后,下面以STM32 的 2
02 固件库提供的启动文件“stm32f10x_vector
s”为模板,对 STM32 的启动过程做一个简要而全面的解析
程序清单一: ;文件“stm32f10x_vector
s”,其中注释为行号 DATA_IN_ExtSRAM EQU 0 ;1 Stack_Size EQU 0x00000400 ;2 AREA STACK, NOINIT, READWRITE, ALIGN = 3 ;3 Stack_Mem SPACE Stack_Size ;4 __initial_sp ;5 Heap_Size EQU 0x00000400 ;6 AREA HEAP, NOINIT, READWRITE, ALIGN = 3 ;7 __heap_base ;8 Heap_Mem SPACE Heap_Size ;9 __heap_limit ;10 THUMB ;11 P