你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

在 Flash 内两个固件程序间跳转的地址切换

[复制链接]
patch1582 提问时间:2026-8-12 20:20 / 未解决

在 STM32F106RDT上开发 Bootloader 引导程序,Flash 空间划分如下:

0x08000000 ~ 0x0802DFFF:主固件(固件 1)

0x0802F000 ~ 0x08030FFF:预留分区

0x08031000 ~ 0x0805FFFF:备用临时固件(固件 2)

Bootloader 跳转函数存放于 Flash 中。

上电后程序进入启动文件 startup_stm32f10x_hd.s 的复位中断服务函数,我通过导入符号调用自己的 Bootloader 函数,修改复位处理代码如下:

EXPORT  Reset_Handler             [WEAK]
            IMPORT  __main
            IMPORT  SystemInit
            IMPORT  FLASH_Bootloader       ; 自定义导入引导函数
            LDR     R0, =SystemInit
            BLX     R0            
            LDR     R0, =FLASH_Bootloader  ; 载入Bootloader地址
            BLX     R0                                       ; 执行Bootloader
            ;LDR     R0, =__main
            ;BX      R0
            ENDP

我需要根据条件二选一启动两个固件。该如何获取目标固件main()函数的入口地址? 我直接跳转到第一个固件起始地址偏移 4 字节(0x08000000+4),程序没有任何反应。 有没有规范的方法实现两个应用固件的选择与跳转运行?

收藏 评论0 发布时间:2026-8-12 20:20

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版