kompilator gcc i duze tablice



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "Jack00" <lufcadio_at_nospam_hoga.pl>
Subject: kompilator gcc i duze tablice
Date: Tue, 16 Dec 2003 15:18:01 +0100


Pisze program (dla Atmega8) i dla celow testowych deklaruje tablice o duzym
rozmiarze np:
char aaa[2000];

Kompilator nie zwraca żadnego ostrzeżenia, nie mowiąc o bledzie, ze
przekroczylem zakres pamięci SRAM dostępnej w mikrokontrolerze. Pewnie można
wlączyć takie sprawdzanie odpowiednią opcja kompilatora, tylko jaka to
opcja?

Pozdrowienia



========
Path: news-archive.icm.edu.pl!news.rmf.pl!news.ipartners.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: Marcin Stanisz <mstanisz_at_nospam_poczta.bzdury.onet.pl>
Subject: Re: kompilator gcc i duze tablice
Date: 16 Dec 2003 14:54:32 GMT


W artykule <brn473$jkb$1_at_nospam_atlantis.news.tpi.pl> Jack00 napisal(a):

Pisze program (dla Atmega8) i dla celow testowych deklaruje tablice o duzym
rozmiarze np:
char aaa[2000];

Kompilator nie zwraca żadnego ostrzeżenia, nie mowiąc o bledzie, ze

A próbowałeś ją inicjować, choćby pętlą for?

Pozdrawiam

Marcin Stanisz
--

"A lie will go round the world before the truth has got its boots on"
Terry Pratchett, "Truth"

========
Path: news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news.man.poznan.pl!news.internetia.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Jurek Szczesiul" <jerzy.szczesiul_at_nospam_ep.com.pl.remove>
Subject: Re: kompilator gcc i duze tablice
Date: Tue, 16 Dec 2003 21:52:09 +0100


Czesc

Użytkownik "Marcin Stanisz" <mstanisz_at_nospam_poczta.bzdury.onet.pl>
napisał w wiadomości
news:slrn.pl.btu753.13c.mstanisz_at_nospam_COS13.ilf.com...
W artykule <brn473$jkb$1_at_nospam_atlantis.news.tpi.pl> Jack00 napisal(a):

Pisze program (dla Atmega8) i dla celow testowych deklaruje
tablice o duzym
rozmiarze np:
char aaa[2000];

Kompilator nie zwraca żadnego ostrzeżenia, nie mowiąc o
bledzie, ze

A próbowałeś ją inicjować, choćby pętlą for?

To nic nie zmienia. AFAIK linker po prostu nie ma wbudowanych
takich ostrzezen. Co zreszta jest nawet logiczne - klopoty zaczna
sie znacznie wczesniej zanim co do bajta przekroczysz ram
runtime ). Ale sie nie zarzekam - wypadaloby zapytac na liscie
avrgcc Jesli mam racje , to pozostaje sprawdzac
rozmiar zajetego ramu i patrzec co sie dzieje ( albo uzyc
frontendu,
ktory to na biezaco wylicza i wyswietla np. w % zuzycia ).
Na temat stosu kompilator niestety nie daje zadnych informacji,
mozna co najwyzej przepatrzec rozmiary ramek uzywane przez
poszczegolne funkcje ( podawane w generowanych plikach *.s )
i probowac oszacowac uwzgledniajac najbardziej niekorzystne
zagniezdzenia.

--
Pozdrowienia
Jurek Szczesiul


========
Path: news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news.man.poznan.pl!newsfeed.gazeta.pl!news.onet.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "jsz" <jsz_at_nospam_of.pl>
Subject: Re: kompilator gcc i duze tablice
Date: Tue, 16 Dec 2003 16:18:03 +0100


Witam.
Mam podobny problem. Chcę się zapoznać z kompilatorem avr-gcc i pisze sobie
testowy program na at90s8515 ( bo akurat taki mam ).
Mikrokontroler ten ma 512 bajtów pamięci ram. W projekcie deklaruje dwie
tablice po 2kB każda i kompilator nie zgłasza błędów. Błąd został zgłoszony
dopiero jak zmieniłem rozmiar tablic tak, że sumaryczny rozmiar wszystkich
zmiennych przekroczył 64KB. Sugerowało by to, że kompilator domyślnie
zakłada, że do procesora jest dołączona zewnętrzna pamięć ram o rozmiarze
64kB. W pliku io8515.h znalazłem parametr XRAMEND, ale zmiany na 0x0000 lub
0x25f nie przyniosły żadnej widocznej zmiany. Czy jest tak, że jeśli
sumaryczny rozmiar zmiennych nie przekracza 512 bajtów to są one umieszczane
w wewnętrznej pamięci programu, a po przekroczeniu tej wielkości
automatycznie jest używana pamięć zewnętrzna ? A może da się to
konfigurować, jeśli tak to jak?
Dziękuję, za wszelkie wskazówki.
Pozdrawiam,
Jacek.

Użytkownik "Jack00" <lufcadio_at_nospam_hoga.pl> napisał w wiadomości
news:brn473$jkb$1_at_nospam_atlantis.news.tpi.pl...
Pisze program (dla Atmega8) i dla celow testowych deklaruje tablice o
duzym
rozmiarze np:
char aaa[2000];

Kompilator nie zwraca żadnego ostrzeżenia, nie mowiąc o bledzie, ze
przekroczylem zakres pamięci SRAM dostępnej w mikrokontrolerze. Pewnie
można
wlączyć takie sprawdzanie odpowiednią opcja kompilatora, tylko jaka to
opcja?

Pozdrowienia





========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Jurek Szczesiul" <jerzy.szczesiul_at_nospam_ep.com.pl.remove>
Subject: Re: kompilator gcc i duze tablice
Date: Tue, 16 Dec 2003 21:31:09 +0100


Czesc

Użytkownik "jsz" <jsz_at_nospam_of.pl> napisał w wiadomości
news:brn7o2$95d$1_at_nospam_atlantis.news.tpi.pl...
0x25f nie przyniosły żadnej widocznej zmiany. Czy jest tak, że
jeśli
sumaryczny rozmiar zmiennych nie przekracza 512 bajtów to są one
umieszczane
w wewnętrznej pamięci programu, a po przekroczeniu tej wielkości
automatycznie jest używana pamięć zewnętrzna ?

AFAIK tak wlasnie robi sprzetowo AVR z wlaczona magistrala
xram - po wyjsciu poza wewnetrzny zakres ram zaczyna
generowac odwolania przez magistrale ( dlatego tez nie da sie
w pelni wykorzystac zewnetrznej pamieci 64k - poczatkowy
obszar pokrywajacy sie z zasobami wewnetrznymi jest tracony ).

Jak sobie porozmieszczac w zasobach sekcje data, bss, noinit,
malloc,stack - sa do tego dyrektywy linkera. Domyslnie gcc
ustawia data zaraz za obszarem sfr. Potem idzie bss i noinit,
dlaej masz miejsce na malloc. Wskaznik stosu jest ustawiany
na RAMEND ( wiec jak to zmienisz to moga stos wziac diabli
na kostce w trybie kompatybilnym ze 103 ). Szczegoly
( z rysunkami ) w dokumentacji avr-libc.

--
Pozdrowienia
Jurek Szczesiul


========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.gazeta.pl!news.task.gda.pl!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai