Forum: Compiler & IDEs STM32 Cube IDE kombiniert -specs=nosys.specs mit syscalls.c


von Sherlock 🕵🏽‍♂️ (Gast)


Lesenswert?

Wenn ich ein leeres STM32 Projekt anlege (z.B für STM32F103 ohne HAL), 
dann kombiniert die IDE -specs=nosys.specs mit syscalls.c. Ist das nicht 
doppelt gemoppelt? Beide implementieren leere dummy syscalls.

Kennt jemand den Grund, warum die IDE beides gleichzeitig einsetzt?

von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

Vielleicht kennt niemand den Grund. Ist denn meine Annahme richtig, dass 
das doppelt gemoppelt ist?

: Bearbeitet durch User
von Veit D. (devil-elec)


Lesenswert?

Hallo,

was passiert wenn man paar Zeilen programmiert und kompiliert? Ist nur 
ein Gedanke. Kenne mich mit STM nicht aus.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Sherlock 🕵🏽‍♂️ schrieb:
> Beide implementieren leere dummy syscalls.

Die syscalls.c Funktionen sind doch nicht komplett leer. Man muss nur 
die Ausgabe per UART oder SWO einfügen und dann funktioniert printf()

von Sherlock 🕵🏽‍♂️ (Gast)


Angehängte Dateien:

Lesenswert?

Niklas G. schrieb:
> Die syscalls.c Funktionen sind doch nicht komplett leer.

Stimmt, ganz leer sind sie nicht, aber sie tun alle praktisch "nichts".

Worauf ich hinaus will: Da die IDE diese Datei bereit stellt, ist der 
Parameter -specs=nosys.specs sinnlos, denn die dadurch verwendete 
Bibliothek implementiert ebenfalls minimale Syscalls, die allerdings 
alle durch syscalls.c überschrieben werden.

Man braucht nur eins von beiden.

von M. N. (bmbl2)


Lesenswert?

Sherlock 🕵🏽‍♂️ schrieb:
> minimale Syscalls, die allerdings
> alle durch syscalls.c überschrieben werden.
>
> Man braucht nur eins von beiden.

Der eigentliche Trick ist, dass man so nur die implementieren müsste, 
die man auch braucht. Wenn sie in syscalls.c nun mehr machen, als sie 
müssten ist es in der Tat etwas doppelt gemoppelt.

Meistens braucht man nur sagen wie _sbrk für heap management und _write 
für den UART oder so. Den ganzen Rest wie _getpid, _kill, etc. braucht 
auf einem embedded System selten jemand. Dann ist das ein guter Weg sich 
die Implementierung toter Dummies zu sparen.

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
Noch kein Account? Hier anmelden.