Atmega328p úprava bootloaderu
Atmega328p úprava bootloaderu
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.
Re: Atmega328p úprava bootloaderu
? 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.
Re: Atmega328p úprava bootloaderu
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.
-
- Příspěvky: 385
- Registrován: 02 dub 2014, 15:30
Re: Atmega328p úprava bootloaderu
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
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
Re: Atmega328p úprava bootloaderu
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.
Zítra se k tomu snad dostanu, takže zkusím upravit i dle vašeho požadavku.
Re: Atmega328p úprava bootloaderu
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.).
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.
Re: Atmega328p úprava bootloaderu
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í.
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í.
Re: Atmega328p úprava bootloaderu
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.
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.
Re: Atmega328p úprava bootloaderu
... máte asi špatné Arduino, už před časem jsem tu napsal, že je zdržení "neměřitelné"a nemá smysl to řešit.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.
Re: Atmega328p úprava bootloaderu
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).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.