Qualcuno ha informazioni su come costruire un llvm + clang toolchain usando binutils e newlib e come usarlo?come usare llvm + clang per compilare per stm32
- host: Linux, AMD64
- obiettivo: Cortex-M3, STM32
- c-lib: newlib
- assembler: GNU come
Qualcuno ha informazioni su come costruire un llvm + clang toolchain usando binutils e newlib e come usarlo?come usare llvm + clang per compilare per stm32
Purtroppo, in questo momento clang non supporta impostazioni flessibili di compilazione incrociata. Quindi, molto probabilmente avrai bisogno di invocare gli strumenti necessari con tutti gli argomenti necessari.
Inizia con la costruzione di llvm + clang usando l'argomento --target = thumbv7-eabi configure (tieni presente che per questo motivo avrai bisogno di llvm + clang come ieri). Potresti anche specificare --enable-targets = arm. In questo modo il clang genererà il codice per il pollice per impostazione predefinita. Dopo questo puoi invocare clang -mcpu = cortex-m3 per generare il codice per te.
Si dovrà fornire tutte le necessarie includere percorsi/libreria da mani tramite -I/-L, ecc
Se sei felice con qualche C++ hacking, è possibile scrivere necessario "HostInfo", così invocherà gli strumenti giusti e fornirà i percorsi giusti in modo automatico.
Guarda mbed_samples a github
https://github.com/dwelch67/mbed_samples/
E altri progetti che ho a github (che uso LLVM, braccio basa, MIPS based e basata MSP430). Gli strumenti llvm off-the-shelf (ben clang) funzionano bene la compilazione incrociata per ARM, ecc.
il mbed è una lpc corteccia-me lo stm32 è una st corteccia-m, le basi sono le stesse impostazioni del registro delle modifiche. Ho una directory di esempio stm32vld, se vuoi alcuni esempi specifici di stm32 usando llvm (usando un host Linux AMD a 64 bit), non è un problema.
Ho creato un framework del firmware - PolyMCU https://github.com/labapart/polymcu - basato su CMake che supporta GCC e LLVM. Poiché è basato su CMake, puoi creare il tuo firmware su Linux/Windows/MacOS. Utilizza anche Newlib - sembra che ci siano tutte le tue esigenze!
Ho anche scritto un blog dove ho confrontato GCC e LLVM costruire dimensioni su ARM Cortex-M: http://labapart.com/blogs/3-the-importance-of-the-toolchain-version-in-embedded-space Risultati interessanti, Clang generato codice non è molto più grande di GCC su Cortex-M ...
https://github.com/dwelch67/stm32vld/tree/master/stm32f4d hanno alcuni esempi stm32 ora gcc e llvm/clang –
Grazie per aver menzionato (e fatto un lavoro coerente per) MIPS e MSP430 btw. – pfalcon