mikrocontroller.net

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


Autor: Bernhard P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Bernhard P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bernhard P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lupinus Digitalus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Bernhard P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.