www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Daljinsko nalaganje novega firmwara na uC
Pojdi na stran 1, 2  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Elektronika
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
MarkoM
Član
Član



Pridružen-a: Tor 12 Sep 2006 15:29
Prispevkov: 2825
Aktiv.: 12.35
Kraj: Lovrenc na P.

PrispevekObjavljeno: Tor Mar 11, 2008 11:44 am    Naslov sporočila:  Daljinsko nalaganje novega firmwara na uC Odgovori s citatom

Pozdrav!

Je kdo že delal kaj podobnega? Se pravi imam nekje neki mikrokrmilnik, ki bi ga rad preprogramiral, vendar ne na klasičen način preko programatorja ali kakšnega serijskega kabla. Stvar bi bila v tem, da bi novi firmware poslal po nekem vodilu mikrokontrolerju, ki bi ga ta nekam shranil in se nato bootal iz njega.
Zanimajo me predvsem naprave, ki to imajo, ker trenutno ne poznam nobene takšne. To seveda mislim na vgrajene sisteme.
Sam imam naštudiran koncept kako bom to implementiral, in sicer z dvema mikrokontrolerjema in zunanjim flashom. Sprašujem pa zato, da ne bi slučajno izumljal tople vode.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Davorin
Član
Član



Pridružen-a: Pon 16 Okt 2006 16:28
Prispevkov: 129
Aktiv.: 0.57

PrispevekObjavljeno: Tor Mar 11, 2008 12:38 pm    Naslov sporočila:   Odgovori s citatom

Mogoče si mislil kaj takega:

http://www.microsyl.com/
http://www.elektronik.si/phpBB2/viewtopic.php?t=7305&highlight=bootloader
http://www.elektronik.si/phpBB2/viewtopic.php?t=3664&highlight=bootloader
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
MarkoM
Član
Član



Pridružen-a: Tor 12 Sep 2006 15:29
Prispevkov: 2825
Aktiv.: 12.35
Kraj: Lovrenc na P.

PrispevekObjavljeno: Tor Mar 11, 2008 1:10 pm    Naslov sporočila:   Odgovori s citatom

To že vem. Jaz bi programiral preko brezžične povezave, torej ne bom imel možnosti fizičnega dostopa z laptopom do kontrolerja.
Zanima me samo, če se lahko takšna stvar naredi s samo enim mikrokontrolerjem?
LPC ima npr. možnost IAP, kjer lahko pišeš v flash med delovanjem, samo ima premalo ram-a, da bi lahko prepisal celotnem firmware.
Naštudiran imam ISP protokol za LPC-je in na tem bom gradil. Za ta podvig potrebujem dodaten uC ali pač?

Uporabil bom LPC arm7, ta pa nima možnosti bootanja preko spi, paralel itd. kot to omogočajo nekateri uC.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
dragoon
Član
Član



Pridružen-a: Čet 03 Maj 2007 21:51
Prispevkov: 452
Aktiv.: 2.05
Kraj: Trojane

PrispevekObjavljeno: Tor Mar 11, 2008 1:31 pm    Naslov sporočila:   Odgovori s citatom

Išči pod "bootloader".
Pač narediš firmware, ki lovi podatke iz te tvoje brezične naprave in shrani v flash.
Dovlj je en kontroler.

_________________
LP, Mitja


Nazadnje urejal/a dragoon Tor Mar 11, 2008 1:33 pm; skupaj popravljeno 1 krat
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
chaos
Član
Član



Pridružen-a: Sob 16 Sep 2006 22:12
Prispevkov: 1063
Aktiv.: 4.65
Kraj: Zagorje ob Savi

PrispevekObjavljeno: Tor Mar 11, 2008 1:32 pm    Naslov sporočila:   Odgovori s citatom

Kaj pa SPI flash + napišeš svoj bootloader, ki skopira kodo v on-chip flash ali ram?

To bi se lahko naredilo z enim samim kontrolerjem, možnosti kako, je kar nekaj.

V bistvu sploh ne bi rabil zunanjega flasha, če imaš dovolj prostora v flashu oz. ramu ... v vsakem primeru ostane problem, kako procesor resetirati, ker direkten 'skok' iz stare v novo kodo ni preveč pameten ...

Najbolj pametno bi bilo kodo razdeliti na dva dela -- neka osnova v flashu in funkcije, za katere pričakuješ, da jih boš popravljal v ramu. Potem samo ob programiranju novega flasha zaključiš izvajanje trenutnih funkcij, se vrneš v neko funkcijo v flashu, ki zna brati iz kjerkoli boš že pošiljal nov firmware in pisati v ram, napišeš nove funkcije v ram, popraviš pointerje na funkcije in poženeš ... lahko imaš te iste funkcije za 'backup' še v flashu.

