www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mega8 vollprogrammiert?


Autor: Spice (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo liebe Forengemeinschaft,

ich wollte mal nachfragen, ob es sein kann, dass ein 200ZeilerC++ (gcc), 
schon ca 7000bytes beim flashen auf einem Mega8 einnimmt??? dann sollte 
mein mega8 nach den nächsten 20zeilen ja so langsam voll sein??? oder 
verstehe ich da was falsch?
vielen dank schon mal für die kleine hilfe...

schönen abend...
MFG Spice

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
C++? Wirklich? Kann ich mir kaum vorstellen. Aber selbst wenn es "nur" C 
ist: Die Zahl der Quellcodezeilen sagt zunächst mal überhaupt nix über 
die größe des eigentlichen Programms aus! Man kann auch mit ein paar 
wenigen Zeilen einen Mega8 vollschmeißen, wenn man die richtigen 
Funktionen einbaut (printf, Gleitkommageschisse usw...) und evtl. auch 
noch die Optimierung nicht einschaltet...

Autor: andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein paar fette librarys einbinden und schon ist die Kiste voll.
Ansonsten schliesse ich mich Johannes an.

Gruss
Andy

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau mal ins Map-File oder poste es.


Peter

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tja, so ist das, wenn man PC-Programmierer (oder welche, die sich dafür 
halten) unbedarft auf AVRs loslässt...

Beim AVR gibt es kein OS, da programmiert man direkt an der Hardware, da 
sollte man schon mal etwas auf den sinnvollen Umgang mit den Ressourcen 
achten.

...

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@hannes

woher weißt du denn die ganzen Einzelheiten über Programmierer und
Hintergrundwissen des Programmierers, weil Du so clever antwortest.
Hier stehen keinerlei Aussagen über das Thema - aber immer drauf.
Hilf lieber anstatt zu mosern und klug zu sch..

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Hier stehen keinerlei Aussagen über das Thema - aber immer drauf.
>Hilf lieber anstatt zu mosern und klug zu sch..

Hannes hat schon recht. Solange der OP nicht antwortet
was er denn da alles reingequetscht hat ist das hier
sowieso nur fröhliches rumraten.

Autor: Spice (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wo schaltet man die codeoptimierung ein?

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Hilf lieber anstatt zu mosern und klug zu sch..

Meine Hilfe lag darin, darauf hinzuweisen, dass man etwas auf die 
Ressourcen achten sollte. Und das machen viele sogenannte 
PC-Programmierer schon lange nicht mehr.

Achja, wenn Du andere Leute anpissen willst, dann melde Dich bitte an. 
Aber dazu bist Du anscheinend zu feige. Schießt wohl lieber anonym aus 
der letzten Reihe...

...

Autor: Fred S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

> wo schaltet man die codeoptimierung ein?

Verrate mal, welche "toolchain" Du benutzt, dann bekommst Du eine 
treffende Antwort!

Falls es sich um GCC+AVRStudio handelt, findest Du die Optimierung unter 
Projects/Configuration Options/Optimization.

Gruß

Fred

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fred S. wrote:
> Falls es sich um GCC+AVRStudio handelt, findest Du die Optimierung unter
> Projects/Configuration Options/Optimization.
...und wenn AVRStudio nicht beteiligt sein sollte, dann im Makefile...

Autor: Spice (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ohje, so viele antworten übersehen... Danke Hannes, bist du hier 
eigentlich "nur" registrierter User oder hat man dir auch gleich die 
Lizenz zum "sch*****" labern mitgegeben...
Aber sonst erstmal vielen dank an "alle-1" für die beiträge.
Also ich habe keine codeoptimierung an, daher wollte ich fragen wie ich 
das anstelle...

inkludiert sind:
#include  <avr\io.h>
#include  <util\delay.h>
#include  <stdlib.h>
#include  <avr\interrupt.h>
#include  <avr\sleep.h>

desweiteren werden 5-6 Variablen deklariert und uart-functions + 3 
eigene kleinere funktionen. PowerDown ist konfiguriert und 2 ISRs sind 
am Laufen...

main sieht ca so aus :-)

int (main) void
{
 bool hannes = false;
  while (1)
  {
   if (hannes == 0)
   {
      uart_puts("Hannes is´n Klugsch******");
      DDRC = 0x00;
   }
  };
.......
 return 0;
}

konnts mir einfach nicht verkneifen...
benutze übrigens avr workpad plus, kanns daran liegen?

Danke nochmal und schönen abend...
Spice

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>main sieht ca so aus :-)

Und wie sieht die präzise aus ?
Das erzeugt auf jeden Fall keinen 7kB Code.

>eigentlich "nur" registrierter User oder hat man dir auch gleich die
>Lizenz zum "sch*****" labern mitgegeben...

Ist er nicht süß ;)

