STM32F1xx vlastn bootloader
Andrej Jancura
aj.hwlist na gmail.com
Sobota Květen 17 12:09:50 CEST 2014
Dobry den,
prepacte, ze Vam idem kecat do vlakna bez toho, aby som poznal STM32, ale
ked to tu tak dlho rozoberate, tak ma napadli dve tri myslienky, ktore by
mohli byt tiez zaujimave a inspirativne.
Prva je pouzitie externej spi flash na download programu a potom po resete
jeho prekopirovaniu do mcu. Myslim, ze ta externa pamat by sa dala vyuzit
aj inak ako na ulozenie programu, co by mohol byt tiez bonus.
Druha myslienka, je modifikovana verzia riesenia vektorov v monitore HC11
ci starych dobrych Amigach. Ta HC11 mala na pevnych adresach preruseni vzdy
vektor do RAM, kde bol ulozeny jmp do prislusnej rutiny v RAM, ROM ci
Flash. Takze by stacilo napisat pevnu obsluhu pre RESET, ktora by
inicializovala tabulku vektorov v RAM a skocila do programu. Druha
myslienka ide este trochu dalej, kde v Amige bola len jedna pevna adresa v
RAM, tusim 0x0004, kde bol vektor do tabulky vsetkych obsluh preruseni a
programov. Kazdy program mal na zaciatku pevnu tabulku vsetkych obsluh
preruseni a kazde prerusenie nacitalo adresu z tej 0x0004, kde bola zase
tabulka uz prislusnych vektorov obsluhy preruseni. Takze bootloader by mal
zase nejaku minimalnu pevnu strukturu a uzivatelsky program potreboval mat
navyse len tabulku kdesi v pamati.
A.
2014-05-17 11:36 GMT+02:00 Jaroslav Buchta <jaroslav.buchta na hascomp.cz>:
> Jj, to je asi nejrozumnejsi reseni ktere jsem taky zvazoval (data bych mel
> spis mimo procesor v nejake SPI flash ale to je jedno)
> Krome toho, ze nesmi vypadnout napajeni se taky nesmi stat, ze bude nova
> aplikace nejak zasadne nefunkcni, ale co uz se da delat...
> Dalsi moznost me napadla napevno umisteny bootloader od 0, vektory
> presmerovany do aplikace umistene za bootloaderem, dalo by se prehravat bez
> ulozeni do mezipameti primo, v pripade selhani nebo nefunkcnosti aplikace
> se nic nestane, bootloader bude fungovat po resetu dal... To presmerovani
> vektoru je ovsem jedna nebo par instrukci navic (u tech, co by vyuzival i
> bootloader, hlavne USB)
> Spis se zatim klonim k te druhe variante.
> Skoda, ze vektory nejdou presmerovat primo, jako treba u AVR
>
>
> Dne 17. 5. 2014 11:10, Tomáš Halabala napsal(a):
>
> Zdravím,
>>
>> já mám následující vlastní řešení, které používám u svých produktů. Jedná
>> se o skupinu zařízení, které vždy komunikují s okolím IP protokolem ať už
>> je fyzickým rozhraním LAN / WiFi / USB nebo jiné IP kompatibilní medium.
>> Hlavní výhody to má v tom, že aplikaci na PC je jedno jak je zařízení
>> připojené a nepotřebuji žádné vlastní ovladače, protože třeba i přes USB se
>> zařízení tváří jako USB síťový adaptér, takže se automaticky použijí
>> ovladače, které jsou součástí OS.
>>
>> Flash je rozdělená na 4 nezávislé bloky:
>>
>> 1) Blok od adresy 0 je pro hlavní program a všechny jeho podsekce, které
>> vytvoří linker, který je omezen pouze na tento blok.
>> 2) Blok srovnatelné velikosti nebo větší jako 1 slouží jako úložiště pro
>> data
>> 3) Blok s konfigurací, kde jsou uloženy údaje o konkrétním kusu produktu
>> jako je např. sériové číslo, MAC adresy, VID, PID atd.
>> 4) Bootloader
>>
>> Linker má k dispozici blok 1 a přeložený program funguje se standardním
>> umístěním vektorů. Vše co je potřebné pro zajištění komunikace s okolím je
>> součástí hlavního programu, který volá podle potřeby funkce "bootloaderu",
>> které mají pevné a neměnné adresy. Jedná se vlastně jen o jakousi sadu
>> funkcí pro manipulaci s flash pamětí a s programovatelnými pojistkami.
>> Upgrade firmware probíhá tak, že jej hlavní program přijme, zkontroluje a
>> uloží do bloku 2 a pak jen zavolá funkci z bloku 4, která si zakáže
>> přerušení (takže žádnou vlastní tabulku vektorů nepotřebuje) a následně
>> provede samotné přepsání firmwaru v bloku 1 daty, uloženými v bloku 2.
>> Jediné co se nesmí stát je přerušení napájení zrovna v okamžiku, kdy
>> probíhá tato závěrečná fáze, ale ta trvá opravdu jen několik ms, takže je
>> riziko znefunkčnění naprosto minimální.
>>
>> Výsledkem je, že je možno firmware v takovém zařízení naprosto pohodlně
>> přepsat třeba i přes internet.
>>
>> Tomáš
>> _______________________________________________
>> HW-list mailing list - sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>>
>
>
> ---
> This email is free from viruses and malware because avast! Antivirus
> protection is active.
> http://www.avast.com
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20140517/0f8beecc/attachment.html>
Další informace o konferenci Hw-list