Czy ktoś ma sposób w jaki sposób zbudować toolchain llvm + clang za pomocą binutils i newlib i jak z niego korzystać?jak korzystać z llvm + clang do kompilacji dla stm32
- host: Linux AMD64
- target: cortex-m3, STM32
- c-lib: newlib
- assembler GNU jak
Czy ktoś ma sposób w jaki sposób zbudować toolchain llvm + clang za pomocą binutils i newlib i jak z niego korzystać?jak korzystać z llvm + clang do kompilacji dla stm32
Niestety, w tej chwili dzyń nie obsługuje elastyczne ustawienia krzyżowej kompilacji. Najprawdopodobniej będziesz musiał wywołać niezbędne narzędzia z wszystkimi niezbędnymi argumentami.
Rozpocznij od budowania llvm + clang za pomocą --target = thumbv7-eabi configure argument (pamiętaj, że będziesz potrzebował llvm + clang z wczoraj). Możesz również określić opcję -enable-targets = arm. Spowoduje to, że polecenie będzie generować kod dla kciuka domyślnie. Następnie możesz wywołać clang -mcpu = cortex-m3, aby wygenerować kod dla ciebie.
Będziesz musiał dostarczyć wszystkie niezbędne zawierać ścieżki/bibliotekę rąk poprzez -I/-l, itp
Jeśli jesteś zadowolony z jakiegoś C++ hacking, można napisać konieczne „HostInfo”, a więc wywoła odpowiednie narzędzia i zapewni odpowiednie ścieżki automagicznie.
Spójrz na mbed_samples na github
https://github.com/dwelch67/mbed_samples/
i innych projektów mam w github (z wykorzystaniem LLVM, ARM, MIPS i oparte na bazie MSP430). Z półki narzędzia llvm (dobrze clang) pracują dobrze kompilując krzyż dla ARM, itd.
mbed to kort-1 m-pc, a stm32 to st-cortex-m, podstawy są tym samym ustawieniem rejestru zmian. Mam przykładowy katalog stm32vld, jeśli chcesz mieć jakieś specyficzne dla stm32 przykłady używając llvm (używając 64-bitowego hosta AMD dla Linuxa), to nie jest problem.
Stworzyłem framework oprogramowania sprzętowego - PolyMCU https://github.com/labapart/polymcu - który jest oparty na CMake obsługującym GCC i LLVM. Ponieważ jest on oparty na CMake, możesz zbudować oprogramowanie układowe w systemie Linux/Windows/MacOS. Używa również Newlib - wygląda na to, że masz wszystkie wymagania!
Napisałem też bloga, gdzie w porównaniu GCC i LLVM budować wielkość na ARM Cortex-M: http://labapart.com/blogs/3-the-importance-of-the-toolchain-version-in-embedded-space interesujące rezultaty, Clang wygenerowany kod nie jest dużo większy niż GCC na Cortex-M ...
https://github.com/dwelch67/stm32vld/tree/master/stm32f4d mają pewne przykłady stm32 teraz gcc i llvm/clang –
Dziękuję za wzmiankę (i wykonanie spójnej pracy) dla MIPS i MSP430. – pfalcon