我的产品用 在APP初始化时,会对起始地址重定位(用到Bootloader),在一段时间使用后,发现有个别情况会出现死机现象。
我的初始化代码:
HAL_Init();
LL_FLASH_EnablePrefetch();
SystemClock_Config();
MX_GPIO_Init();
Bootloader_App_Set();Bootloader_App_Set();
从状态指示看,MCU是停在重定位的代码中, 其中重定位代码如下
LL_FLASH_EnablePrefetch();
SystemClock_Config();
MX_GPIO_Init();
Bootloader_App_Set();Bootloader_App_Set();
从状态指示看,MCU是停在重定位的代码中, 其中重定位代码如下
void Bootloader_App_Set(void)
{
u8 i;
for(i = 0; i < 48; i++)
{
VectorTable = *(__IO u32*)(APPLICATION_ADDRESS + (i<<2));
}
/* Enable the SYSCFG peripheral clock*/
__HAL_RCC_SYSCFG_CLK_ENABLE();
/* Remap SRAM at 0x00000000 */
__HAL_SYSCFG_REMAPMEMORY_SRAM();
}
请教一下,这一块,你们有没有方案处理?
|
这个估计跟你中断矢量重定位、跳转前的清理动作有关。 这里有篇文章,可以参考下。 STM32F0 IAP应用中不同代码区的跳转话题