STM32 F4 从bootloader跳转用户代码遇到的问题

在STM32 F4设备中,从bootloader跳转到用户代码时遇到两个主要问题:未处理的中断函数和用户程序地址未对齐。问题可能源于在bootloader阶段未关闭的外设中断,以及用户程序起始地址不符合0x200对齐的要求,这可能导致库函数中的向量表定位错误。解决办法包括在切换前关闭无关中断和确保用户代码的4字节及向量表要求的0x200对齐。
摘要由CSDN通过智能技术生成
STM32F4Bootloader是一种启动引导程序,用于在STM32F4微控制器上进行固件升级和启动。STM32F4Bootloader分为原厂Bootloader和自定义Bootloader两种类型。 原厂Bootloader是由STM原厂提供的引导程序,一般用于通过串口、CAN或USB等接口进行固件的自举升级。在STM32F4中,原厂Bootloader存储在内部存储器的0x1fff 0000 - 0x1fff 77ff地址范围内,大小为30K。通过设置boot引脚,即将boot0设置为1,boot1设置为0,可以进入原厂Bootloader。然而,使用原厂Bootloader进行固件升级会覆盖原有的程序。 自定义Bootloader用户根据需要自行开发的引导程序,用于制作IAP(In-Application Programming),实现跳转到不同的flash区域执行代码。自定义Bootloader可以满足不同的应用需求。 在STM32F4中,通常需要更改烧写首地址来加载Bootloader1、Bootloader2、APP1和APP2四份代码。可以通过在APP1中将Bootloader1、flag和Bootloader2以boot数组表的形式存在,从而简化固件的烧写过程。例如,可以使用bootflag数组存储升级运行标志和变量表偏移长度,使用bootloader1数组存储Bootloader1的代码。通过这种方式,可以在APP1中通过引用数组的方式来加载和执行Bootloader1的代码。 综上所述,stm32F4Bootloader是一种用于固件升级和启动的引导程序,可以分为原厂Bootloader和自定义Bootloader两种类型,具体使用和实现方式可以参考STM32F407的中文参考手册。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [STM32F4单片机bootloader及在线升级IAP基本原理](https://blog.csdn.net/weixin_43058521/article/details/125355343)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值