I thought I'd want to jump to address 0x0 or 0x1C, what I perceive as the start of the bootloader code. I added some of the hopefully relevant information below. I'm curious if I'm jumping to the code, its reading the Direct Enable as true, and just continuing to jump straight to the user application
This comes from the map file after building my freedom_bootloader project (found in bootloader.eww)
"A0": place at 0x00000000 { ro section .intvec, ro section .noinit };
...
Section Kind Address Size Object
------- ---- ------- ---- ------
"A0": 0x470
.intvec 0x00000000 0x410 <Block>
.intvec ro code 0x00000000 0x410 startup_MK22F51212.o [1]
.noinit ro code 0x00000410 0x58 crt0.o [1]
- 0x00000468 0x468
...
This comes from the map file after building my user application code:
"A0": place at 0x0000a000 { ro section .intvec };
"P1": place in [from 0x0000a400 to 0x0000a40f] { section FlashConfig };
"P2": place in [from 0x0000a000 to 0x0000a3ff] |
[from 0x0000a410 to 0x0007ffff] { ro };
...
Section Kind Address Size Object
------- ---- ------- ---- ------
"A0": 0x400
.intvec ro code 0x0000a000 0x400 startup_MK22F51212.o [4]
- 0x0000a400 0x400
"P1": 0x10
FlashConfig ro code 0x0000a400 0x10 startup_MK22F51212.o [4]
- 0x0000a410 0x10
...
And this comes from the memory_map_K22F512.c file, also found in bootloader.eww:
memory_map_entry_t g_memoryMap[] = {
{ 0x00000000, 0x0007ffff, kMemoryIsExecutable, &g_flashMemoryInterface }, // Flash array (512KB)
{ 0x1fff8000, 0x2000ffff, kMemoryIsExecutable, &g_normalMemoryInterface }, // SRAM (96KB for KV31, 128KB for K22)
{ 0x40000000, 0x4007ffff, kMemoryNotExecutable, &g_deviceMemoryInterface }, // AIPS peripherals
{ 0x400ff000, 0x400fffff, kMemoryNotExecutable, &g_deviceMemoryInterface }, // GPIO
{ 0xe0000000, 0xe00fffff, kMemoryNotExecutable, &g_deviceMemoryInterface }, // M4 private peripherals
{ 0 } // Terminator
};