[AVR] Aktualiza firmware jak robicie?

Nov 01, 2005 17 Replies

Witam. To bêdzie pytanie do konstruktorów pracuj±cych na Atmelach, a zw³aszcza na AVR-ach. Jak robicie aktualizowanie firmware? Mam na uwadze urz±dzenia komunikuj±ce siê z komputerem (np. RS232 albo USB).



Pewnie jaki¶ oddzielny procek kontroluje i zarz±dza przeprogramowywaniem procka g³ównego (aktualizacj± firmware)?


AVR przeciez maja ISP, i mozna to wykorzystac do aktualizacji firmware'u.

Witam Ja zawsze jak używam procka z ISP to robie gniazdo serwisowe. Natomiast kiedy są potrzebne nóżki od programowania w układzie to można wstawić jakiego gala który troszkę po przełącza gdy pojawi się reset z programatora. Robiłem tak i działa to.

Pozdrawiam Blasiutek

Ja te¿ od niedawna ;-) Ale jak sprzêt zaczyna byæ "wy¿szej klasy" i czasem przeznaczony dla nieelektroników, wówczas konstruktor zaczyna my¶leæ nad nieskomplikowan±, programow± aktualizacj± firmware.

A ja nie dajê ¿adnych gali czy pali - ot po prostu wyprowadzam nó¿ki na z³±cze s³u¿±ce mi do programowania. Aby nie mieæ konfliktów z innymi peryferiami zazwyczaj nó¿ki programowania obs³uguj± wy¶wietlacz LCD lub wisz± niepod³±czone lub te¿ obs³uguj± inne uk³ady, których praca nie jest krytyczna podczas programowania.

A co do USB - trzeba by podej¿eæ jak to zrobili koledzy w odtwarzaczu Yampp. Jest bootloader, który ³aduje oprogramowanie do pamiêci, ale tutaj nale¿aloby podpytaæ kolegê Romualda Bia³ego jak to wymy¶li³ :)

Jacek "Plumpi"

Ale co tu kombinowac. Procki z serii ATTiny reprogramuje sie fajnie, bo tam nie ma oddzielnej sekcji RWW i NRWW i nie trzeba kombinowac robiac SPM. W ATMega trzeba specjalny bootloader pisac, zeby procek nie poszedl w maliny. Ale generalna zasada jest prosta - odbierasz dane, umieszczasz je w buforze (np. od razu w buforze strony) i robisz SPM, przyklady sa w stosownych notach Atmela.

A ja wla¶nie korzystam z bootloadera ktorego sam napisalem wzorujac sie na przykladzie producenta i wcale nie jest to takie skomplikowane a ma ogromne zalety. Ale do rzeczy zrobilem programator USB-I2C wykorzystujac stara kosc Nationala USBN9603 i ATMEGA8 do sterowania t± koscia. W pewnym momencie przyszlo mi do glowy ¿eby ca³e zarzadzanie kosæia USB umiescic w obszarze przeznaczonym na bootloader (rozmiar tego obszaru jest konfigurowalny przez FUSE BITS - BOOTSZ0 i BOOTSZ1 i maksymalnie to 2k kodu) wystarczajaco zeby obsluzyc USBN9603 i umiesci procedury do zapisu i dczytu pamieci. Stosujac takie rozwiazanie mogê w bardzo prosty sposob z konwertera USB-I2C zrobic konwerter USB-RS232 albo USB-SPI - a to ze stajemy sie elastyczni to naprawde bardzo cenna zaleta. Na poczatek radze kolegom popróbowac uruchomiæ bootloader na RS232 ktorego mozna sciagn±c ze stony ATMELA (AVR109 - Self-programming). Konczac mam tylko jedna prosbe, ¿eby nikomu nie przyszlo do glowy wywazac otwartych drzwi i konstruowac podobne urzadzenie. Na szczescie czasy sie zminiaja i technologia tez, dla przykladu kosc FTD2232 - mamy tu wszystko SPI,I2C,JTAG,RS232x2 w dodatku gotowe drivery API tylko korzystaæ, mozna naprawde fajny programator zrobic.... i nie tylko :), albo goraco polecam ARM'y Atmela s± w rewelacyjnych cenach !

