Forum: Mikrocontroller und Digitale Elektronik Microchips C18 = Recourcen-Fresser?


von Mark. K (Gast)


Lesenswert?

Kann das obige jemand bestätigen?

Ich hab mir den C18 mit nem 18F2320 mal angeschaut.
Das einzige, was in meinem Quelltext steht, ist:

#include <p18f2320.h>

void main(void)
{
}


Im Projekt-Baum wurde noch das Linker-Script eingefügt.
Das Ganze belegt im Programmspeicher schon ca. 120 Programmzeilen. Is 
das normal?
Beim Compilieren werden noch zwei Dateien geöffnet und abgearbeitet:
c018i.c und __init.c

Des Weiteren hab ich zwei einfache Zahlen miteinander multiplizieren 
lassen und das Ergebnis in ne float Variable geschrieben. Das hat 
nochmals ca. 100 Zeilen verbraucht. Wenn ich das Ergebnis in ne Int 
schreiben lasse, dann ist der Verbrauch erwartungsgemäß sehr gering. 
Gibts in C18 nur einen 32Bit Fließkomma-Typ? Im "getting startet.pdf" 
ist kein weiterer Fließkomma-Datentyp aufgezeigt.


Hab ich wo ne falsche Einstellung drin oder was ist da los?


Ansonsten arbeite ich mit den 16Fxxx und CC5 free. Da CC5 free 
allerdings auf 1k/2k begrenzt ist, wollte ich mir mal den C18 anschauen, 
damit ich mehr Programmspeicher zur Verfügung hab.

von ARM-Fan (Gast)


Lesenswert?

Ist schon alles ok so. Auch wenn ich die PICs nicht im Detail kenne.

Ein leeres main() erzeugt aus dem grund schon code, weil da die
Bibliothek zur Variableninitialisierung usw. eingebunden wird.
Ist bei jedem anderen µC auch so.

Wenn du mit FLOAT rechnes, dann werden eben (große) Teile aus der
Fließkommabibliothek dazugelinkt. Ist auch bei jedem anderen so.

Also keine Panik, alles im grünen Bereich.

Das scheint erstmal viel Overhead zu sein, so lange man selbst noch
keine Zeile programmiert hat. Aber dabei bleibts ja dann auch erstmal.
Die Größe steigt nicht an, wenn du z.B. an einer anderen Stelle im
Programm wieder mit FLOAT rechnest. Dann ist die Lib schon drin.

von Jupp (Gast)


Lesenswert?

>Hab ich wo ne falsche Einstellung drin oder was ist da los?

Ich denke es fehlt dir einfach an Grundverständnis über Datentypen und 
Rechnerarchitekturen.

von Mark. K (Gast)


Lesenswert?

@ARM-Fan: Danke schonmal

@Jupp:
Nein, mit Datentypen kenne ich mich aus. Da ich Assembler gelernt habe, 
weiß ich natürlich, dass man mit einer 8Bit CPU viele Rechenschritte für 
32Bit Variablen benötigt. Das war aber auch gar nicht meine Frage, also 
stempel nicht jeden gleich zum Anfänger in dieser Hinsicht.
Ich weiß auch nicht, warum sich hier manche immer so aufspielen und doch 
keine konstruktive Hilfe geben.

Mit CC5 habe ich halt schon programmiert und dort wurde durch ein leeres 
main{} halt nicht so viel Speicherplatz verbraten.
Naja, immerhin hab ich mit dem C18 keine Codegrößen-Beschränkung. Von 
dem her ist es auch nicht so schlimm, wenn der Code weniger effektiv 
ist.

von Hauke R. (lafkaschar) Benutzerseite


Lesenswert?

Ich programmiere zwar kein C, aber ich bin dafür, dass man einfach mal 
den compiler entwicklern sagen sollte, dass sie wenn das Programm nur 
aus ner leeren main() besteht einfach die variableninitialisierung etc. 
einfach wegoptimieren sollten, dann ist jeder zufrieden ;)

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.