Autor: Michael K. (mmike)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leute Leute ....

Immer sachlich und locker bleiben ! Wenn Hannes mit Seiner Vermutung 
falsch lag, dann reicht es wenn man dies klarstellt. Nicht mehr nicht 
weniger.

Ich kann Holger teilweise zustimmen. Der Code von Spice hat definitiv 
keine 7k.

Dem "süß" kann ich leider nicht zustimmen.... Leute zu beschimpfen, die 
man um Hilfe frage .... ohne Worte.

Michael

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Dem "süß" kann ich leider nicht zustimmen.... Leute zu beschimpfen, die
>man um Hilfe frage .... ohne Worte.

Ich meinte nicht Hannes ;)

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Spice wrote:
> Hallo liebe Forengemeinschaft,
>
> ich wollte mal nachfragen, ob es sein kann, dass ein 200ZeilerC++ (gcc),
> schon ca 7000bytes beim flashen auf einem Mega8 einnimmt???
> dann sollte mein mega8 nach den nächsten 20zeilen ja so langsam voll
> sein???
> oder verstehe ich da was falsch?
> vielen dank schon mal für die kleine hilfe...
>
> schönen abend...
> MFG Spice

naja, Hannes hätte ja auch einfach seine Fragen beantworten können:

zu 1. ja
zu 2. vermutlich
zu 3. möglich

Viel mehr ist doch aus den Fragen nicht rauszuholen.

Codeoptimierung wurde schon angesprochen und ob man es schafft, hängt 
vom tatsächlichen Code ab, nicht von einer ca.-Version, die übrigens 
nicht funktioniert, weil der uart nicht initialisiert ist...

Gruß aus Berlin
Michael

Autor: PC-Programmierer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hannes Lux schrieb:
> Beim AVR gibt es kein OS, da programmiert man direkt an der
> Hardware, da sollte man schon mal etwas auf den sinnvollen Umgang
> mit den Ressourcen achten.

Wieso denn das?

Wenn auf dem AVR kein Windows drauf ist, sollte doch mindestens 1GB
zusätzlicher Speicher frei sein?

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also wenn die Main Funktion wirklich "nur" so aussieht, was willst du 
dann mit der stdlib? Wie sieht dein uart_puts etc aus? Alles was uns 
helfen würde wäre der gesamte Code. Auch wenn eine lib eingebunden ist 
(eben wie die stdlib) werden eigentlich nur die Teillibs integriert, die 
auch tatsächlich verwendet werden. Wenn man z.B. string.h einbindet, 
aber nur auf die strcmp-Funktion zurückgreift wird auch nur diese 
Funktion eingebunden und nicht gleich alles was die stdlib beinhaltet. 
Aber alleine eine Verwendung einer Fließkommazahl lässt das Hex-File 
auch schnell um fast 2KB anwachsen. Die Codeoptimierung alleine bringt 
meist nur wenige Prozent an geringerer Codegröße, z.B. 2,6 KB anstatt 
2,9 ohne Optimierungen.

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> #include  <util\delay.h>

Ich vermute du hast irgendwo in deinem "..." einen _delay_xx Aufruf 
drinnen...

Ohne Optimierung kann der allein schon mehrere kilobytes verbraten.

Ach ja, und Pfadagaben mit "\" in #includes sind schlechter Stil, besser 
mit "/" angeben.

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]
  • [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.