Atmega328p úprava bootloaderu

Dan
Příspěvky: 2
Registrován: 21 čer 2016, 18:01

Atmega328p úprava bootloaderu

Příspěvek od Dan »

Rád bych se zeptal někoho zkušenějšího. Hledám modifikaci (nebo někoho, kdo mi poradí, jak ho upravit a přeložit) bootloaderu takovou, aby se bootloader nevykonával (nesnažil se komunikovat přes UART a spustil bez prodlevy rovnou program), pokud nějaký konkrétní vstup atmegy (předem zvolený před překladem bootloaderu) bude v log.0, čili abych si bootloader mohl podle potřeby vypnout nějakou propojkou na desce PLS. Jde o to, že v mém zapojení s atmegou mohu komunikovat pouze skrze UART a po odladění programu je prodleva po zapnutí MCU již nežádoucí (při případné potřebě upravit program později bych si bootloader zase na dobu ladění "zapnul"). Poradíte mi? Používám klasický Arduino bootloader. Děkuji.
pgerla
Příspěvky: 400
Registrován: 11 dub 2013, 00:17

Re: Atmega328p úprava bootloaderu

Příspěvek od pgerla »

? Jak dlouhá je podle Vás prodleva a čemu vadí? Na první pohled Váš dotaz zní logicky na druhý je to kravina. Vypneteli bootloader nenahrajete program přes UART. Takže zkuste jiný způsob a to nahrávat přes ISP a Arduino IDE nahraďte psaním v Cečku.
Dan
Příspěvky: 2
Registrován: 21 čer 2016, 18:01

Re: Atmega328p úprava bootloaderu

Příspěvek od Dan »

Zda se bootloader provede nebo ne (přesněji: on se provede pokaždé, ale pokud bude "vypnutý", tak se nebude snažit přijmout data přes UART a hned se spustí hlavní program) bych řídil jumperem na nějakém vstupu atmegy. Takže mi nejde o úplné zrušení bootloaderu, ten odskok na něj po zapnutí MCU tam samozřejmě musí zůstat. ;-) Mi prostě vadí prodleva po zapnutí - chci okamžitě z displeje číst data. Zapnout, přečíst, vypnout - a né čekat dlouhé sekundy, než se program probere k životu. Radit mi ISP můj problém neřeší - desky PLS prostě existují takové jaké jsou. Jo a Arduino IDE mi prozatím stačilo na všechny moje projekty. Kdybych uměl dokonale Céčko (a hlavně anglicky kvůli zahraničním fórům), neptal bych se tady, ale rozuměl naprogramování bootloaderu a upravil si ho sám. :-)
Vladimir66
Příspěvky: 385
Registrován: 02 dub 2014, 15:30

Re: Atmega328p úprava bootloaderu

Příspěvek od Vladimir66 »

Nemam zkusenost v tomto smeru.
zkusil jsem vygooglit "arduino skip bootloader" a tento link vypada nadejne.
a hlavne, pokud to vyresis, napis o tom.
Vsichni chteji rady ale uz se dal nepodeli o uspesne vyreseni problemu s druhymi :(
drzim palce. -V66

https://learn.adafruit.com/arduino-tips ... bootloader
MartinL
Příspěvky: 252
Registrován: 24 úno 2013, 14:13
Kontaktovat uživatele:

Re: Atmega328p úprava bootloaderu

Příspěvek od MartinL »

Pravě se chystám také Bootloader upravit v podobném duchu. Nemám vyveden reset, takže naopak potřebuju, aby při aktivaci nějakého pinu v bootloaderu zůstal (nejen čekal několik sekund).
Zítra se k tomu snad dostanu, takže zkusím upravit i dle vašeho požadavku.
DavidO
Příspěvky: 1133
Registrován: 01 kvě 2013, 21:27

Re: Atmega328p úprava bootloaderu

Příspěvek od DavidO »

Nenech se zmást blbou odpovědí těch, co jen brblaj bez hlubšího porozumění. Původní dotaz byl správný a požadovaná funkčnost je možná a rozumná, odpověď na něj ale poněkud mimo mísu.
Arduino IDE není potřeba zahazovat, pokud nechceš; je potřeba upravit ten bootloader. Podle toho, které konkrétní "Arduino" používáš a co v něm je za kontrolér, to může být krapet jinak, ale co jsem se teď podíval do jednoho z Aruinových bootloaderů, tak nejdřív inicializuje UART a pak čeká, jestli něco bude chodit a když se po nějaké době nedočká, tak spustí program. Jestli tahle prodleva fakt vadí, tak to je potřeba trochu překopat, například aby se to chovalo zrovna tak, jak píšeš.

Já používám už dlouho bootloader pro ATmega8 a 128 podle Atmel application note AVR109, který se myslím chová jak potřebuješ: na začátku (=po resetu) zkontroluje, jestli je přizeměný určený pin, pokud ano, bude čekat klidně do skonání světa na komunikaci po UART a uloží přišlý program, pokud ne, skáče na ten uložený program. To by se mohlo hodit i Martinovi ;)
Tenhle bootloader jsem začal používat dávno před rozšířením Arduina, ale je to kompatibilní. Klidně poskytnu, akorát teda je pro ATmega8 a ATmega128 a je dost velká šance, že tvůj je jiný (např. 168, 328) a že by to bylo potřeba zkontrolovat, že to je OK (na což teď omlouvám se ale nemám čas, mohl bych až po 18.7.).
Nikoho plánovaně neurážím. Jestli se Vám nelíbí co píšu, tak to nečtěte. A ostatně, třeba za to nemůžu - Researchers believe that dark humor can be a significant symptom of dementia.
pgerla
Příspěvky: 400
Registrován: 11 dub 2013, 00:17

