-
1. Data: 2010-11-21 00:03:54
Temat: avr - bootloader czytajacy flash czyta co innego po zaprogramowaniu
Od: Sebastian Biały <h...@p...onet.pl>
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.
-
2. Data: 2010-11-21 12:16:40
Temat: Re: avr - bootloader czytajacy flash czyta co innego po zaprogramowaniu
Od: Michoo <m...@v...pl>
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
-
3. Data: 2010-11-21 13:18:31
Temat: Re: avr - bootloader czytajacy flash czyta co innego po zaprogramowaniu
Od: Sebastian Biały <h...@p...onet.pl>
On 2010-11-21 13:16, Michoo wrote:
> 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.
>
> 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.