atmega168-20PU furán viselkedik 8k-nál nagyobb programmal

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
Avatar
pentike
DrótVégénSzéndarab
Hozzászólások: 21
Csatlakozott: 2010. november 6. szombat, 6:00

atmega168-20PU furán viselkedik 8k-nál nagyobb programmal

Hozzászólás Szerző: pentike »

Sziasztok!

Azt vettem észre, hogy ha egy program nagyobb mint 8k akkor rosszul működik a mikrokontroller. Először csak az tűnt föl, hogy a tökéletesen működő, letesztelt programomhoz hozzáírtam egy új függvényt, amit nem használtam sehol és a program elromlott. Aztán kitöröltem az új részt és működött.

Majd az új részt bennehagyva feltoltam az avr-gcc optimalizációját és így már 8k alá csökkent a programméret. Így a régi és az új funkció is tökéletesen működik. Visszaállítva optimalizálás nélkül persze megint nem működik.

Az adatlap szerint az atmega168-nak 16k memóriája van. Nem értem miért nem lesz jó a 8k-nál kicsit nagyobb program. Tapasztalt már valaki hasonlót?

pentike
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Programkód nélkül nehéz megmondani....

Amire tippelnék:
- változótípusok jók?
- típuskonverzió jól megy végbe?
- INT kezelés (Stack) rendben?
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Ez még nem bizonyítja, hogy a 8Kb átlépése lenne a hiba oka.
Elképzelhető, hogy az optimalizálás rendbe tesz valami hibás részt. Pl, a vermek méretét is felülbírálja.

Én ellenőrizném, hogy az optimalizált működő program méretét valami ellenőrzőt rutinnal 8Kb. fölé emelve mi történik?
Avatar
pentike
DrótVégénSzéndarab
Hozzászólások: 21
Csatlakozott: 2010. november 6. szombat, 6:00

Hozzászólás Szerző: pentike »

Igen, itt is ezt írják, hogy -O0 -val egy két dolog furán tud működni:
http://www.avrfreaks.net/index.php?name ... ic&t=79510

Az optimalizációhoz ezek szerint lehet köze, de a nagyobb 8k, kisebb 8k probléma egyértelműen jelentkezik -O0 -val. Azért Kipróbálom -OS -el vagy -O3 -al is, hogy úgy is csinálja-e?
Avatar
pentike
DrótVégénSzéndarab
Hozzászólások: 21
Csatlakozott: 2010. november 6. szombat, 6:00

Hozzászólás Szerző: pentike »

Kipróbáltam. Ennyit írtam hozzá a programhoz:

Kód: Egész kijelölése

void fillSpace() {
	printf("a");

	printf("aaaaaaaa");
}
Ha egy "a" betűt törlök, hibátlanul működik a program, ha nem, hibás adatokat írkál.
Ezt a függvényt sehol nem hívom meg, csak ott van, a -O2 szinten optimalizált bináris mérete 4998 byte, szóval nem 8K a határ, hanem valami más gond van.

Kód: Egész kijelölése

avr-size --format=berkeley -t InterruptTest.elf
   text	   data	    bss	    dec	    hex	filename
   4132	    338	    528	   4998	   1386	InterruptTest.elf
   4132	    338	    528	   4998	   1386	(TOTALS)
Nem látok itt fájlfeltöltési lehetőséget, bemásolni meg nem szeretném az egész kódot, mert 5 fájl és elég hosszú.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

File cserebere alá felrakhatod zipben....
Avatar
pentike
DrótVégénSzéndarab
Hozzászólások: 21
Csatlakozott: 2010. november 6. szombat, 6:00

Hozzászólás Szerző: pentike »

Nem találtam ilyen kategóritát. Vagy nem a Letöltések között kellene keresni?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Kirakva....
Avatar
pentike
DrótVégénSzéndarab
Hozzászólások: 21
Csatlakozott: 2010. november 6. szombat, 6:00

Hozzászólás Szerző: pentike »

Megpróbáltam feltölteni és úgy is tett, mintha feltöltötte volna, de nem jelent meg a listában. InterruptTest.zip a fájl és 56Kbyte
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Hozzá tenném az előzőhöz, hogy Felrakni és leszedni sem lehet semmit!
A File csere-bere oldalról
:?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Költözési mellékhatás...
Rálesek!
:roll:
Válasz küldése