Re: Atmega328p úprava bootloaderu

Příspěvek od pgerla »

Je fajn jak všichni rozumí a nikdo nemá čas.
Mám jak Atmegu328 tak Atmegu2560 i Atiny45. Nezaznamenal jsem zdržující čekání na bootloader. Pro hlubší myslitele i Arduino IDE má volbu nahrát přes ISP. Každopádně úprava bootloaderu pro někoho kdo není schopen vteřinu počkat, se mi nevyplatí.
MartinL
Příspěvky: 252
Registrován: 24 úno 2013, 14:13
Kontaktovat uživatele:

Re: Atmega328p úprava bootloaderu

Příspěvek od MartinL »

To Dan: Tak dnes jsem si hrál s tím bootloaderem. Bohužel je to v tom arduinu pěkně spatlané, Vzali nějaký bootloader, ten upravili, ale dokumentaci nechali. Takže polovina věci z původního bootloaderu nefunguje. Ale tvůj požadavek se mi podařilo vyřešit.
Ovšem měl bych ještě jeden dotaz, resp. poznámku. Ten bootloader, se kterým si hraju, očividně na nic nečeká, ale po připojení k USB (Arduino deska) se to AVR (několikrát) zresetuje - problikájí led (asi inicializace toho USB - uart převodníku), a to tu chvilku trvá. Pokud připojím jen napájení, tak okamžitě startuje aplikační program.
Pokud je tedy zájem, stačí napsat frekvenci krystalu, na který pin je připojena status led a na kterém je ta aktivace bootloaderu. Přeložím a pošlu. Nebo pošlu zdroják, ale je nutné v něm upravit tu definici pinů a pak přeložit.
Naposledy upravil(a) MartinL dne 30 čer 2016, 21:30, celkem upraveno 4 x.
pgerla
Příspěvky: 400
Registrován: 11 dub 2013, 00:17

Re: Atmega328p úprava bootloaderu

Příspěvek od pgerla »

Ten bootloader, se kterým si hraju, očividně na nic nečeká ... Pokud připojím jen napájení, tak okamžitě startuje aplikační program.
... máte asi špatné Arduino, už před časem jsem tu napsal, že je zdržení "neměřitelné"a nemá smysl to řešit.
MartinL
Příspěvky: 252
Registrován: 24 úno 2013, 14:13
Kontaktovat uživatele:

Re: Atmega328p úprava bootloaderu

Příspěvek od MartinL »

pgerla píše:... máte asi špatné Arduino, už před časem jsem tu napsal, že je zdržení "neměřitelné"a nemá smysl to řešit.
Nechci rýpat, ale ta odpověď nebyla určena Vám a Arduino mám "dobré". Jinak "standardní" bootloader opravdu čeká po resetu jistou dobu na příchod znaku (pokud to chcete přesně, tak jsem to spočítal na 20/16 sekundy - tedy pokud si dobře pamatuju dobu trvání jednotlivých instrukcí AVR). Což je doba, která opravdu někdy při startu mikrokontroleru může vadit. Proto jsem Danovi nabídl pomoc (oproti Vašim zbytečným plkům).
Odpovědět