Ich möchte, dass meine Kompilierungen je nach verfügbarem Flash- / Programmspeicherplatz Code ausschließen. Zur Verwendung im Demo-Code einer Bibliothek, die ich unterstütze. Während meine derzeitige Lösung darin besteht, ein #ifdef des Prozessortyps zu verwenden. Aber ich möchte allgemeiner sein und nicht alle verschiedenen Chips spezifizieren müssen. Vielmehr wäre es schön, wenn es eine Vorprozessorkonstante gäbe, die die verfügbare Größe angibt.
Wenn ich nicht fließend genug in gcc und / oder avr-gcc bin, könnte ich erwarten, einige Konstanten zu finden, die den Anfang und das Ende des Heaps definieren.
Am Fallbeispiel. Ist das sowohl die UNO als auch Leo haben 32K Flash. Die Kernbibliothek des Leo verwendet jedoch 4 KB für die USB-Unterstützung, sodass nur 28 KB zur Verfügung stehen. Die Demo meiner Bibliothek ist in der UNO fast voll, und ich möchte sie basierend auf dem verfügbaren Programmplatz automatisch ausschneiden.
quelle
Antworten:
Suchen Sie die
io__.h
Datei für Ihren Mikrocontroller. Unter Linux befindet/usr/lib/avr/include/avr
sie sich an einer ähnlichen Stelle wie unter Windows.Scrollen Sie nach unten zu dem Teil, in dem steht
/* Constants */
. Dort sind einige interessante Makros definiert, an denenFLASHEND
Sie interessiert sein sollten. Sie können sie beispielsweise wie folgt verwenden:quelle