[MM32硬件] MM32F0131系列单片机IAP跳转程序死机问题

[复制链接]
 楼主| wailian1265k 发表于 2022-11-9 23:49 | 显示全部楼层 |阅读模式
首先看BOOT代码程序跳转部分部分
  1. //跳转到应用程序段
  2. //appxaddr:用户代码起始地址.
  3. void iap_load_app(u32 appxaddr)
  4. {
  5.         if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000)        //检查栈顶地址是否合法.
  6.         {
  7.                 JumpAddress = *(__IO uint32_t *)(appxaddr + 4);// jump2app=(iapfun)*(vu32*)(appxaddr+4);                //用户代码区第二个字为程序开始地址(复位地址)               
  8.                 jump2app = (iapfun)JumpAddress;
  9.                 __set_MSP(*(volatile uint32_t*)appxaddr);//MSR_MSP(*(vu32*)appxaddr);                                        //初始化APP堆栈指针(用户代码区的第一个字用于存放栈顶地址   (__IO uint32_t *)
  10.                 jump2app();                                                                        //跳转到APP.
  11.         }
  12. }                 
因为mm32f0131是M0内核的单片机目前的库函数中没有SCB->VTOR这个中断向量表重定义的寄存器于是我们可以通过以下方法来实现中断向量表重定义。

 楼主| wailian1265k 发表于 2022-11-9 23:50 | 显示全部楼层
基本思想:
1、将中断向量表放入到RAM的起始地址(只需要在应用程序中保留RAM起始地址的0x100大小不使用即可)。
2、在Bootloader中将应用程序的中断向量表从Flash中拷贝到RAM中。
3、设置MM32F013中断向量表位于RAM中
 楼主| wailian1265k 发表于 2022-11-9 23:50 | 显示全部楼层
在APP的程序中添加如下代码
  1.             

  2.         #define APP_START_ADDRESS (uint32_t)(0x8008000)
  3. main()
  4. {
  5.         memcpy((uint8_t *)SRAM_BASE, (uint8_t *)APP_START_ADDRESS, 48*4);        //这里复制中断向量表
  6.                 RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);                       
  7.                 SYSCFG_MemoryRemapConfig(SYSCFG_MemoryRemap_SRAM);        

  8. .
  9. .
  10. .
  11. .
  12. .
  13. }

 楼主| wailian1265k 发表于 2022-11-9 23:51 | 显示全部楼层
我这里把flash的起始地址设为0x8008000,可以根据需要进行修改   要注意的是   48*4  是因为我使用的该款单片机有48个中断向量每个向量4个字节   不同的单片机可能存在不同。
85770636bcc743cded.png
 楼主| wailian1265k 发表于 2022-11-9 23:51 | 显示全部楼层
在app程序中设置地址

0x8008000设置是因为我app的flash起始地址是这个

0x20000C0的设置是因为我使用的该款单片机有48个中断向量*4即为C0

BOOT部分原码:https://download.csdn.net/download/qxw0923/19823759?spm=1001.2014.3001.5501
yangxiaor520 发表于 2022-11-13 10:38 来自手机 | 显示全部楼层
为什么不一起发,又是在回帖中。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

77

主题

413

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部