为什么又报错 2023-01-30 10:49 采纳率: 100%
浏览 70
已结题

关于#stm32#bootloader的问题,如何解决?(标签-stm32|关键词-bootloodar)

用stm32f407zgt6编写bootloader时,从bootloader跳转到app无法跳转
bootloodar编写中程序里面没有中断,但依然按要求关闭了中断进行跳转,在网上复制的跳转代码,多数可以成功编译但是不能成功跳转,查资料f407zgt6中一个内存扇区为4000,第一段程序的内存扇区首地址0x8000000大小为0x4000。
第二段程序首地址为0x8004000大小为0xFC000。第二段中断向量首地址已经进行了重定向重定向时修改的程序如下

void SystemInit(void)
{
  /* FPU settings ------------------------------------------------------------*/
  #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
    SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));  /* set CP10 and CP11 Full Access */
  #endif

#if defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM)
  SystemInit_ExtMemCtl(); 
#endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM */

  /* Configure the Vector Table location add offset address ------------------*/
#ifdef VECT_TAB_SRAM
  SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
#else
  SCB->VTOR = (FLASH_BASE+0x4000)| VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
#endif
}

怀疑时跳转程序有问题在网上找了好几个跳转程序都不能成功跳转

#define APP_ADDR    0x08004000
void MSR_MSP(uint32_t addr)
{
__ASM volatile("MSR MSP, r0"); 
__ASM volatile("BX r14");
}
 
 
typedef void (*Jump_Fun)(void);
void IAP_ExecuteApp(uint32_t App_Addr)
{
    Jump_Fun JumpToApp;
    
    if (((*(__IO uint32_t *)App_Addr) & 0x2FFE0000) == 0x20000000)    
    {
        JumpToApp = (Jump_Fun) * (__IO uint32_t *)(App_Addr + 4);
        MSR_MSP( * (__IO uint32_t *) App_Addr);
        JumpToApp();
    }
    else
    {
        
    }
}

img

仿真debug的时候没有看到过跳转到0x8004000
运行时没有报错只是跳转失败对汇编原理不太理解,希望有师傅能提供指导
付费悬赏帮忙跳转程序微信红包感谢

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-01-30 12:02
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月7日
  • 已采纳回答 2月7日
  • 修改了问题 1月30日
  • 创建了问题 1月30日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么