我的STM32 IAP BOOT跳转到APP进入HardFault_Handler解决方案

        客户要求实现OTA功能,于是程序分BOOT和APP,因需要添加一个浮点型全局变量gfHtTmpValue,发现只要调用这个全局变量,BOOT跳转APP后,APP初始化外设结束进入HardFault_Handler,把BOOT去掉,直接跑程序,完全没问题,太奇怪了……。

根据帖子分享IAP更新程序时,FlashAPP无法仿真的方法 (amobbs.com 阿莫电子论坛)

仿真调试,结果发现仿真时居然没问题!!搜了下关于BOOT跳转APP进入HardFault_Handler解决方案,大多建议BOOT先关闭全局中断,APP再开全局中断解决,尝试上述方式,问题依旧。

        没办法了,试一下吧,修改Keil优化等级3级到0级,0级APP可以正常运行,太诡异……。

为了赶时间交样品演示,先修改Keil优化等级到0级,应付下吧;结果还是没应付得了,调试NTC温度采集发现温度数据始终不变!!!(ADC采集通过DMA方式,DMA长度3,ADC3通道,分别是电池电压Vbat、NTC电压Vntc、STM32内部基准电压Vrefint,ADC采集顺序依次如上所述排序)Log信息显示采集到的ADC数据错位了:Vrefint、Vbat、Vntc,也就是说NTC电压实际是Vbat,难怪温度数据始终不变。

        怀疑是不是Keil编译时搞了什么鬼,于是找来陈年旧货EWARM-CD-6701-5794,新建工程遇到问题解决见上一帖子,为什么不用新版IAR,因为太占空间啦。烧录运行后问题出现转机!!!,重新上下电,DMA过来的ADC数据概率性错误而不是Keil4编译的必现问题,对,就是这个概率性让我想到了会不会是BOOT搞的鬼呀,于是修改BOOT,BOOT跳转APP之前关全局中断、关ADC采集、关DMA,结果问题搞定了!!!

总结:BOOT跳转APP之前关闭中断,关闭DMA。

本人手记,用作备忘,他人不解请提问,尽量回答。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
### 回答1: STM32 IAP (In-Application Programming)是指在应用程序运行期间对STM32微控制器进行固件升级的一种方式。它通过编程接口,使得用户可以通过串口或网络等方式将新的固件程序烧录到设备中,而无需通过外部编程器。 STM32的远程升级(OTA)是利用无线通信技术实现的一种远程升级方式。通过EC20开发套件提供的无线通信能力,可以将新的固件程序通过网络发送到STM32设备,并进行自动更新。这种OTA方式可以方便快捷地更新设备的固件,无需物理接触设备。 EC20开发套件是一套基于EC20模块的开发工具。EC20模块是一款集成了2G/3G/4G通信功能的模块,支持数据传输、短信、语音通信等多种功能。通过EC20开发套件,可以方便地开发和测试与EC20模块相关的应用程序。 BootApp是指STM32设备中的引导程序和应用程序。引导程序负责在设备上电时加载和启动应用程序,而应用程序则是设备具体的功能或应用逻辑。BootApp源码是指这些程序的源代码,可以在开发过程中进行定制和修改,以满足特定的需求。 关于以上内容的详细资料可以在ST官方网站或相关论坛上找到。ST官方网站提供了丰富的文档、示例代码和应用笔记,可以作为开发参考。在相关论坛上,还可以找到其他开发者的经验分享和问题解答,对于理解和应用这些技术也是很有帮助的。 ### 回答2: STM32是一款高性能的32位微控制器系列,具有广泛的应用领域。其中的IAP功能使得STM32可以通过固件升级来更新应用程序。远程升级(OTA)技术则进一步提供了通过网络进行远程固件升级的能力。 EC20是一款高速的4G LTE通信模块,具有广泛的通信能力。EC20开发套件提供了一套开发工具和示例代码,帮助开发人员快速实现与EC20通信的功能。 BootApp源码是指STM32的引导程序和应用程序的源代码。引导程序是在系统启动时加载的程序,负责初始化硬件和加载应用程序。应用程序则是用户编写的程序,实现了具体的功能。 关于这些资料,可以从ST官网和其他技术资源网站上获得。ST官网提供了完整的STM32系列产品说明、技术手册和应用笔记,其中包含有关IAPOTA的详细信息。此外,还可以在社区论坛和在线教程中找到很多有关STM32开发和EC20通信的实例和解决方案。 总之,在进行STM32远程升级和EC20开发时,可以利用官方提供的资料和开发套件源码来实现相关功能。与此同时,参考论坛和技术资源网站上的案例和教程,可以获得更多的帮助和指导。 ### 回答3: STM32是意法半导体推出的一系列32位微控制器产品系列,拥有丰富的外设功能和高性能的处理能力。IAP(In-Application Programming)是指通过应用程序对微控制器进行编程和升级的技术。即可以在设备内部通过编程方式更新应用程序,不需要将设备连接到外部编程器。 STM32远程升级是指在网络连接的环境下,通过远程服务器将新的固件或软件包传输到设备,实现设备的无线升级。远程升级可以提高设备的维护效率和更新速度,并且避免了将设备带回到开发环境进行更新的麻烦。 OTA(Over-The-Air)是指通过空中接口进行数据传输的技术。在STM32OTA升级过程中,设备使用EC20开发套件进行通信。EC20是一款支持2G/3G/4G网络通信的模块,可以实现高速稳定的数据传输。 BootApp源码是指STM32微控制器中的启动代码和应用程序的源代码。Boot源码负责启动设备并初始化系统,App源码则是主要的应用程序代码,实现设备的各种功能和业务逻辑。这些源码对于开发者来说是非常重要的,可以用于定制和优化设备的性能和功能。 对于这些资料,我们可以通过搜索STM32和EC20相关的官方文档和开发者论坛来获取。这些资料包括技术手册、应用笔记、示例代码等,可以帮助我们理解和掌握STM32IAP、远程升级、OTA等功能的实现方法和注意事项。此外,还可以参考其他开发者的经验和分享,加快自己的开发进度。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值