<div dir="ltr"><div><div><div>Dobry den,<br><br></div>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.<br>
<br></div>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.<br>
<br></div><div>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.<br>
<br></div><div>A.<br><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-05-17 11:36 GMT+02:00 Jaroslav Buchta <span dir="ltr"><<a href="mailto:jaroslav.buchta@hascomp.cz" target="_blank">jaroslav.buchta@hascomp.cz</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Jj, to je asi nejrozumnejsi reseni ktere jsem taky zvazoval (data bych mel spis mimo procesor v nejake SPI flash ale to je jedno)<br>

Krome toho, ze nesmi vypadnout napajeni se taky nesmi stat, ze bude nova aplikace nejak zasadne nefunkcni, ale co uz se da delat...<br>
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)<br>

Spis se zatim klonim k te druhe variante.<br>
Skoda, ze vektory nejdou presmerovat primo, jako treba u AVR<br>
<br>
<br>
Dne 17. 5. 2014 11:10, Tomáš Halabala napsal(a):<div class="HOEnZb"><div class="h5"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Zdravím,<br>
<br>
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.<br>

<br>
Flash je rozdělená na 4 nezávislé bloky:<br>
<br>
1) Blok od adresy 0 je pro hlavní program a všechny jeho podsekce, které vytvoří linker, který je omezen pouze na tento blok.<br>
2) Blok srovnatelné velikosti nebo větší jako 1 slouží jako úložiště pro data<br>
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.<br>
4) Bootloader<br>
<br>
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í.<br>

<br>
Výsledkem je, že je možno firmware v takovém zařízení naprosto pohodlně přepsat třeba i přes internet.<br>
<br>
Tomáš<br>
______________________________<u></u>_________________<br>
HW-list mailing list  -  sponsored by <a href="http://www.HW.cz" target="_blank">www.HW.cz</a><br>
<a href="mailto:Hw-list@list.hw.cz" target="_blank">Hw-list@list.hw.cz</a><br>
<a href="http://list.hw.cz/mailman/listinfo/hw-list" target="_blank">http://list.hw.cz/mailman/<u></u>listinfo/hw-list</a><br>
</blockquote>
<br>
<br></div></div><div class="im HOEnZb">
---<br>
This email is free from viruses and malware because avast! Antivirus protection is active.<br>
<a href="http://www.avast.com" target="_blank">http://www.avast.com</a><br>
<br></div><div class="HOEnZb"><div class="h5">
______________________________<u></u>_________________<br>
HW-list mailing list  -  sponsored by <a href="http://www.HW.cz" target="_blank">www.HW.cz</a><br>
<a href="mailto:Hw-list@list.hw.cz" target="_blank">Hw-list@list.hw.cz</a><br>
<a href="http://list.hw.cz/mailman/listinfo/hw-list" target="_blank">http://list.hw.cz/mailman/<u></u>listinfo/hw-list</a><br>
</div></div></blockquote></div><br></div>