-
1. Data: 2009-11-13 22:27:22
Temat: Dane w pamięci flash ARM7 w gcc
Od: Sebastian Biały <h...@p...onet.pl>
Witam.
Chcę tablicę charów umiescić na stale w pamięci flash.
Czy aktualnie poprawna metodą jest:
__attribute__ ((section (".text"))) char t[1000];
i wpis w skrypcie linkera wysylający to do sekcji flash ?
Oglądając wynikowy listing w asm wydaje mi się ze robi co powinno, ale
może to zła metoda. Może ktoś podpowiedzieć?
-
2. Data: 2009-11-13 22:51:35
Temat: Re: Dane w pamięci flash ARM7 w gcc
Od: Konop <k...@g...pl>
> Chcę tablicę charów umiescić na stale w pamięci flash.
>
> Czy aktualnie poprawna metodą jest:
>
> __attribute__ ((section (".text"))) char t[1000];
>
> i wpis w skrypcie linkera wysylający to do sekcji flash ?
>
> Oglądając wynikowy listing w asm wydaje mi się ze robi co powinno, ale
> może to zła metoda. Może ktoś podpowiedzieć?
Jeśli jest OK, to o co chodzi? Ja to robiłem w prostszy sposób:
const char t[1000] = ... ;
W moim przypadku GCC wrzucał to do Flasha ;)... ale czy to zachowanie
domyślne, czy wynika z jakiś ustawień GCC, to nie wiem (makefile wziąłem
z FreeRTOS'a ;)). Generalnie w prockach ARM7 nie ma z tym problemu, bo
dostęp jest taki sam jeśli idzie o sposób dostępu (do RAM i do Flash
jest taki sam). Jedyna różnica to szybkość w działaniu.
Generalnie warto by było żyć określenia const. Bez tego możesz
przypadkowo skompilować kod typu t[0]++ albo coś. Kompilator to puści,
linker nie będzie się wgryzać w szczegóły, a procek się zawiesi (wejdzie
w Abort), bo będziesz próbował zapisać nie tam gdzie trzeba...
Pozdrawiam
Konop
-
3. Data: 2009-11-13 23:23:50
Temat: Re: Dane w pamięci flash ARM7 w gcc
Od: Sebastian Biały <h...@p...onet.pl>
Konop wrote:
> Jeśli jest OK, to o co chodzi?
:D. To niestety niewystarczający powód żeby zamknąć temat. moze być OK
tylko u mnie, na jakiejś wersji kompilatora, bądzi istnieje inny,
oficjalny sposób.
> Ja to robiłem w prostszy sposób:
> const char t[1000] = ... ;
Nie wiem czy napewno wyląduje to tam gdzie chcę.
> Generalnie w prockach ARM7 nie ma z tym problemu, bo
> dostęp jest taki sam jeśli idzie o sposób dostępu (do RAM i do Flash
> jest taki sam).
Jest problem, bo dane mogę zostac niepotrzebnie przeniesione z Flash do
RAM na inicie programu i chce tego uniknąć możliwie w pewny sposób.
> Generalnie warto by było żyć określenia const.
Na codzień robie developing czegoś bardzo dużego, gdzie consty sa
powszechne. Więc mam to we krwi i stosuje gdzie się da. Ale czy z const
wynika od razu ladowanie się do flash, to pewny nie jestem, dlatego
pytam jaka jest poprawna metoda.
-
4. Data: 2009-11-14 06:54:19
Temat: Re: Dane w pamięci flash ARM7 w gcc
Od: Paweł <p...@n...pl>
> Na codzień robie developing czegoś bardzo dużego, gdzie consty sa
> powszechne. Więc mam to we krwi i stosuje gdzie się da. Ale czy z const
> wynika od razu ladowanie się do flash, to pewny nie jestem, dlatego
> pytam jaka jest poprawna metoda.
Ja robiłem to zawsze przez const i dane były umieszczane w pamięci Flash.
Paweł