请教下, 目前硬件平台是STM32H7B0VB ,boot里使用了otfdec 实时解密功能,,跳转后到app后直接进入了MemManage_Handler 错误,。跳转之后的程序时可以正确读取0X900000000 映射的地址上的内容的,读取是正确的
以下是boot 的跳转代码
[C] 纯文本查看 复制代码 RT_WEAK void qbt_jump_to_app(void)
{
OSPI_W25Qxx_MemoryMappedMode(); // 内存映射模式
Setup_Regions(OTFDEC_REG_MODE_INSTRUCTION_OR_DATA_ACCESSES);// 使能实时解密模块
typedef void (*app_func_t)(void);
uint32_t app_addr = QBOOT_APP_ADDR;
uint32_t stk_addr = *((__IO uint32_t *)app_addr);
app_func_t app_func = (app_func_t)(*((__IO uint32_t *)(app_addr + 4)));
if ((((uint32_t)app_func & 0xff000000) != 0x90000000) || ((stk_addr & 0x2ff00000) != 0x20000000))
{
TextDisplay("No legitimate application", "", 1);
return;
}
__disable_irq();
HAL_DeInit();
for(int i=0; i<128; i++)
{
HAL_NVIC_DisableIRQ(i);
HAL_NVIC_ClearPendingIRQ(i);
}
SysTick->CTRL = 0;
SysTick->LOAD = 0;
SysTick->VAL = 0;
HAL_RCC_DeInit();
__enable_irq();
__set_CONTROL(0);
__set_MSP(stk_addr);
app_func();//Jump to application running
}
|