Drodzy koledzy zwracam się z prośbą o pomoc gdyż temat był wielekrotnie poruszany i obszernie opisywany lecz wszystkie posty dotyczą środowiska WinAvr.
Sprawa wydaje się być widziana w innym świetle gdyż przeczytawszy manuala pt. "AVR IAR C/C++ Compiler" stwierdzam, że nie ma tam mowy o bibliotekach które są potrzebne do umieszczania danych we flashu gwarantując przy tym brak kopiowania zmiennych stałych do RAM`u (struktura Harwrdzka). Sposób wg. manuala w jaaki powinno umieszczać sie stałe we flashu jest natępujący:
a tutaj w RAM`ie
Ustosunkowałem się do tego zapisu i wszystko wydaje się ok, ale chciałem zapytać czy ktoś już deklarował zmienne w taki sposób i czy wszystko było dobrze? Czy może mimo wszytsko trzeba korzystać z dodatkowych bibliotek?
Poza tym jeszcze jedna jest rzecz która wymaga pomocy kolegów doświadczonych w środowisku IAR. Przy deklarowaniu zmiennych w jedej strukturze, w manualu jest napisane,że zmienne deklarowane muszą być zadeklarowane w jedym typie pamieci, to się tyczy rownież wskaźników.
Więc jeśli deklaruje wskaźnik (RAM) do wcześniej zadeklarowanej tablicy (flash) to muszę użyć specjalnej dyrektywy:
Oznacza to tyle, wskaźnik umiejscowiony w RAM`ie (tiny)będzie wskazywał na elementy we flashu.
Niestety tutaj wywala mi taki błąd:
Error[Be009]: memory attributes not allowed on auto variables or parameters
oczywiście przy takiej deklaracji:
wskaznik wskazuje na elementy we flashu ale jest umiejscowiony w pamięci domyślnej. Natomiast ja bym chciał mieć pełną kontrolę nad tym co sie dzieje w procku i zależy mi aby używać tej pierwszej dyrektywy. Pytanie jest gdzie robie błąd?
Z góry dzięki za pomoc!
Sprawa wydaje się być widziana w innym świetle gdyż przeczytawszy manuala pt. "AVR IAR C/C++ Compiler" stwierdzam, że nie ma tam mowy o bibliotekach które są potrzebne do umieszczania danych we flashu gwarantując przy tym brak kopiowania zmiennych stałych do RAM`u (struktura Harwrdzka). Sposób wg. manuala w jaaki powinno umieszczać sie stałe we flashu jest natępujący:
int __flash zmienna_stała;a tutaj w RAM`ie
int __tiny zmienna_tymczasowa;Ustosunkowałem się do tego zapisu i wszystko wydaje się ok, ale chciałem zapytać czy ktoś już deklarował zmienne w taki sposób i czy wszystko było dobrze? Czy może mimo wszytsko trzeba korzystać z dodatkowych bibliotek?
Poza tym jeszcze jedna jest rzecz która wymaga pomocy kolegów doświadczonych w środowisku IAR. Przy deklarowaniu zmiennych w jedej strukturze, w manualu jest napisane,że zmienne deklarowane muszą być zadeklarowane w jedym typie pamieci, to się tyczy rownież wskaźników.
Więc jeśli deklaruje wskaźnik (RAM) do wcześniej zadeklarowanej tablicy (flash) to muszę użyć specjalnej dyrektywy:
int __flash *__tiny wskaznik; Oznacza to tyle, wskaźnik umiejscowiony w RAM`ie (tiny)będzie wskazywał na elementy we flashu.
Niestety tutaj wywala mi taki błąd:
Error[Be009]: memory attributes not allowed on auto variables or parameters
oczywiście przy takiej deklaracji:
int __flash *wskaznik; wskaznik wskazuje na elementy we flashu ale jest umiejscowiony w pamięci domyślnej. Natomiast ja bym chciał mieć pełną kontrolę nad tym co sie dzieje w procku i zależy mi aby używać tej pierwszej dyrektywy. Pytanie jest gdzie robie błąd?
Z góry dzięki za pomoc!