RTV forum PL | NewsGroups PL

Arduino Due - brak automatycznego kasowania

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Arduino Due - brak automatycznego kasowania

Atlantis
Guest

Sat Dec 15, 2018 6:38 pm   



Kwestia o którą chcę zapytać nie jest żadnym poważnym problemem, pytam
bardziej z ciekawości. Mianowicie wpadło w moje ręce Arduino Due, będące
częścią pewnego projektu. Podczas eksperymentów podjąłem próbę wgrania
zaktualizowanego kodu, podpinając go przez "programming port" (konwerter
USB-UART zrobiony na atmega16u2, tak jak w innych płytkach Arduino).

Okazało się jednak, że przy próbie wgrania kodu wywala się błąd o
niemożliwości znalezienia płytki na tym interfejsie. Z ciekawości
spróbowałem wgrać przez natywny port USB - tutaj zadziałało bez problemu.

Sprawa jednak mnie zainteresowała i zacząłem eksperymentować. Szybko
odkryłem przyczynę - okazało się, że przed wgraniem softu konieczne jest
ręczne skasowane flasha przyciskiem ERASE - po takiej operacji płytka
przechodzi w tryb bootloadera i flashowanie przez UART przebiega normalnie.

Zdziwiło mnie to, bo inaczej zapamiętałem zachowanie tej płytki. Wyjąłem
więc z pudełka swoje własne Due i zrobiłem test. Tym razem wszystko
przebiegało normalnie - nie trzeba było wciskać przycisku, plytka
flashowała się automatyczne.

I teraz mnie zastanawia - tak z czystej ciekawości - możliwa przyczyna.
Inna rewizja płytki? Różnica pomiędzy oryginałem i możliwą podróbką?
Inny soft w konwerterze na a16u2? A może jakieś dziwne uszkodzenie,
które jakimś cudem w ogóle nie przeszkadza w korzystaniu z konwertera
UART-USB? Bo po wgraniu programu zaczyna on działać normalnie.

Guest

Sat Dec 15, 2018 11:27 pm   



Atlantis <marekw1986NOSPAM_at_wp.pl> wrote:
Quote:
Kwestia o kt?r? chc? zapyta? nie jest ?adnym powa?nym problemem, pytam
bardziej z ciekawo?ci. Mianowicie wpad?o w moje r?ce Arduino Due, b?d?ce
cz??ci? pewnego projektu. Podczas eksperyment?w podj??em pr?b? wgrania
zaktualizowanego kodu, podpinaj?c go przez "programming port" (konwerter
USB-UART zrobiony na atmega16u2, tak jak w innych p?ytkach Arduino).

Okaza?o si? jednak, ?e przy pr?bie wgrania kodu wywala si? b??d o
niemo?liwo?ci znalezienia p?ytki na tym interfejsie. Z ciekawo?ci
spr?bowa?em wgra? przez natywny port USB - tutaj zadzia?a?o bez problemu.

Sprawa jednak mnie zainteresowa?a i zacz??em eksperymentowa?. Szybko
odkry?em przyczyn? - okaza?o si?, ?e przed wgraniem softu konieczne jest
r?czne skasowane flasha przyciskiem ERASE - po takiej operacji p?ytka
przechodzi w tryb bootloadera i flashowanie przez UART przebiega normalnie.

Zdziwi?o mnie to, bo inaczej zapami?ta?em zachowanie tej p?ytki. Wyj??em
wi?c z pude?ka swoje w?asne Due i zrobi?em test. Tym razem wszystko
przebiega?o normalnie - nie trzeba by?o wciska? przycisku, plytka
flashowa?a si? automatyczne.

I teraz mnie zastanawia - tak z czystej ciekawo?ci - mo?liwa przyczyna.
Inna rewizja p?ytki? R??nica pomi?dzy orygina?em i mo?liw? podr?bk??
Inny soft w konwerterze na a16u2? A mo?e jakie? dziwne uszkodzenie,
kt?re jakim? cudem w og?le nie przeszkadza w korzystaniu z konwertera
UART-USB? Bo po wgraniu programu zaczyna on dzia?a? normalnie.

Kwestia bootloadera. a16u2 po prostu wystawia port, bootlader
musi rozpoznac czy to programowanie czy komunikacja przez port.
Wieksze MCU maja wlasny bootlader ktory dziala tylko w specjalnych
okolicznosciach (tak by wykluczyc konflikt z protokolem uzywanym
przez program). Typowe rozwiazania to specjalny pin uaktywniajacy
programowanie. Popularne tez jest uruchomianie bootloadera gdy
procek jest pusty (po ERASE). Arduino ma wlasny bootloader
ktory z punktu widzenia procka jest czescia programu, ale
srodowisko Arduino tak organizuje zapis zeby raz zapisany
bootloader pozostal na stale we flashu. Jak rozumiem w Due
mozna sie obyc bez bootloadera z Arduino i pewnie dostales
takie Arduino bez bootloadera Arduino (albo z bootloaderm
okrojonym do USB). Programujac przez UART programowales
bootloaderm procka (a nie bootloaderm Arduino ktory czeka
na program po kazdym resecie). Jak wykasujesz caly flash
(czyli bootloader Arduino) w swoim Due to tez bedzie sie
tak zachowywac.

