RTV forum PL | NewsGroups PL

Umieszczanie tablicy charów w pamięci flash w ARM7 z użyciem GCC - czy to właściwe rozwiązanie?

Dane w pamięci flash ARM7 w gcc

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Umieszczanie tablicy charów w pamięci flash w ARM7 z użyciem GCC - czy to właściwe rozwiązanie?

Sebastian Biały
Guest

Fri Nov 13, 2009 11:27 pm   



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ć?

Konop
Guest

Fri Nov 13, 2009 11:51 pm   



Quote:
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 Wink... ale czy to zachowanie
domyślne, czy wynika z jakiś ustawień GCC, to nie wiem (makefile wziąłem
z FreeRTOS'a Wink). 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

Sebastian Biały
Guest

Sat Nov 14, 2009 12:23 am   



Konop wrote:
Quote:
Jeśli jest OK, to o co chodzi?

Very Happy. 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.

Quote:
Ja to robiłem w prostszy sposób:
const char t[1000] = ... ;

Nie wiem czy napewno wyląduje to tam gdzie chcę.

Quote:
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.

Quote:
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.

Paweł
Guest

Sat Nov 14, 2009 7:54 am   



Quote:
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ł

elektroda NewsGroups Forum Index - Elektronika Polska - Umieszczanie tablicy charów w pamięci flash w ARM7 z użyciem GCC - czy to właściwe rozwiązanie?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map