Witajcie,
Nadarzyła się okazja, by zainstalować Eclipsa Lunę i powrócić do starego problemu

W ramach przypomnienia:
W pamięci Flash trzymam 45 tablic typu:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Tablice ważą po 3KB każda.
w pamięci RAM mam zdefiniowany bufor:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Problem polega na kopiowaniu z pamięci Flash określonej tablicy do bufora w pamięci RAM.
O ile przy zadeklarowanych tylko około 20 tablicach, realizuję to w sposób następujący:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
o tyle, kiedy zadeklaruję więcej tablic, wyczerpuję zakres wskaźnika 16 bitowego.
Zgodnie z sugestią kolegi
Krauser, zamieniłem wszystkie wystąpienia funkcji
Kod:
memcpy_P
na
Kod:
memcpy_PF
w sposób następujący:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Niestety w tym przypadku dostaję warningi typu:
Kod:
./config.o:(.progmem.gcc_sw_table.load_bitmap+0x0): warning: internal error: out of range error
albo podczas wgrywania wsadu dostaję:
Kod:
avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
0x0c != 0x00
avrdude: verification error; content mismatch
i program się zawiesza.
(gdy zmniejszę liczbę tablic do 64KB jest ok)
Proszę o pomoc.
Pozdrawiam.