Hi
I only just noticed that the NXP Image Vector Table documentation:

doesn't match the NXP code:
/*************************************
* IVT Data
*************************************/
const ivt image_vector_table = {
IVT_HEADER, /* IVT Header */
IMAGE_ENTRY_ADDRESS, /* Image Entry Function */
IVT_RSVD, /* Reserved = 0 */
(uint32_t)DCD_ADDRESS, /* Address where DCD information is stored */
(uint32_t)BOOT_DATA_ADDRESS, /* Address where BOOT Data Structure is stored */
(uint32_t)&image_vector_table, /* Pointer to IVT Self (absolute address */
(uint32_t)CSF_ADDRESS, /* Address where CSF file is stored */
IVT_RSVD /* Reserved = 0 */
};
where
#define IMAGE_ENTRY_ADDRESS ((uint32_t)__Vectors)
and so
__attribute__ ((used, section(".isr_vector")))
void (* const g_pfnVectors[])(void) = {
// Core Level - CM7
&_vStackTop, // The initial stack pointer
ResetISR, // The reset handler
...
...
meaning that the documentation shows the image entry to be a pointer to the initial instruction to be executed. Also:

But the SDK used a pointer to the reset vector, which starts with the stack pointer value.
The SDK uses a header version number of 0x41
I have seen other project that uses a header version number of 0x43 and a real pointer to the program entry instruction.
Does this means that the version number can control different behaviors or does the ROM LOADER actually identify which type it is? Why does the SDK not follow the details described in the documentation and is there an explanation of such nuances?
Regards
Mark