Hallo zusammen,
auf einem STM32F4 habe ich auf der 0x8000000 einen Bootloader. Dieser
prüft einen Flag ab. Je nachdem was vorliegt startet er entweder die
Applikation oder warten auf Instruktionen um per IAP die Firmware zu
aktualisieren.
Im Grunde genommen läuft ja "fast" alles, nur funktionieren die
Interrupts in der Applikation nicht mehr.
Sowohl der Bootloader als auch die Applikation wurden auf Basis von
CubeMx/HAL entwickelt.
1 | void startApplikation(void)
|
2 | {
|
3 |
|
4 | JumpAddress = *(__IO uint32_t*) (APPLICATION_ADDRESS + 4);
|
5 | JumpToApplication = (pFunction)JumpAddress;
|
6 | HAL_RCC_DeInit();
|
7 | HAL_DeInit();
|
8 | SysTick->CTRL = 0;
|
9 | SysTick->LOAD = 0;
|
10 | SysTick->VAL = 0;
|
11 | __HAL_SYSCFG_REMAPMEMORY_SYSTEMFLASH();
|
12 | __set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);
|
13 | JumpToApplication();
|
14 | }
|
Das in die Applikation richtig gesprungen sehe ich darin, das aus der
Applikation heraus, nachdem dorthin gesprungen wurde, eine Uart
Nachricht mit HAL_UART_TRANSMIT verschickt wird.
Es funktioneren aber nicht die Interrupt Callback Funktionen.
Woran könnte dies liegen.
Für jede Unterstützung bin ich sehr dankbar.