Forum: Mikrocontroller und Digitale Elektronik Mega8 vollprogrammiert?


von Spice (Gast)


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

von Johannes M. (johnny-m)


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...

von andy (Gast)


Lesenswert?

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

Gruss
Andy

von Peter D. (peda)


Lesenswert?

Schau mal ins Map-File oder poste es.


Peter

von Hannes L. (hannes)


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.

...

von gast (Gast)


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..

von holger (Gast)


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.

von Spice (Gast)


Lesenswert?

wo schaltet man die codeoptimierung ein?

von Hannes L. (hannes)


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...

...

von Fred S. (Gast)


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

von Johannes M. (johnny-m)


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...

von Spice (Gast)


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

von holger (Gast)


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üß ;)

von Michael K. (mmike)


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

von holger (Gast)


Lesenswert?

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

Ich meinte nicht Hannes ;)

von Michael U. (amiga)


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

von PC-Programmierer (Gast)


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?

von Timmo H. (masterfx)


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.

von Εrnst B. (ernst)


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.

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.