Part Number: MSP432P4111
- MSP432P4111 custom board
- SimpleLink MSP432P4SDK 2.10.0.14
- CCS V7.3.0
- XDCTools 3.50.5.12
- Compiler TI v17.9.0.STS
I'm doing a custom bootloader for my MSP432.
- The boot application lives at the base of the memory map, and will run every time the the board is powered.
- My main application lives at a higher part of memory (0x00080000) and contains some header information used to verify the integrity
- My bootloader read the the main application's _c_int00 from the main application's header
- The bootloader attempts to execute the application, and when I single step through the disassembly (loaing the main application's symbols), the code looks correct, the address looks correct, but I get an exception.
- Note: My bootloader starts as a main loop app with Sys BIOS support...However, BIOS_Start() does not get called, unless the main application in memory is invalid. So when my code calls the main application's _c_int00, SYS BIOS is not running.
This is how I call the main application's _c_int00 funciton:
//////////////// This is defined in the main.c ///////////// typedef void (*TAppInitFunc)(void); TAppInitFunc appCInt00; /////////////// This is in my main loop ////////////////// if( IsMspIntFlashAppValid() ) { appCInt00 = (TAppInitFunc*)GetMspAppEntryPointAddress(); if( appCInt00 ) appCInt00(); else bootError = 1; }
Here's the exception:
Decoded exception, Decoded,Hard Fault: FORCED: USAGE: UNALIGNED Exception context, $addr,0x2003ff10 $type,ti.sysbios.family.arm.m3.Hwi.ExcContext threadType,ti.sysbios.BIOS.ThreadType_Main threadHandle,0x0 threadStack,0x2003f800 threadStackSize,2048 r0,0x8f1f9 r1,0x8f1f9 r2,0x8 r3,0x2000eb01 r4,0x0 r5,0x0 r6,0x400802d3 r7,0x20040000 r8,0x0 r9,0x0 r10,0x0 r11,0x0 r12,0x2000e200 sp,0x2003ffe8 lr,0x94cf pc,0x8f1fe psr,0x21000000 ICSR,0x400f803 MMFSR,0x0 BFSR,0x0 UFSR,0x100 HFSR,0x40000000 DFSR,0x1 MMAR,0xe000ed34 BFAR,0xe000ed38 AFSR,0x0