--
Waldek Hebisch

Grzegorz Niemirowski
Guest

Sat Dec 15, 2018 11:49 pm   



antispam_at_math.uni.wroc.pl <antispam_at_math.uni.wroc.pl> napisał(a):
Quote:
Kwestia bootloadera. a16u2 po prostu wystawia port,

Wystawia również RESET oraz ERASE. Dlatego normalnie nie trzeba nic
naciskać.

Quote:
bootlader
musi rozpoznac czy to programowanie czy komunikacja przez port.

Bootloader albo jest aktywny albo nie jest, niczego nie rozpoznaje.

Quote:
Wieksze MCU maja wlasny bootlader ktory dziala tylko w specjalnych
okolicznosciach (tak by wykluczyc konflikt z protokolem uzywanym
przez program). Typowe rozwiazania to specjalny pin uaktywniajacy
programowanie. Popularne tez jest uruchomianie bootloadera gdy
procek jest pusty (po ERASE).

Tak właśnie jest tutaj. Jest atmelowski bootloader w ROM uaktywniający się
po wyczyszczeniu pamięci.

Quote:
Arduino ma wlasny bootloader
ktory z punktu widzenia procka jest czescia programu, ale
srodowisko Arduino tak organizuje zapis zeby raz zapisany
bootloader pozostal na stale we flashu. Jak rozumiem w Due
mozna sie obyc bez bootloadera z Arduino i pewnie dostales
takie Arduino bez bootloadera Arduino (albo z bootloaderm
okrojonym do USB).

W Due nie stosuje się bootloadera Arduino, jest zbędny.

Quote:
.Jak wykasujesz caly flash
(czyli bootloader Arduino) w swoim Due to tez bedzie sie
tak zachowywac.

Nie ma bootloadera Arduino we Flashu.

--
Grzegorz Niemirowski
https://www.grzegorz.net/

Grzegorz Niemirowski
Guest

Sat Dec 15, 2018 11:50 pm   



Atlantis <marekw1986NOSPAM_at_wp.pl> napisał(a):
Quote:
I teraz mnie zastanawia - tak z czystej ciekawości - możliwa przyczyna.
Inna rewizja płytki? Różnica pomiędzy oryginałem i możliwą podróbką?
Inny soft w konwerterze na a16u2?

Tak bym obstawiał. Soft niewysterowujący linii ERASE. Ewentualnie brak
podłączenia tej linii do Atmegi, jedynie do przycisku.

--
Grzegorz Niemirowski
https://www.grzegorz.net/

Atlantis
Guest

Mon Dec 17, 2018 12:51 pm   



On 15.12.2018 23:49, Grzegorz Niemirowski wrote:

Quote:
Tak właśnie jest tutaj. Jest atmelowski bootloader w ROM uaktywniający
się po wyczyszczeniu pamięci.

Hmm... To jest ten sam bootloader, który był wykorzystywany w
mikrokontrolerach AT91SAM7 od Atmela (SAM-BA)?
Rozumiem, że istnieje jakieś konsolowe narzędzie do flashowania, z
którego korzysta Arduino i które mógłbym sobie podpiąć pod Makefile?
Wiesz może co to za narzędzie i czy jest też kompatybilne ze starą
rodziną SAM7?

Grzegorz Niemirowski
Guest

Mon Dec 17, 2018 2:27 pm   



Atlantis <marekw1986NOSPAM_at_wp.pl> napisał(a):
Quote:
Hmm... To jest ten sam bootloader, który był wykorzystywany w
mikrokontrolerach AT91SAM7 od Atmela (SAM-BA)?

Tak, ten sam.

Quote:
Rozumiem, że istnieje jakieś konsolowe narzędzie do flashowania, z
którego korzysta Arduino i które mógłbym sobie podpiąć pod Makefile?
Wiesz może co to za narzędzie i czy jest też kompatybilne ze starą
rodziną SAM7?

To narzędzie to właśnie SAM-BA. Arduino używa AVRDUDE do AVRów, a do ARMów
Atmela właśnie SAM-BA. Nie wiem czy jest kompatybilne ze starą rodziną ale
chyba tak. W każdym razie jeśli masz Arduino IDE to masz na dysku też to
narzędzie.

--
Grzegorz Niemirowski
https://www.grzegorz.net/

Grzegorz Niemirowski
Guest

Mon Dec 17, 2018 6:14 pm   



