Hallo, ich mache gerade meine ersten Gehversuche mit dem Atmel Studio 7 und einem SAM D Controller. Leider hat dieser nur 4k RAM und so stört es mich, dass die libc davon über 1k für sich reserviert. Auf der Suche nach dem Übeltäter stieß ich auf diese Zeile im .map -File: .data.impure_data 0x20000000 0x428 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/ar m-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc.a(lib_a- impure.o) 0x20000428 . = ALIGN (0x4) 0x20000428 _erelocate = . Anscheinend scheint libc einen statischen Puffer namens impure_data anzulegen, der entsprechend viel Speicher blockiert. Offenbar hat das irgend etwas mit der reentrance-Fähigkeit zu tun, ich kenne mich mit der libc aber nicht wirklich aus. Mein Bauchgefühl sagt mir, dass normale single-threaded Programme diesen Speicher nicht wirklich benötigen. Weiss jemand, ob und wie sich der Speicherbedarf der libc reduzieren lässt?
Ich habe sowas wie "--specs=nano.specs" in den Linker Optionen mit drin. Damit sind es "nur" 0x60 Byte.
Mike schrieb: > die libc Das ist normalerweise die Newlib, ursprünglich mal entwickelt für Linux Jim M. schrieb: > sowas wie "--specs=nano.specs" in den Linker Optionen Damit linkt man gegen die Newlib-Nano, die deutlich schlanker ist. Ein paar Funktionen, wie etwa printf mit float müssen aber explizit aktiviert werden. Ein paar Infos findest du unter http://stefanfrings.de/stm32/index.html#newlib
Besten Dank, die Einbindung der newlib-nano sowie die Verkleinerung des Stacks auf 512 Bytes (war nicht ganz leicht zu finden) hat mir 1.5kB Speicher freigegeben. Gibt es irgendwo eine Beschreibung, was die Einschränkungen der nano-lib gegenüber der vollen newlib sind? Multitasking werde ich nicht nutzen, macht auf einem ARM mit 4kB RAM auch nicht wirklich Sinn.
Hier gibt es eine relativ umfassende, wenn auch schon etwas ältere Übersicht: https://github.com/32bitmicro/newlib-nano-1.0/blob/master/newlib/README.nano Falls du dich doch für ein RTOS entscheiden solltest (evtl. auf einem anderen Controller) könnte das hier noch relevant sein: https://developer.mbed.org/users/AdamGreen/notebook/newlib-nano/ Für den kleinen SAM könntest du vermutlich sogar noch ChibiOS-NIL vernünftig nutzen. Ob das für dich Sinn macht ist natürlich eine ganz andere Frage aber es braucht nur ca. 1kB Flash und sehr wenig RAM. http://www.chibios.org/dokuwiki/doku.php?id=chibios:product:nil:features
> Leider hat dieser nur 4k RAM ..
Allenfalls sollte man sich ueberlegen, welche funktionen man wirklich
benoetigt, diese Programmieren und die Library sein lassen. Von printf()
und float sollte man nicht mal entfernt traeumen.
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.