Forum: Mikrocontroller und Digitale Elektronik LLVM/clang als Compiler für Cortex-M


von drama (Gast)


Lesenswert?

Hallo zusammen,

wie sind eure Erfahrungen mit clang als Alternative zum gcc als 
C-Compiler auf 32-Bit-Mikrocontrollern? Es wäre doch schön, eine 
Alternative zu haben.
LLVM hat einen Port für die diversen Cortex-M und sollte in der Lage 
sein, Code für "bare metal" zu kompilieren. Man findet bisher jedoch 
wenig bis keine genauen Informationen dazu im Netz, wie man das angeht.

von FelixW (Gast)


Lesenswert?

Habe bisher keine Zeit und Muße gehabt das auszuprobieren:
http://sushihangover.github.io/arm-cortex-m3-bare-metal-with-newlib/

Gibt noch ein paar Folgeartikel. Hauptproblem ist wohl das Linkerscript. 
Die Newlib wird vom gcc verwendet.

von Ben W. (ben_w)


Lesenswert?

hab es auch mit ellcc kurz probiert (http://ellcc.org/)

habe bisher geschafft ein "hello world" zu compilieren und unter qemu 
laufen zu lassen, allerdings nicht auf dem tatsächlichen target :)

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Rowley Crossworks liefert neuerdings (?) zusätzlich zu GCC eine 
Clang/LLVM-Toolchain mit (http://www.rowley.co.uk/arm/).

von Frank D. (sinx)


Lesenswert?

Ich habe gerade meinen erstes Cortex M0 Projekt unter Crossworks von gcc 
auf clang umgestellt. Hatte gleich mal Probleme, dass mein Assemblercode 
nicht compiliert wurde, weil bei GCC "add R0,#32" bei clang "adds 
R0,#32" heißen muss. Das Gleiche gilt für sub. Das kann man aber mit 
"#ifdef __clang__" abfangen.
Generell compiliert clang deutlich schneller bei mir. Faktor 2 ist 
realistisch.

von benwilliam (Gast)


Lesenswert?

und hat sich der wechsel gelohnt?

von Olivier Martin (Gast)


Lesenswert?

I cannot read much German. But I released earlier this week a firmware 
framework - PolyMCU https://github.com/labapart/polymcu - that primary 
targets ARM Cortex-M. You can use either GCC or LLVM. And because it is 
based on CMake you can build either on Windows or Linux or MacOS.

I also wrote a blog where I compared GCC and LLVM build size on ARM 
Cortex-M: 
http://labapart.com/blogs/3-the-importance-of-the-toolchain-version-in-embedded-space

von Frank D. (sinx)


Lesenswert?

benwilliam schrieb:
> und hat sich der wechsel gelohnt?

Jepp, alleine schon wegen den deutlich besseren und aussagekräftigeren 
Fehlermeldungen, die die Fehlersuche erleichtern. Die Warnungen helfen 
auch beim Vermeiden von Fehlern. Z.B. wird beim Schreiben der Zahl 
0xabcde in einen uint8_t eine Warnung ausgegeben, die man auch kapiert 
("bla ... 703710 wird zu 222").

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.