-
Data: 2009-01-27 15:36:45
Temat: Re: Czy WinAVR radzi sobie z kodem dla ATMega128?
Od: "T.M.F." <t...@n...mp.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Dariusz Zolna pisze:
> Adam Dybkowski pisze:
>> No to pozostaje korzystać z pgm_read_byte_far() i podobnych. Uważaj
>> też na funkcje typu strcpy_P, printf_P, memcpy_P itd - nie zadziałają
>> bo trzeba im podać wskaźniki 16- a nie 32-bitowe. Podobnie bez
>> dodatkowego "obejścia" nie zadziałają wskaźniki na funkcje, używane
>> np. w tablicach skoków. Ot taka "zaleta" dużej pamięci w procku bądź
>> co bądź 8/16-bitowym. Przerabiałem to ostatnio w zdwojonej formie
>> walcząc z jeszcze większym ATmega2561.
>
> Tak, już napisałem swoje wersje tych wszystkich funkcji (przynajmniej
> tych, które używam). Szkoda tylko, że kompilator nie przypomina o tym.
Nie ma jak. Zobacz jak wyglada definicja tych funkcji. Jedyna mozliwosc
to wywalanie ostrzezenia przez sama biblioteke przy wywolywaniu ich na
procesorach z >64kB FLASH. Co zreszta ma maly sens, bo gcc domyslnie
umieszcza stale na poczatku programu, czyli dopoki one nie przekrocza
64kB korzystanie z wersji near tych funkcji jest zupelnie ok. Z kolei
wersje far sa bezpieczne (chociaz nie wiem czy dzialaja na procesorach
do 64kB FLASH), ale czasochlonniejsze i FLASHochlonniejsze.
Natomiast jesli korzystales z wersji near, a wskaznik miales
zadeklarowany prawidlowo jako 32-bitowy to kompilator musial wywalic
ostrzezenie (chyba, ze je blokujesz). Tak czy siak, winny byles ty :)
> A właśnie, jak zrobić wskaźniki do funkcji w tablicach? Wprawdzie teraz
> nie korzystam z tego, ale może się przydać na przyszłość. Dla wskaźników
> w parametrach funkcji mam zrobione makro (choć też troche upierdliwe w
> użyciu, bo stringi muszę teraz mieć ponazywane, a nie umieszczone jako
> PSTR("...") bezpośrednio w wywołaniu funkcji).
Np. tak:
const FuncPtr FuncPtrTable[] PROGMEM=
{f1, f2, f3};
I wywolanie:
FPtr=(FuncPtr)pgm_read_word(&FuncPtrTable[funcno]);
*FPtr();
BTW. A propos twojego bootloadera. Piszesz, ze jest strasznie dlugi.
Wiesz, ze w tej sekcji musi byc tylko maly fragment wykonujacy SPM,
raptem pare bajtow, cala reszta moze byc w normalnej pamieci, co
ogranicza rozmiar bootloadera.
Najnowsze wątki z tej grupy
- Cyna dylemat
- Mierniki poziomu glukozy (CGM, FGM)
- A Szwajcarzy kombinują tak: FinalSpark grows human neurons from stem cells and connects them to electrode arrays
- Kontrola nad prądem - sprawdź jak działa [apka - przyp. JMJ] eLicznik
- NETIA i hasło logowania
- Modulacja FM
- Najgorszy język programowania
- Kol. sukces po polsku: firma Szumisie sp. z o.o.
- Chińska Telefonia 6G - Chcą Nas Sterować Elektrycznie - Jak Kukiełki w Teatrze Lalek!!!
- RS-485 ale automatycznie dwukierunkowy
- Leżakujące SSD gubią po roku dane
- kolorowy e-paper
- Sterownik kotła CO praca PWM
- Jakie baterie A23 i LR44?
- OLED SSD1306 - degradacja?
Najnowsze wątki
- 2025-12-15 Czas to pieniądz...
- 2025-12-15 Wrocław => Programista React ze znajomością C++ <=
- 2025-12-14 Dla UTRWALENIA: jak działają "EKO" ZBRODNIARZE
- 2025-12-13 Emisyjność BEV
- 2025-12-13 Dla odprężenia - niezły zawodnik
- 2025-12-12 Cyna dylemat
- 2025-12-12 Warszawa => Przedstawiciel handlowy / KAM (branża TSL) <=
- 2025-12-12 Warszawa => Architekt rozwiązań (Workday) - Legal Systems <=
- 2025-12-12 Warszawa => Dynamics 365 Commerce/POS Developer <=
- 2025-12-12 Wrocław => React Developer with knowledge of C++ <=
- 2025-12-12 Białystok => Programista React ze znajomością C++ <=
- 2025-12-12 Warszawa => Microsoft Dynamics 365 Finance Consultant <=
- 2025-12-11 To już efekt Żurka czy coś jeszcze GORSZEGO?
- 2025-12-11 Policjanci w mieście Łodzi zmierzą ci prędkość z błędem mniejszym niż producent w laboratorium :-)
- 2025-12-11 Warszawa => Senior Java Developer <=




Chińskie auta: Od niskiej jakości do globalnego lidera. Co pokazuje raport EFL?