器件型号: 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 :{}>数据
}