在货物监控设备研发中,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电容?