You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

STM32微控制器中BootRAM地址在中断向量表中的作用探究

STM32F103C8T6中断向量表中BootRAM地址的解析

你看到的0xF108F85F不是普通的函数地址,它是STM32F1系列内置Bootloader里的RAM启动验证魔术数,下面拆解你的疑问:

触发机制

  • 当你把STM32的BOOT引脚配置为RAM启动模式(BOOT1=1、BOOT0=0)时,芯片上电后不会直接运行SRAM里的代码,而是先进入内置的系统Bootloader。
  • Bootloader会自动读取中断向量表的最后一个表项(也就是你代码里标注@0x108的位置):如果这个位置的值是0xF108F85F,它就判定SRAM中存在合法的用户程序,直接跳转到SRAM起始地址(0x20000000)执行;如果值不匹配,Bootloader就会停留在自身交互模式(比如等待串口下载程序)。

实际作用

  • 这个值本质是个"通行证"——用来告知Bootloader:"SRAM里的程序有效,无需拦截,直接放行执行"。它本身不是可执行代码,Bootloader仅做值的校验,不会去执行该地址的内容。

为何放在中断向量表末尾

  • STM32F1中等密度设备(比如F103C8T6)的中断向量表固定为0x108字节大小,对应66个表项:1个栈顶地址+65个异常/中断处理函数。把这个魔术数放在末尾,既不会占用正常中断处理函数的位置,又能让Bootloader快速定位到校验点。
  • 这是ST官方Bootloader的内部约定,属于未公开的厂商细节,所以你在公开的参考手册、数据手册里查不到相关说明——这类内容大多来自逆向分析或内部技术文档。

内容的提问来源于stack exchange,提问作者strigidie

火山引擎 最新活动