STM32 bootloader error handler

Vse kar je v povezavi z ARM-Cotrex-M procesorji. Sem spada tako HW kot SW.

Moderator: tilz0R

STM32 bootloader error handler

OdgovorNapisal/-a marko » 05 Jul 2024, 06:01

Imam narejen bootloader, preko katerega uporabnik lahko nadgradi firmware.
Deluje tako, da 500ms caka na komande, potem pa zazene glavni program.

Problem, ki ga hocem prepreciti je, da ce upgrade slucajno ni uspesen (recimo da se prekine vmes), da se bi bootloader resetiral, ce se glavni program ne zazene uspesno (in spet cakal tistih 500ms).

Poskusil sem z wdg, pa ne deluje (se ne resetira), prav tako imam v vseh error handlerjih nvic reset.

Kaj se lahko poskusim?
Če ti v življenju ne gre in si nesrečen, se spomni na lastnike Renaultov.
marko
 
Prispevkov: 1710
Pridružen: 18 Jan 2015, 01:00
Kraj: Žiri
Zahvalil se je: 221 krat
Prejel zahvalo: 281 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 146

Re: STM32 bootloader error handler

OdgovorNapisal/-a tilz0R » 08 Jul 2024, 14:47

Če ti ga WDG ni resetiral, potem ali wdg-ja nisi vklopil, ali pa ga nekje periodično updejtaš (upam, da ga ne v kakšnem interruptu).

Če je update neuspešen (ne govorim o bug v firmware update, ampak res failure v procesu update-a), to lahko zaznaš z ali CRC ali pa z hash funkcijo.
Če imaš pa bug v update-u, je pa drug problem, ki ga lahko rešiš, da če dobiš WDG reset, ostaneš v bootloader-ju dlje časa.
Knowledge sharing is people' caring., T. MAJERLE
Uporabniški avatar
tilz0R
 
Prispevkov: 2321
Pridružen: 17 Jan 2015, 23:12
Kraj: Črnomelj
Zahvalil se je: 260 krat
Prejel zahvalo: 730 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 255

Re: STM32 bootloader error handler

OdgovorNapisal/-a marko » 09 Jul 2024, 07:22

Ideja z gledanjem razloga reseta bootu ni slaba, ampak me skrbi, da se v primeru, da se glavni program (aplikacija) zacikla in se ecu resetira, dejansko dobim nedelujoč produkt za pol minute.
Če ti v življenju ne gre in si nesrečen, se spomni na lastnike Renaultov.
marko
 
Prispevkov: 1710
Pridružen: 18 Jan 2015, 01:00
Kraj: Žiri
Zahvalil se je: 221 krat
Prejel zahvalo: 281 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 146

Re: STM32 bootloader error handler

OdgovorNapisal/-a tilz0R » 09 Jul 2024, 08:07

marko je napisal/-a:Ideja z gledanjem razloga reseta bootu ni slaba, ampak me skrbi, da se v primeru, da se glavni program (aplikacija) zacikla in se ecu resetira, dejansko dobim nedelujoč produkt za pol minute.


Ta problem sem jaz večkrat rešil preko shared RAM. Na neki lokaciji main app lahko nekaj zapiše, bootloader lahko to prebere.
In te vrednosti so recimo, kje je bilo zadnje stanje main app-a. Recimo na koncu while zanke daš neko vrednost, ki jo bo main app zapisal, če do tja pride. In na začetku programa daš neko drugo, na koncu init dela daš spet tretjo, in tako naprej.

Bootloader lahko potem ve, kaj se je zgodilo in se pravilno odzove.
Knowledge sharing is people' caring., T. MAJERLE
Uporabniški avatar
tilz0R
 
Prispevkov: 2321
Pridružen: 17 Jan 2015, 23:12
Kraj: Črnomelj
Zahvalil se je: 260 krat
Prejel zahvalo: 730 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 255

Re: STM32 bootloader error handler

OdgovorNapisal/-a marko » 09 Jul 2024, 08:47

Tako imam narejeno ja. Po X poskusih neuspešnega boota, podaljša timeout in čaka. Prav tako iz glavne aplikacije v sram zapiše, da se naj zboota v bootloader.
Če ti v življenju ne gre in si nesrečen, se spomni na lastnike Renaultov.
marko
 
Prispevkov: 1710
Pridružen: 18 Jan 2015, 01:00
Kraj: Žiri
Zahvalil se je: 221 krat
Prejel zahvalo: 281 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 146


Vrni se na ARM-Cortex-M

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 1 gost