在货物监控设备研发中,Boot Loader和APP程序跳转的注意事项

Posted 瑞奇Ricky

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在货物监控设备研发中,Boot Loader和APP程序跳转的注意事项相关的知识,希望对你有一定的参考价值。

最近,笔者在进行货物监控设备的研发工作,货物监控设备功能非常强大,不仅能够精准的定位货物的位置,帮助物流管理者实时监管货物的运输轨迹,预防货物丢失。同时,货物监控设备还可以监测货物的运输环境,例如温度、湿度、光感度等环境参数,可以满足对特殊货物的监管要求。
在这里插入图片描述
我们会不定期的完善和提升产品的功能,因此需要定期对产品进行升级。但是在升级时,应经常会遇到升级不成功的问题。为此我们总结了一些产品升级的注意事项。相信很多产品研发人员都会遇到类似的问题,一起来看看吧!
在这里插入图片描述
产品开发过程中设计了开机引导程序BootLoader(BL)用于产品的固件升级。一般情况下会有一个BL和多个APP程序,其中会涉及到固件跳转的事情。一般,不管在BL还是APP程序中都会使用到中断,而且BL和APP使用的中断会有所不同,如果在程序跳转之前没有合理的处理这些中断,可能会跳转失败,导致死机。所以在BL和APP之间进行跳转前最好关闭全部中断,并且清除相应的中断标志。
在这里插入图片描述
本例(stm32)中是通过串口收到升级指令,从APP跳转到Bootloder进行升级操作,处理流程是先关闭全局中断,然后依次关闭使用到的中断并且清除中断标志,然后跳转到BootLoader(在Bootloader中需要打开全局中断)
在这里插入图片描述
if(strstr(Usart2.RxBuff,“YunXi_BootloaderUpgrade_Ture”) != NULL)

{

__disable_irq();

GPIO_DeInit(GPIOA);

GPIO_DeInit(GPIOB);

GPIO_DeInit(GPIOC);

EXTI_DeInit();

TIM_Cmd(TIM3, DISABLE); //使能TIMx

USART_Cmd(USART1, DISABLE);

USART_Cmd(USART2, DISABLE);

USART_Cmd(USART3, DISABLE);

TIM_ClearITPendingBit(TIM3, TIM_IT_Update);

USART_ClearITPendingBit(USART1, USART_IT_RXNE);//清除中断标志

USART_ClearITPendingBit(USART2, USART_IT_RXNE);//清除中断标志

USART_ClearITPendingBit(USART3, USART_IT_RXNE);//清除中断标志

EXTI_ClearITPendingBit(HDC2080_EXTI_LINE);

EXTI_ClearITPendingBit(BMA250E_EXTI_LINE);

EXTI_ClearITPendingBit(OPT3001_EXTI_LINE);

iap_load_BL(STM32_FLASH_BASE);

}

以上是关于在货物监控设备研发中,Boot Loader和APP程序跳转的注意事项的主要内容,如果未能解决你的问题,请参考以下文章

在货物监控设备的研发中,为什么要在电路上加104,105电容?

货物监控设备研发过程中,如何实现GPS的数据转换?

在货物监控设备研发中,PCB设计常见的问题及处理方法

在货物监控设备研发的过程中,如何对MT MC MLT进行判定?

在货物监控设备的研发过程中,温湿度传感器的应用

在货物监控设备和资产监控设备的研发中,各自功能的侧重点在哪?