antispam_at_math.uni.wroc.pl <antispam_at_math.uni.wroc.pl> napisał(a):
Quote:
W kazdym razie musi podjac decyzje.

Jaką decyzję? Ma się po prostu nie zawiesić jak dostanie coś niezgodnego ze
swoim protokołem.

--
Grzegorz Niemirowski
https://www.grzegorz.net/

Guest

Mon Dec 17, 2018 7:08 pm   



Grzegorz Niemirowski <gnthexfiles_at_poczta.onet.pl> wrote:
Quote:
antispam_at_math.uni.wroc.pl <antispam_at_math.uni.wroc.pl> napisa?(a):
Kwestia bootloadera. a16u2 po prostu wystawia port,

Wystawia r?wnie? RESET oraz ERASE. Dlatego normalnie nie trzeba nic
naciska?.

bootlader
musi rozpoznac czy to programowanie czy komunikacja przez port.

Bootloader albo jest aktywny albo nie jest, niczego nie rozpoznaje.

W Due faktycznie. Ja pisalem ogolnie, w Uno i paru innych wariantach
bootloader robi wiecej. Czy chcesz to nazwac "rozpoznaje" to twoja
sprawa. W kazdym razie musi podjac decyzje.

Quote:
Wieksze MCU maja wlasny bootlader ktory dziala tylko w specjalnych
okolicznosciach (tak by wykluczyc konflikt z protokolem uzywanym
przez program). Typowe rozwiazania to specjalny pin uaktywniajacy
programowanie. Popularne tez jest uruchomianie bootloadera gdy
procek jest pusty (po ERASE).

Tak w?a?nie jest tutaj. Jest atmelowski bootloader w ROM uaktywniaj?cy si?
po wyczyszczeniu pami?ci.

Arduino ma wlasny bootloader
ktory z punktu widzenia procka jest czescia programu, ale
srodowisko Arduino tak organizuje zapis zeby raz zapisany
bootloader pozostal na stale we flashu. Jak rozumiem w Due
mozna sie obyc bez bootloadera z Arduino i pewnie dostales
takie Arduino bez bootloadera Arduino (albo z bootloaderm
okrojonym do USB).

W Due nie stosuje si? bootloadera Arduino, jest zb?dny.

Racja. Mnie zmylilo ze sa (nieoficjalne) warianty gdzie bootloader
jest "bardziej zbedny" niz w Due ale go wrzucaja...

--
Waldek Hebisch

Grzegorz Niemirowski
Guest

Mon Dec 17, 2018 7:13 pm   



antispam_at_math.uni.wroc.pl <antispam_at_math.uni.wroc.pl> napisał(a):
Quote:
No wlasnie: musi stwierdzic czy to co dostaje jest zgodne z protokolem.
W Uno zgodnosc obejmuje timeout, a jak nie ma nowego programu to
uruchamia stary.

Ten bootloader jest uruchamiany po wykasowaniu programu. Timeout nie ma
sensu bo i tak starego programu już dawno nie ma.

--
Grzegorz Niemirowski
https://www.grzegorz.net/

Guest

Mon Dec 17, 2018 8:07 pm   



Grzegorz Niemirowski <gnthexfiles_at_poczta.onet.pl> wrote:
Quote:
antispam_at_math.uni.wroc.pl <antispam_at_math.uni.wroc.pl> napisa?(a):
W kazdym razie musi podjac decyzje.

Jak? decyzj?? Ma si? po prostu nie zawiesi? jak dostanie co? niezgodnego ze
swoim protoko?em.

No wlasnie: musi stwierdzic czy to co dostaje jest zgodne z protokolem.
W Uno zgodnosc obejmuje timeout, a jak nie ma nowego programu to
uruchamia stary.

--
Waldek Hebisch

Guest

Mon Dec 17, 2018 11:15 pm   



Grzegorz Niemirowski <gnthexfiles_at_poczta.onet.pl> wrote:
Quote:
antispam_at_math.uni.wroc.pl <antispam_at_math.uni.wroc.pl> napisa?(a):
No wlasnie: musi stwierdzic czy to co dostaje jest zgodne z protokolem.
W Uno zgodnosc obejmuje timeout, a jak nie ma nowego programu to
uruchamia stary.

Ten bootloader jest uruchamiany po wykasowaniu programu. Timeout nie ma
sensu bo i tak starego programu ju? dawno nie ma.

Tu piszesz o Due. W Uno jest bootloader Arduino ktory dziala jak
pisze. W innych prockach jest BOOT pin (jedna lun wiecej): bootloader
uruchamia sie niezaleznie od kasowania procka (pomijam to kwestie bitow
w stylu "code protection"), trzeba po prostu dac odpowiedni poziom na
BOOT pin.

--
Waldek Hebisch

elektroda NewsGroups Forum Index - Elektronika Polska - Arduino Due - brak automatycznego kasowania

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map