RTV forum PL | NewsGroups PL

Zapis i odczyt z pamięci FLASH w bootloaderze WinAVR: różnice w wartościach?

WinAVR, boot_page_write, pgm_read_word_far

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Zapis i odczyt z pamięci FLASH w bootloaderze WinAVR: różnice w wartościach?

Guest

Thu Oct 11, 2007 1:41 pm   



Oto kawałek kodu umieszczonego w sekcji bootloadera (od 0x01e000):
...
#define BOOT_VER_ADDR 0x01dd00 //adres , gdzie zapisuje
uint32_t pom32;
uint16_t pom;
...
pom=0x1234;
boot_spm_busy_wait();
pom32=BOOT_VER_ADDR;
boot_page_erase(pom32);
boot_spm_busy_wait();
boot_page_fill(0,pom); //zapis liczby do bufora
boot_page_write(pom32); // i zapis strony
boot_spm_busy_wait();
pom=pgm_read_word_far((uint32_t)pom32);

..i zmienna pom jest równa 0xffff zamiast 0x1234, innymi słowy zapis pamięci
FLASH i odczytanie z niej nie daja tego samego rezultatu. Po odczytaniu
pamięci FLASH pod adresem BOOT_VER_ADDR jest poprawna wartość: 0x1234. Co jest
nie tak?
Używam WinAVR z 20060421

Pozdrowienia.

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

Adam Dybkowski
Guest

Thu Oct 11, 2007 10:40 pm   



lufcadio.WYTNIJ@gazeta.pl pisze:

Quote:
pom=0x1234;
boot_spm_busy_wait();
pom32=BOOT_VER_ADDR;

Polecam dodanie garści spacji bo ciężko się czyta tak ściśnięty kod. To
nie IOCCC!
http://www.ioccc.org/2004/anonymous.c
Z drugiej strony, łatwo też przesadzić w drugą stronę:
http://www.ioccc.org/2004/sds.c

--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/

Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.

Grzegorz Kurczyk
Guest

Fri Oct 12, 2007 7:08 am   



Użytkownik Adam Dybkowski napisał:
Quote:
lufcadio.WYTNIJ@gazeta.pl pisze:

pom=0x1234;
boot_spm_busy_wait();
pom32=BOOT_VER_ADDR;

Polecam dodanie garści spacji bo ciężko się czyta tak ściśnięty kod. To
nie IOCCC!

