mikrocontroller.net

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


Autor: Mark. K (Gast)
Datum:

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

Autor: ARM-Fan (Gast)
Datum:

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

Autor: Jupp (Gast)
Datum:

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

Autor: Mark. K (Gast)
Datum:

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

Autor: Hauke Radtki (lafkaschar) Benutzerseite
Datum:

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

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.