RTV forum PL | NewsGroups PL

Bootloader AVR: dlaczego pgm_read_byte zwraca inne wartości po zapisie flash?

avr - bootloader czytajacy flash czyta co innego po zaprogra

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Bootloader AVR: dlaczego pgm_read_byte zwraca inne wartości po zapisie flash?

Sebastian Biały
Guest

Sun Nov 21, 2010 1:03 am   



Witam.

Piszę sobie specyficzny bootloader.

Bootloader potrafi policzyć sume kontrolną flash w podanym zakresie.

Jesli policzę sume kontrolną *przed* zapisaniem jakiejkolwiek strony za
pomoca pgm_read_byte - wynosi ona X.

Jesli teraz zaprogramuje dowolną stronę flash w bootloaderze
(boot_page_erase + boot_page_fill + boot_page_write ) i ponownie policzę
sumę kontrolną wynosi ona Y.

Jesli wyłacze zasilanie i włacze ponownie - wynosi X.

X jest poprawnie, Y nie.

Czy pgm_read_byte ma jakis problem po uruchmieniu procedury zapisu
pamięci flash?

Na razie nie analizowalem precyzyjnie problemu, ale jestem na 100% że
nie mam błędu w programie. Pytam, może ktoś wie od razu gdzie jest
przyczyna innego dzialania pgm_read_byte.

Pamięc programuje się poprawnie z poziomu bootoadera.

Michoo
Guest

Sun Nov 21, 2010 1:16 pm   



A próbowałeś odczytać zawartość pamięci i policzyć sumy kontrolne "na
zewnątrz", zrobić diff?

Można by się wtedy zorientować, czy to błędne dane są czytane, czy np w
obliczeniach jest jakiś błąd z powodu zmodyfikowanych
rejestrów/zmiennych statycznych?

--
Pozdrawiam
Michoo

Sebastian Biały
Guest

Sun Nov 21, 2010 2:18 pm   



On 2010-11-21 13:16, Michoo wrote:
Quote:
A próbowałeś odczytać zawartość pamięci i policzyć sumy kontrolne "na
zewnątrz", zrobić diff?

Owszem, jeden z "sektorów" wykazuje zawartość samych 0xff. Ostatnio
zapisywany.

Quote:

Można by się wtedy zorientować, czy to błędne dane są czytane, czy np w
obliczeniach jest jakiś błąd z powodu zmodyfikowanych
rejestrów/zmiennych statycznych?

Znalazłem problem. Po wykonaniu zapisu do sektora Flash nie wolno go
czytać od razu. Należy wczesnie wywołać boot_rww_enable(). Zmyliło mnie
to ze ta funkcja jest zawsze opisywana w kontekście skoku do wgranego
programu a tymczasem ona zezwala na odczyt flash. Dokumentacja jest
jednak w tym miejscu mocno zawiła i juz nie mam ochoty na analizę,
dodanie boot_rww_enable przed liczeniem sumy kontrolnej pomaga.

elektroda NewsGroups Forum Index - Elektronika Polska - Bootloader AVR: dlaczego pgm_read_byte zwraca inne wartości po zapisie flash?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map