Forum: FPGA, VHDL & Co. Codegröße in Mico32


von Bernhard P. (Gast)


Lesenswert?

Hallo,

ich arbeite mit einem Lattice ECP2 und hab da drin einen Mico32 core.
Generell funktioniert alles super, aber die Codegröße macht mir zu 
schaffen.
Bei einem "blank Project" also ohne Variablen zu initialisieren und ohne 
im Hauptprogramm irgendetwas zu machen braucht der Code schon ca. 
14kByte.
D.h. ich brauche rund 7 ebr's nur für den Code der eigentlich nix macht.
Ich hoffe dass das nur eine Einstellungssache im Eclipse ist....

Wenn jemand eine Idee hat, dann bitte melden

Herzlichen Dank
Bernhard

von Michael (Gast)


Lesenswert?

Hm,

also zu deinem eclipse kann ich dir nicht viel sagen, aber wenn ich hier 
ein:

int main()
{
   while(1) ;

   return 1;
}

mit dem lm32-gcc kompiliere und noch einen kurzen startupcode dabei 
mache komme ich auf ne codesize von ein paar bytes :)

ergo, gehts wesentlich kleiner, nur kann ich dir nicht sagen wie das 
geht in eclipse, ich nehme mal an, da ist noch die ganze hardware 
abstraktionsschicht dabei, und evtl noch c++ support etc.

gruß michael

von Bernhard P. (Gast)


Lesenswert?

Hallo Michael,
danke für deine Antwort, wenn ich so ähnliches Programm gestalte bekomme 
ich in der Console:

lm32-elf-size test.elf
   text     data      bss      dec      hex  filename
  11612      408      712    12732     31bc  test.elf
Build complete for project test

Kannst du mir vielleicht erklären was genau diese Größen sind?
Kann mittlerweile einfach nicht glauben das diese Werte stimmen!!

Danke
Bernhard

von Michael (Gast)


Lesenswert?

Hallo Bernhard,

.text ist dein eigentlicher code, den kannst du dir auch mit 
lm32-elf-objdump -d test.elf anzeigen lassen.
.data sind afaik die initialisierungsdaten für deine symbole/variablen
.bss ist die größe des rams für globale/statische symbole

lm32-elf-nm listet dir übrigens alle symbole (also variablen und 
funktionen) auf, die in deinem test.elf sind. evtl hilft dir das weiter.

benutzt du win oder linux? ich kann dir leider nicht sagen wie du die 
programme lm32-elf-* an der konsole startest.

von Bernhard P. (Gast)


Lesenswert?

Hallo Michael,
danke für deine Antwort, ich benutze windows xp.
heißt das dass mein text mit 11612 also ca. 12kByte groß ist?

Danke
Bernhard

von Michael (Gast)


Lesenswert?

ja.

hier auf der arbeit hatten wir auch mal das problem, dass die dateien 
für nen NIOS so groß waren. da konnte man in eclipse in den 
projekteigenschaften irgendwo 'tiny libc' anschalten, sowie den support 
für c++ deaktivieren. musst du mal suchen, ich benutze selbst leider 
kein ecplise.

von Lupinus Digitalus (Gast)


Lesenswert?

Hallo,

also ich würde auch empfehlen die Small C Lib zu verwenden. Die kann in 
Eclipse in den Build settings ausgewählt werden. Zudem solltest Du dort 
nachsehen ob dein Build für Production oder Debugging optimiert wird. 
Das hat auch Einfluss auf die Codegrösse.

Zudem hat die Verwedung von PrintF fürs Debugging Einfluss auf die 
Codegrosse.

Wenn Du den Managed Flow verwendest, werden für die eingesetzte 
Peripherie Funktionen (Initialisierung, schreiben, lesen etc) 
dazugelinkt, egal ob Du sie brauchst oder nicht. Hier macht es Sinn die 
jeweiligen Header aufzuräumen.

Ich hoffe das hilft ein bisschen

Lupi

von Bernhard P. (Gast)


Lesenswert?

Hallo,
weiß jemand wo ich den Support für c++ deaktivieren kann?
Use Small-C ist angeklickt, bringt leider nix.
Configuration auf Relaese bringt aber auch nur ein paar Byte.

Meinst du mit Management Flow bei einem neuen Projekt anlegen ob 
Managed Make C Projekt oder Standart Make C Projekt?

Was genau meinst du mit:
Zudem hat die Verwedung von PrintF fürs Debugging Einfluss auf die
Codegrosse.
Ich verwende in meinem gesamten Projekt kein printf.

Danke
Bernhard

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.