Pozdrawiam Piotr !!

U¿ytkownik "Piotr" snipped-for-privacy@wp.pl napisa³ w wiadomo¶ci news:dk964i$1tge$ snipped-for-privacy@news.enterpol.pl...

Zabezpieczy³e¶ siê jako¶ przed wirusami ? P.G.

Tak, szczegolnie przed takimi jak Ty co zawsze maja cos madrego do powiedzenia.....

U¿ytkownik "Piotr" snipped-for-privacy@wp.pl napisa³ w wiadomo¶ci news:dkaf7d$293s$ snipped-for-privacy@news.enterpol.pl...

¯e niby za du¿o siê odzywam ? Bardzo powa¿nie wezmê to pod uwagê. P.G.

Ale w obszarze bootloadera musi byc tylko fragment zawierajacy instrukcje SPM i petle zapbiegajaca wyjsciu z obszaru bootloadera zanim skonczone jest programowanie strony, czyli w sumie jakies 3 instrukcje. Reszta bootloadera moze byc w dowolnym obszarze pamieci.

wbrew pozorom IMHO pytanei nie bylo bezsensowne, moze troche niejednoznacznei ujete

jesli dodamy mozliwosc ladowania nowego firmware przez port komunikacyjny i nie zabezpieczymy go przed przypadkowycm uruchomieniem procedud ladujacych firmware, moze okazac sie ze przypadkowa kombinacja bajtow bedzie w stanei uruchomic wlasnei taka procedure i zamazac program.

Zbyt ironicznie odebralem pytanie i za szorstki tekst z gory przepraszam !

U¿ytkownik "Greg(G.Kasprowicz)" snipped-for-privacy@gmail.com napisa³ w wiadomo¶ci news:dkadrj$fdv$ snipped-for-privacy@inews.gazeta.pl...

Ja my¶la³em o z³o¶liwym dzia³aniu, którego zamierzonym skutkiem by³aby ¶mieræ (lub przejêcie) wszystkich urz±dzeñ danego typu na ¶wiecie. Nam zabezpieczenia zajê³y gro czasu i flasha, ale jak dla kogo¶ jest to !(co¶ m±drego) to jego problem.

P.G.

U¿ytkownik "Piotr" snipped-for-privacy@wp.pl napisa³ w wiadomo¶ci news:dkam0m$2b48$ snipped-for-privacy@news.enterpol.pl...

No to ja cofam ten sêk: "to jego problem" który w miêdzyczasie wypisa³em. Ale nie chwytam (serio !), jak w tym prostym i wed³ug mnie jak najbardziej rzeczowym pytaniu (podpowiedzi) mo¿na znale¼æ ironiê. P.G.

W³a¶nie chcem zabraæ siê za bootloadera i jeszcze jest to dla mnie lekka abstrakcja. Chcê ³adowaæ nowy firmware przez stronê www która jest ju¿ w mikrokontrolerze. Poniewa¿ do pobrania nowego firmweru muszê u¿yæ tych samych funkcji które obs³uguj± procka rtl8019as, po³±czenia tcp/ip itd., a w nowym firmwarze s± nowe wersje tych funkcji czy da siê je podmieniæ w trakcie ¶ci±gania firmware do atmegi ?

Dziêki za pomoc.

Aha i jeszcze jedno jak znale¼æ numer strony na której jest dana funkcja, albo dana, ¿eby nie podmieniaæ wszystkiego a tylko to co mi potrzebne.

Pawe³

No to proponuje wydzielic podstawowe procedury obslugi TCP do osobnego obszaru i odwolywac sie do nich za pomoca tablicy wektorow. Wtedy update robisz tak, ze nowa wersje tych procedur ladujesz najpierw do SRAM, potem odcinasz sie od swiata przepisujac kod ze SRAM do FLASH i na koncu updatujesz wektory. W efekcie dla reszty programu wyglada to tak jakby nic sie nie zmienilo.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required