Oj Kolego Adamie bez przesady Wink Przecież to tylko kilka linii na
krzyż. Miałem podobny problem z bootloaderem na ATmega128. Pisałem
własne funkcje do obsługi flasza, bo te w WinAVR miały błąd (a w każdym
razie zachowywały się dziwnie. O ile się nie mylę to boot_page_fill
robiło mi jakieś psikusy. Postaram sie dzisiaj sprawdzić i dam znać.

Pozdrawiam
Grzegorz

Guest

Fri Oct 12, 2007 8:41 am   



Ja właśnie używam ATmega128.

Pozdrowienia, Jack

Grzegorz Kurczyk <grzegorz.usun.to@control.slupsk.pl> napisał(a):
Quote:
Oj Kolego Adamie bez przesady Wink Przecież to tylko kilka linii na
krzyż. Miałem podobny problem z bootloaderem na ATmega128. Pisałem
własne funkcje do obsługi flasza, bo te w WinAVR miały błąd (a w każdym
razie zachowywały się dziwnie. O ile się nie mylę to boot_page_fill
robiło mi jakieś psikusy. Postaram sie dzisiaj sprawdzić i dam znać.

Pozdrawiam
Grzegorz

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

Guest

Fri Oct 12, 2007 10:41 am   



Problem się rozwiązał, należało na koniec dodać:
boot_rww_enable();

Pozdrowienia.

<lufcadio.WYTNIJ@gazeta.pl> napisał(a):

Quote:
Oto kawałek kodu umieszczonego w sekcji bootloadera (od 0x01e000):
...
#define BOOT_VER_ADDR 0x01dd00 //adres , gdzie zapisuje
uint32_t pom32;
uint16_t pom;
...
pom=0x1234;
boot_spm_busy_wait();
pom32=BOOT_VER_ADDR;
boot_page_erase(pom32);
boot_spm_busy_wait();
boot_page_fill(0,pom); //zapis liczby do bufora
boot_page_write(pom32); // i zapis strony
boot_spm_busy_wait();
pom=pgm_read_word_far((uint32_t)pom32);

..i zmienna pom jest równa 0xffff zamiast 0x1234, innymi słowy zapis pamięci
FLASH i odczytanie z niej nie daja tego samego rezultatu. Po odczytaniu
pamięci FLASH pod adresem BOOT_VER_ADDR jest poprawna wartość: 0x1234. Co jest
nie tak?
Używam WinAVR z 20060421

Pozdrowienia.



--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

JS
Guest

Fri Oct 12, 2007 11:41 pm   



W artykule <fem5b2$ks9$1@atlantis.news.tpi.pl> Adam Dybkowski napisal(a):

Quote:
lufcadio.WYTNIJ@gazeta.pl pisze:

pom=0x1234;
boot_spm_busy_wait();
pom32=BOOT_VER_ADDR;

Polecam dodanie garści spacji bo ciężko się czyta tak ściśnięty kod. To
nie IOCCC!

W przypadkach niepatologicznych pomaga indent.

Jest w WINAVR; dokumentacja np. tutaj:
http://www.xs4all.nl/~carlo17/indent/indent.html

Przykładowe formatowanie (nie ukrywam, że dobrane zgodnie z updobaniami):
indent -kr -i3 -bl -bli0 -npcs -nsaf -nsai -nsaw -prs -nce -nut -sob

Quote:
http://www.ioccc.org/2004/anonymous.c
Z drugiej strony, łatwo też przesadzić w drugą stronę:
http://www.ioccc.org/2004/sds.c

Groza Wink

--
Pozdrawiam!
Jarosław Szynal

Adam Dybkowski
Guest

Sat Oct 13, 2007 12:36 am   



JS pisze:

Quote:
W przypadkach niepatologicznych pomaga indent.

Jest w WINAVR; dokumentacja np. tutaj:
http://www.xs4all.nl/~carlo17/indent/indent.html

Przykładowe formatowanie (nie ukrywam, że dobrane zgodnie z updobaniami):
indent -kr -i3 -bl -bli0 -npcs -nsaf -nsai -nsaw -prs -nce -nut -sob

O jak brzydko przy takich ustawieniach dodaje spacje w prototypach
funkcji, ble! Oto kawałki testu na moim kodzie:
void delayus( uint16_t t )
Zdecydowanie wolę taką formę:
void delayus (uint16_t t)

Podobnie zresztą traktuje nawiasy w innych miejscach:
if( t < 50 )
A ja piszę raczej tak:
if (t < 50)

Największą przesadą tych ustawień jest jednak wg mnie dodawanie spacji w
pustej liście argumentów wywołania funkcji oraz wsadzanie spacji
robiących wcięcia na początku linii:
idlenow( );

Idę dopracować zestaw opcji dla indenta aby "lubił" mój styl pisania. Smile
W każdym razie fajne narzędzie, przyda się.

--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/

Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.

JS
Guest

Sat Oct 13, 2007 8:41 pm   



W artykule <fep0nq$rgm$1@nemesis.news.tpi.pl> Adam Dybkowski napisal(a):

Quote:
Przykładowe formatowanie (nie ukrywam, że dobrane zgodnie z updobaniami):
indent -kr -i3 -bl -bli0 -npcs -nsaf -nsai -nsaw -prs -nce -nut -sob

Największą przesadą tych ustawień jest jednak wg mnie dodawanie spacji w
pustej liście argumentów wywołania funkcji oraz wsadzanie spacji
robiących wcięcia na początku linii:
idlenow( );
^^

To faktycznie przykre i chyba nie ma stosownej opcji na wyłączenie
spacji akurat w tym kontekście Sad

--
Pozdrawiam!
Jarosław Szynal

elektroda NewsGroups Forum Index - Elektronika Polska - Zapis i odczyt z pamięci FLASH w bootloaderze WinAVR: różnice w wartościach?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map