26.10.2020 (15:15:50)
RayeR
:
Presne tak, i ja ti rikam do bootloaderu zadny takovy hi-level veci necpat! Bootloader ma byt co nejjednodussi a spolehlivy aby se nemusel uz menit.
My sme to meli udelane zhruba takto: SMT32 mel pripojenou SPI flahs jako ulozsiste s jednoduchym souborovym systemem, aplikace ve flash CPU byl takovy maly OS, ktery umel obsluhovat cany, wifiny, eternety a po techto kanalech prenaset data a tedy i novy FW. Ten se tma poslal jako komprimovany balicek opatreny CRCem, a ulozil se na souborovy system se specialnim atributem. Po restartu se bootloader podival jesi nema ulozeny soubor s novym FW s tim atributem a pokud ano, tak ho za behu rozbaloval a cpal do druhe banky flash. Zaroven bootloader kontorloval integritu FW ve flash a pokud byla spatna (treba po nedokoncenem predchozim flashi), tak se spustila zalozni verze FW, ktera se bezne neprehravala. Pokud by se nak poskodila i ta, tak to zustalo viset v bootloaderu a slo to prehrat z konzole po seriovy lince (poslanim toho sameho komprimovaneho balicku).
Samozrejme je mozny si i kod bootloaderu nahrat do SRAM a pak nemas flash blookovanou - tusim ze takle funguje i ten bootloader co je tam od vyrobce co se aktivuje boot0,1 pinama, a nejpsis i to co komunikuje s ST-Linkem, v adresari FlashLoader je spousta nakych binarek pro ruzne rady MCU, ktere se asi nahravaji do SRAM, ale to sem nikdy nezkoumal...