LP!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mucek4
Član
Član



Pridružen-a: Sob 18 Jun 2005 20:52
Prispevkov: 2952
Aktiv.: 12.45
Kraj: Tržič - Mesto med gorami

PrispevekObjavljeno: Tor Mar 11, 2008 1:33 pm    Naslov sporočila:   Odgovori s citatom

Na začetku programa daš bootloader. Ki zna preko brezžične povezave pisati tvoj program v nadaljevanju. Ko se update-a program zapisuje neposredno čez že ovstoječ progam. Če crkne nadgradnja, program ne dela, še vedno pa dela bootloader.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
MarkoM
Član
Član



Pridružen-a: Tor 12 Sep 2006 15:29
Prispevkov: 2825
Aktiv.: 12.35
Kraj: Lovrenc na P.

PrispevekObjavljeno: Tor Mar 11, 2008 1:36 pm    Naslov sporočila:   Odgovori s citatom

chaos je napisal/a:
Kaj pa SPI flash + napišeš svoj bootloader, ki skopira kodo v on-chip flash ali ram?

To bi se lahko naredilo z enim samim kontrolerjem, možnosti kako, je kar nekaj.

V bistvu sploh ne bi rabil zunanjega flasha, če imaš dovolj prostora v flashu oz. ramu ... v vsakem primeru ostane problem, kako procesor resetirati, ker direkten 'skok' iz stare v novo kodo ni preveč pameten ...

Najbolj pametno bi bilo kodo razdeliti na dva dela -- neka osnova v flashu in funkcije, za katere pričakuješ, da jih boš popravljal v ramu. Potem samo ob programiranju novega flasha zaključiš izvajanje trenutnih funkcij, se vrneš v neko funkcijo v flashu, ki zna brati iz kjerkoli boš že pošiljal nov firmware in pisati v ram, napišeš nove funkcije v ram, popraviš pointerje na funkcije in poženeš ... lahko imaš te iste funkcije za 'backup' še v flashu.

LP!


Hm, da bi pisal svoj bootloader? Kaj pa vem, če bi se spuščal tako daleč. Seveda bom imel en osnovni firmware, ki bo shranjen na flashu in bo imel nalogo samo sprejeti novi firmware in ga naložiti.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 23.54

PrispevekObjavljeno: Tor Mar 11, 2008 2:51 pm    Naslov sporočila:   Odgovori s citatom

Saj to je "bootloader", le pognati se mora na zacetku in potem prepustiti kontrolo glavnemu programu (torej skoci na izvajanje programa, ce ni nobene nadgradnje).
_________________
Ka ti bo pa torba ce si kupu kolo ?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
MarkoM
Član
Član



Pridružen-a: Tor 12 Sep 2006 15:29
Prispevkov: 2825
Aktiv.: 12.35
Kraj: Lovrenc na P.

PrispevekObjavljeno: Tor Mar 11, 2008 3:07 pm    Naslov sporočila:   Odgovori s citatom

Vse skupaj je ok, samo še vedno ostane problem resetiranja samega sebe. Dodatni zunanji hardware mi v vsakem primeru ne uide (zraven SPI flash-a). Verjetno bom uporabil kar dva uC. Glavni bo eden iz družine LPC, drugi pa en majhen PIC, ki bo flashal prvega. PIC bo imel tudi nalogo kontrole LPC-ja, če npr. nov firmware ne dela bo ga ponovno flashal z nekim osnovnim firmwareom.
Bolj preproste rešitve ne vidim.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 23.54

PrispevekObjavljeno: Tor Mar 11, 2008 3:17 pm    Naslov sporočila:   Odgovori s citatom

MarkoM je napisal/a:
Vse skupaj je ok, samo še vedno ostane problem resetiranja samega sebe. Dodatni zunanji hardware mi v vsakem primeru ne uide (zraven SPI flash-a). Verjetno bom uporabil kar dva uC. Glavni bo eden iz družine LPC, drugi pa en majhen PIC, ki bo flashal prvega. PIC bo imel tudi nalogo kontrole LPC-ja, če npr. nov firmware ne dela bo ga ponovno flashal z nekim osnovnim firmwareom.
Bolj preproste rešitve ne vidim.


Ce je to bolj preprosto kot skok na naslov, kjer se zacne aplikacija ... Rolling Eyes

Kje pise, da se mora MCU povsem resetirati; ali PC tudi resetiras z gumbom vsakic, ko zelis pognati drug program ? Dokler je program napisan pravilno, ni nobene potrebe po resetu ... bos imel vsaj spodbudo za pravilno programiranje.

_________________
Ka ti bo pa torba ce si kupu kolo ?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
MarkoM
Član
Član



