Hi Stefan,
In general when having two independent applications (bootloader + MQX application), each has its own space and each should not have their own vector table.
The appnote is doing this.
The bootloader is the default application that runs at boot time and owns the flash vector table space. It generally does not get updated and its flash space can be protected from potential erasing. The bootloader can erase and program the MQX application space and should have method to determine if the MQX application is present and valid.
After bootloader does a erase and program of update MQX application and determines it is valid, the bootloader will jump to start the MQX application from running. Prior to this it is important that any interrupts the bootloader was using are disabled and the system as close to a POR (Power On Reset) state as possible so that the MQX application can boot freely.
The MQX application will initialize the device, copy its vector table from Flash to SRAM, and then update the system to know that the vector table is in SRAM. MQX uses the following to know where the vector table is located:
#define MQX_ROM_VECTORS 0 //DES 0=RAM, 1=ROM vectors (default in small_ram_config.h)
The indepedence of the two applications is important so that is there is power failure, corruption of MQX application update, etc.. that the bootloader will always function from POR/Watchdog/etc..
Hope this helps.
Regards,
David
PS
Yes it is possible to have two applications share one vector table but it is not our recommended method. This decision is ultimately left up to the developer.