This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSPM0G3519:自定义引导跳转问题

Guru**** 2910380 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1647724/mspm0g3519-custom-boot-jumping-issue

器件型号: MSPM0G3519

您好、

跳转到应用程序后、我的代码卡在硬件中的默认处理程序函数中。 我也无法在调试模式下单独运行应用。 它总是卡在默认处理程序与 Ipsr =3 menas 硬故障. 请帮助解决此问题  

//我的跳转函数代码

 typedef void (* AppFunc)(void);


#define APP_START_ADDR  (0x00008000U)


void jumptoflash (void)

  uint32_t appStack;
  uint32_t appResetHandler;


  AppFunc appEntry;


  /*禁用全局中断*/
  __disable_irq();


  ///*禁用 SysTick */
   SysTick ->CTRL = 0;
   SysTick -> LOAD = 0;
   SysTick -> VAL = 0;


  /*禁用 NVIC 中断*/
  NVIC->FFFFFF[0]= ICER;
  NVIC->ICPR[0]= 0xFFFFFFFF;


  /*读取应用程序矢量表*/
  appStack    =*(volatile uint32_t *) APP_START_ADDR;
  appResetHandler =*(volatile uint32_t *)(APP_START_ADDR + 4U);


  /*验证复位处理程序*/
  if (appResetHandler == 0xFFFFFFFFFFFFU)
  {
    返回;
  }

同时找到我的记忆图  

 


 /*设置矢量表*/
  SCB->VTOR = APP_START_ADDR;
  /*从应用矢量表设置 MSP */
  __set_MSP (appStack);
   /*跳转到应用程序复位处理程序*/
  appEntry =(AppFunc) appResetHandler;
  appEntry ();


  while (1);

}

 

 找到我的存储器映射 引导程序  

移动数据

  闪存中      (Rx) :origin = 0x00000000、length = 0x00008000
  Flash_app   (RX) :origin = 0x00008000、length = 0x00078000
  SRAM_BANK0   (rwx):origin = 0x20200000、length = 0x00010000
  SRAM_BANK1   (RWX):origin = 0x20210000、length = 0x00010000
  BCR_CONFIG   (R) :origin = 0x41C00000、length = 0x000000FF
  BSL_CONFIG   (R) :origin = 0x41C00100、length = 0x00000080
  数据       (r) :origin = 0x41D00000、length = 0x00004000
}

很重要

  .intvecs: > 0x00000000
  .text :palign(8){}> flash
  .const : palign(8){}> flash
  .cinit :palign (8){}> FLASH
  .pinit :palign(8){}> flash
  .rodata : palign(8){}> flash
  .arm.exidx  :palign(8){}> flash
  .init_array :palign(8){}> flash
  .binit    : palign(8){}> flash
  .TI.ramfunc :load = FLASH、palign (8)、run=SRAM_BANK0、table (BINIT)

  .vtable: > SRAM_BANK0
  .args : > SRAM_BANK0
  .data : > SRAM_BANK0
  .bss  : > SRAM_BANK0
  .sysmem : > SRAM_BANK0
  .TrimTable: > SRAM_BANK0
  .stack : > SRAM_BANK0 (high)

  .bCRConfig :{}> BCR_config
  .BSLSConfig :{}> BSL_config
  .databank :{}>数据
}

 找到我的 Memory Map 应用代码  

移动数据

  Flash_boot   (RX) :origin = 0x00000000、length = 0x00008000
  闪存中      (Rx) :origin = 0x00008000、length = 0x00078000
  SRAM_BANK0   (rwx):origin = 0x20200000、length = 0x00010000
  SRAM_BANK1   (RWX):origin = 0x20210000、length = 0x00010000
  BCR_CONFIG   (R) :origin = 0x41C00000、length = 0x000000FF
  BSL_CONFIG   (R) :origin = 0x41C00100、length = 0x00000080
  数据       (r) :origin = 0x41D00000、length = 0x00004000
}

很重要

  .intvecs: > 0x00008000
  .text :palign(8){}> flash
  .const : palign(8){}> flash
  .cinit :palign (8){}> FLASH
  .pinit :palign(8){}> flash
  .rodata : palign(8){}> flash
  .arm.exidx  :palign(8){}> flash
  .init_array :palign(8){}> flash
  .binit    : palign(8){}> flash
  .TI.ramfunc :load = FLASH、palign (8)、run=SRAM_BANK0、table (BINIT)

  .vtable: > SRAM_BANK0
  .args : > SRAM_BANK0
  .data : > SRAM_BANK0
  .bss  : > SRAM_BANK0
  .sysmem : > SRAM_BANK0
  .TrimTable: > SRAM_BANK0
  .stack : > SRAM_BANK0 (high)

  .bCRConfig :{}> BCR_config
  .BSLSConfig :{}> BSL_config
  .databank :{}>数据
}