Pridružen-a: Tor 12 Sep 2006 15:29
Prispevkov: 2825
Aktiv.: 12.35
Kraj: Lovrenc na P.

PrispevekObjavljeno: Tor Mar 11, 2008 3:28 pm    Naslov sporočila:   Odgovori s citatom

Sokrat je napisal/a:
Dokler je program napisan pravilno, ni nobene potrebe po resetu ... bos imel vsaj spodbudo za pravilno programiranje.


Very Happy

Tukaj je prvi problem. Very Happy Stvar bo za testne namene in tam ni pričakovati, da bo vsak upload uspešen. Če nekaj zaj... se vsuje brezžična komunikacija in takrat je konec pravljice.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Proteus
Član
Član



Pridružen-a: Sre 15 Jun 2005 10:03
Prispevkov: 1943
Aktiv.: 8.19

PrispevekObjavljeno: Tor Mar 11, 2008 4:02 pm    Naslov sporočila:   Odgovori s citatom

Sam imam zadevo narejeno na naslednji način:
Flash imam razdeljen na tri segmente:
1. prostor za bootloader
2. prostor za aplikacijo 1
3. prostor za aplikacijo 2

Preko bootloaderja (ki sem ga sam napisal) poteka start aplikacije in vsa komunikacija za prenos novega firmware.

CPU se vedno starta v bootloader in na začetku preveri, katera aplikacija je veljavna (preko CRC in kazalca, ki mu pove, kaj je bilo nazadnje naloženo (aplikacija 1 ali 2 ).

Če nalagam nov SW, potem ga nalagam na mesto neaktivne aplikacije. Pravilnost prenosa podatkov preverjam sproti med prenosom (zaradi morebitne ponovitve prenosa podatkov) in na koncu za cel SW (pomembno, da CPU ve, da je SW veljaven).

Če je vse O.K. potem vpišem na ustrezno mesto še CRC zadnje aplikacije in kazalec na novo aplikacijo.

Sledi reset CPU, ki sam ugotovi na katero aplikacijo mora skočit (preveri kazalec in CRC).

Komunikacijo imam standardizirano in se deloma vedno odvija preko bootloaderja, kar pomeni, da le ta loči ali so podatki aplikativni (namenjeni aplikaciji) ali sistemski (nov SW). Na ta način lahko celo mešam komunikacijo; malo nalagam SW, malo delam standardna opravila, ki jih mora aplikacija nemoteno opravljati. Aktivna aplikacija torej niti ne ve (ves čas deluje normalno), da se vzporedno nalaga nov SW.

Če ugotovim, da nova aplikacija ne deluje v redu, potem zadevo z enim telegramom preklopim nazaj na staro.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 23.54

PrispevekObjavljeno: Tor Mar 11, 2008 4:26 pm    Naslov sporočila:   Odgovori s citatom

Proteus je lepo opisal kako taka zadeva gre, rako da meni ni treba Very Happy

Ce se mocno bojis za integriteto podatkov, obstajajo tudi ucinkovitejse (a posledicno potratnejse) sheme za kodiranje podatkov, ne samo neucinkovite kode za preverjanje.

Isci "hamming code" ali "reed-solomon code", s tem da se pri brezzicnem prenosu ponavadi podatki razbijejo se naprej. Branja na to temo je ogromno (recimo AN od Motorole s primeri ucinkovitih algoritmov v assemblerju za 8-bitnike).

_________________
Ka ti bo pa torba ce si kupu kolo ?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Proteus
Član
Član



Pridružen-a: Sre 15 Jun 2005 10:03
Prispevkov: 1943
Aktiv.: 8.19

PrispevekObjavljeno: Tor Mar 11, 2008 4:43 pm    Naslov sporočila:   Odgovori s citatom

Po mojih izkušnjah se, (pri radijskem prenosu podatkov) za izvedbo CRC, običajno seštevanje ne obnese in je potrebno uporabiti kakšen polinom, ki napako bistveno bolj razprši po naboru možnih vrednosti za CRC, kot pa običajno seštevanje.

Na spodnjem linku je praktično vse za izvedbo učinkovitega CRC:
http://www.ross.net/crc/
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
MarkoM
Član
Član



Pridružen-a: Tor 12 Sep 2006 15:29
Prispevkov: 2825
Aktiv.: 12.35
Kraj: Lovrenc na P.

PrispevekObjavljeno: Tor Mar 11, 2008 5:49 pm    Naslov sporočila:   Odgovori s citatom

Proteus hvala za dobro razlago. Bom malo preštudiral stvar, predvsem kodiranje za brezžični prenos.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Elektronika Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran 1, 2  Naslednja
Stran 1 od 2

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 501 dni


Powered by phpBB © 2001, 2005 phpBB Group