Ich bin neu in der eingebetteten C-Entwicklung und suche nach allgemeinen Grundsätzen/Richtlinien für die Verwaltung der Größe des generierten Codes.
In meinem konkreten Beispiel verwende ich XC8 auf einem PIC18F4550. Mein Code verwendet bisher etwa 13% des Speicherplatzes. Sobald ich "time.h" und 1/2 Funktionen davon verwende, springt die Nutzung auf 45%! Mir ist klar, dass der kostenlose XC8-Compiler nicht optimiert, aber ich bin immer noch sehr überrascht zu sehen, wie viel Speicherplatz verwendet wird.
Was suche ich nach Tipps/Ansatzpunkten in der Art von
BEARBEITEN : Ich habe hier eine nette Implementierung ohne Verwendung von stdlib gefunden: https://codereview.stackexchange.com/questions/38275/convert-between-date-time-and-time-stamp-without-using-std-library-routines
Die generelle Frage bleibt aber bestehen. Gibt es Richtlinien, gute Repository-Quellen etc
Hier sind einige Dinge, die ich bei der Verwendung des Microchips C18-Compilers getan habe. Vielleicht gelten die Konzepte für Ihren Compiler: - Deklarieren Sie jeden String einmal. Fügen Sie eine separate .c-Datei ein und verwenden Sie eine .h-Datei, um darauf zu verweisen. Mit anderen Worten, duplizieren Sie Anzeigemeldungen nicht mehrmals. - Strings deklarieren, damit sie in ROM gehen. Dies hilft Ihnen nicht beim ROM (Code Space), spart jedoch Speicherplatz. - engen Code schreiben. Wenn mehrere Codezeilen dupliziert werden, fügen Sie sie in eine Funktion ein. Kopieren / Einfügen ist nicht erforderlich, ein bester Freund des eingebetteten Programmierers. - Wie Sie bereits gedacht haben, implementieren Sie Ihre eigenen Funktionen, anstatt eine Bibliothek einzubinden. Ich habe einmal eine Menge Platz gespart, indem ich meine eigene Funktion itoa() erstellt habe. Versuchen Sie, printf nicht zu verwenden.
Ich habe mich ein wenig umgesehen und hier sind die Tipps, die ich finden kann
Dann gibt es einige Alternativen, die das Kernproblem der Codegröße nicht ansprechen, aber möglicherweise in Betracht gezogen werden müssen, wenn alles andere fehlschlägt
Ich hätte immer noch gerne eine einfache Möglichkeit zu sehen, welche Funktionen und enthaltenen Funktionen den meisten Platz beanspruchen. Ich werde hier aktualisieren, wenn ich einen einfachen Weg finde, dies zu tun.
Es kann hilfreich sein, eine eigene Version von Standardfunktionen zu implementieren, anstatt die gesamte Bibliothek einzubinden. Es gibt eine Million kleinerer, spezifischerer Optimierungen, die Sie durchführen können, aber eine gute Referenzsammlung dieser Art von Tricks ist das Buch Hacker's Delight . Es ist sehr praktisch (insbesondere für Bit-Twiddling, wie Sie es oft auf einem Mikrocontroller tun) und ich empfehle es.
Erik Friesen
André
Matt Jung
André
Matt Jung
Erik Friesen
Matt Jung
Paul A. Clayton
m.Alin
For little more you can get one of the newish pic32 line with much more flash. It seems that xc8 is more limited than the 16 and 32 compilers
Wovon redest du? Es geht nicht um die Mikrocontroller-Familie. Es geht um die kostenlose Version des Compilers, die auf alle Arten von PICs beschränkt istErik Friesen
Erik Friesen
Lundin
Erik Friesen