Jede Funktion anstelle von sprintf() in C? code-Größe ist zu groß nach dem kompilieren

Arbeite ich an der Entwicklung eines embedded-Systems (Cortex M3). Für das senden von Daten aus dem Gerät an den seriellen port (um zu zeigen, auf einem PC-Bildschirm), ich benutze einige eigene Funktionen, die mit putchar () - Methode.

Wenn ich senden möchten integer oder float, verwende ich sprintf (), um Sie zu konvertieren Zeichenfolge und sendet Sie an den seriellen port.

Nun, Sie problem ist, dass ich mit Keil uVision IDE und es ist eine eingeschränkte version mit max 32 KB.
Immer wenn ich call sprintf() in verschiedenen Funktionen, ich weiß nicht, warum die Größe der code nach dem kompilieren zu stark erhöht.
Ich habe übertroffen 32 KB jetzt und ich Frage mich, habe ich einige meiner Funktionen und verwenden Sie etwas anderes anstelle von sprintf!

Keine Ahnung?

  • Versuchen Sie zu vermeiden floats, nachdem alle, als Ihre runtime-library-Komponenten sind ziemlich groß und langsam, in den meisten Fällen.
  • der printf-Familie ist sehr kostenintensiv, da die große Menge an code benötigt, um es zu implementieren, esp floating point. Ein integer nur printf ist eine ganze Menge kleiner, aber immer noch teuer. Tun Sie Sie wirklich denken, Sie brauchen, printf() in der embedded-microcontroller-code? Realisieren Sie Ihr eigenes viel billigere Lösungen.
  • Auch mit Blick auf Ihre compiler-Hersteller Bibliotheken zur Verfügung. Oft gibt es mehrere Geschmack des C std libs mit Funktionalität reduziert. Zum Beispiel, ein sprintf, mit int und float, aber keine wissenschaftliche notation.
InformationsquelleAutor Django | 2012-10-25
Schreibe einen Kommentar