GCC ARM Embedded to oprogramowanie open source i swobodnie dystrybuowane, które zawiera gotowy zestaw narzędzi GNU dla procesorów ARM Cortex-R i Cortex-M. Projekt ma na celu przeniesienie narzędzi GNU do procesorów wbudowanych ARM, pomagając programistom w różnych zadaniach kompilacji.
Obsługuje wszystkie ważne procesory Cortex ARM
Oprogramowanie zostało stworzone od podstaw w celu obsługi wszystkich ważnych procesorów Cortex ARM, w tym Cortex-R4, Cortex-R5, Cortex-R7, Cortex-M3, Cortex-M4, Cortex-M7, Cortex-M0 +, i Cortex-M0.
Będąc utrzymywanym przez pracowników ARM, oprogramowanie GCC ARM Embedded jest częścią stałego zaangażowania w ulepszanie i utrzymywanie wsparcia dla architektury GNU Compiler Collection (GCC) dla architektury ARM.
Pierwsze kroki z GCC ARM Embedded
Aby użyć oprogramowania GCC ARM Embedded na swoim komputerze GNU / Linux, powinieneś pobrać pakiet binarny, który zawiera wszystkie gotowe pliki binarne, które potrzebujesz, aby zacząć. Zapisz archiwum gdzieś na swoim komputerze, najlepiej w katalogu domowym, użyj narzędzia do zarządzania archiwami, aby wyodrębnić jego zawartość.
Następnie otwórz aplikację Terminal i przejdź do lokalizacji, w której wyodrębniono plik archiwum (np. cd / home / softoware / gcc-arm-none-eabi-4_9-2014q4). Wszystkie pliki binarne znajdują się w & binb & rsquo; folder.
Dostępność i obsługiwane platformy sprzętowe
GCC ARM Embedded jest dystrybuowany jako archiwa binarne i źródłowe, a także jako repozytorium PPA dla najnowszych wersji systemu operacyjnego Ubuntu Linux, obsługujących architekturę 32- i 64-bitową. Należy pamiętać, że oprogramowanie jest również zgodne z systemami operacyjnymi Mac OS X i Microsoft Windows.
Co nowego w tej wersji:
- Naprawiono regresję wydajności powf / expf / exp2f / logf / log2f
- Dodano obsługę Arm Cortex-M33 bez DSP poprzez -mcpu = cortex-m33 + nodsp
- Dodano mapowania multilib Armv8-R
- Napraw wymagania dotyczące budowania dla obsługi GDB Tui
- Włączono specyfikator formatu C99 IO w newlib
- Naprawiono nieodłączne wewnętrzne rozszerzenie cmse_nonsecure_caller Armv8-M
- Napraw awarię w __builtin_arm_set_fpscr wbudowanym GCC
- Błąd LTO https://bugs.launchpad.net/gcc-arm-embedded/+bug/1747966 został naprawiony w poprzednim wydaniu. Nota o wydaniu zaktualizowana, aby odzwierciedlić zmianę.
- Naprawiono problem z budowaniem pliku cmse.c libgcc bez nagłówków
- Naprawiono problem z kompatybilnością arm_cmse.h C99
Co nowego w wersji 7-2017-q4:
- Wsparcie dla Armv8-R i Cortex-R52 .
- Napraw dla https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69866
- GDB zbudowany z włączonym C ++ dla Mac OS X
Co nowego w wersji 6.2:
- Funkcje:
- Wszystkie funkcje GCC 6 oraz najnowsze funkcje główne:
- Pełna obsługa ARMv8-M, włącznie z atomami i rozszerzeniami bezpieczeństwa
- Obsługa PEMA STRUKTURY ARM dla linii bazowej ARMv7-M i ARMv8-M oraz linii głównej
- Obsługa wewnętrznego wsparcia dla procesorów
- Obsługa Cortex-M23 i Cortex-M33
- -muszenie opcjonalne dla urządzeń Cortex-M
- Obsługa ponownego kierowania OS na procedury blokowania w newlib
- Zaawansowana implementacja memchr zoptymalizowana pod kątem SIMD w newlib
- Włącz opcje ustawień instalatora Windows w wierszu poleceń
- Ważne zmiany w 6 wydaniu aktualizacji 2:
- GCC niepoprawnie przyjmuje, że Cortex-r [578] ma 64-bitową, jednokopiową, atomową LDRD https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80082
- Pseudo-op LDR generuje MOVS https://bugs.launchpad.net/gcc-arm-embedded/+bug/1682620
- Naprawiono wbudowane obiekty pobierające i ustawiające FPSCR
- Biblioteki importu SG, które zostały utworzone jako pliki wykonywalne, teraz są przystosowane do relokacji
- Włącz opcje ustawień instalatora Windows w wierszu poleceń
- Obsługa PURECODE włączona dla ARMv8-M.Baseline
- Zaawansowana implementacja memchr zoptymalizowana pod kątem SIMD w newlib
Co nowego w wersji 5.4:
- Nowe funkcje:
- ARMv8-M Podstawowa i podstawowa obsługa wersji beta:
- ARMv8-M Podstawowa obsługa atomów
- Obsługa ARM PureCode
- Kciuki-2 długie okleiny oddziału
- Ważne błędy naprawione w 5 aktualizacji 3 wydania:
- Usunięto specjalne rejestry MSP_S i PSP_S MRS / MSR
- Naprawiono wykrywanie wersji kciuka w generowaniu fornirów
- Naprawiono dokumentację dotyczącą newlib-nano w release.txt
Co nowego w wersji 5.3:
- Funkcje:
- Wszystkie funkcje GCC 5 oraz najnowsze funkcje główne:
- Obsługa Cortex-R8
- Korekta wydajności Cortex-M7
- Zoptymalizowanie ręcznych małych ładunków endianów i dużych obciążeń endian
- poprawiono przeskakiwanie wątków, eliminując konieczność stosowania "szybkiego przełączania"
- ARMv8-M Obsługa linii bazowej i Mainline alpha:
- nie uwzględniono atomów dla linii bazowej ARMv8-M
- ARMv8-M Rozszerzenia zabezpieczeń, wsparcie Alpha
- Optymalizacje biblioteki Thumb-1:
- https://gcc.gnu.org/ml/gcc-patches/2015-10/msg01282.html
- Optymalizacja CRC:
- https://gcc.gnu.org/ml/gcc-patches/2015-11/msg02046.html
- Mniejsza procedura obsługi newlib-nano
Co nowego w wersji 5.2:
- Wszystkie funkcje GCC 5 oraz najnowsze funkcje główne:
- Korekta wydajności Cortex-M7
- Zoptymalizowanie ręcznych małych ładunków endianów i dużych obciążeń endian
- poprawiono przeskakiwanie wątków, eliminując konieczność stosowania "szybkiego przełączania"
- ARMv8-M Obsługa linii bazowej i Mainline alpha:
- nie uwzględniono atomów dla linii bazowej ARMv8-M
- Rozszerzenia zabezpieczeń ARMv8-M są obsługiwane tylko w przypadku montażu i podstawowego łączenia
- Optymalizacje biblioteki Thumb-1
- https://gcc.gnu.org/ml/gcc-patches/2015-10/msg01282.html
- Optymalizacja CRC
- https://gcc.gnu.org/ml/gcc-patches/2015-11/msg02046.html
Co nowego w wersji 4.9 Aktualizacja 3:
- Funkcje:
- Wszystkie funkcje GCC 4.9 oraz najnowsze funkcje główne
- Obsługa Cortex-M7
- Mała pomoc wielokrotna z opcjami:
- . -mcpu = cortex-m1.small-multiply
- . -mcpu = cortex-m0.small-multiply
- . -mcpu = cortex-m0plus.small-multiply
- Dedykowane multilib dla Cortex-M7
- - cortex-m7
- - cortex-m7 / fpu / fpv5-d16
- - cortex-m7 / fpu / fpv5-sp-d16
- - cortex-m7 / softfp / fpv5-d16
- - cortex-m7 / softfp / fpv5-sp-d16
- Zdefiniuj procedury aeabi_memcpy i aeabi_memcpy4 w newlib.
- Zdefiniuj procedury aeabi_memmove, aeabi_memset i aeabi_memclr w newlib.
- Optymalizacje biblioteki Thumb-1.
- Dodatkowe optymalizacje rozmiaru kodu.
- Dodaj gdb python build (arm-none-eabi-gdb-py).
- Plik obiektu bez sekcji atrybutów można połączyć z innymi.
- Opcje -mapcs, -mapcs-frame, -mtpcs-frame i -mtpcs-leaf-frame będą uznawane za przestarzałe w gcc 5.0, dlatego zalecamy ich unikać.
- Ważne błędy zostały naprawione w wersji 4.9 aktualizacji 3:
- Naprawiono niezgodność specyfikatora formatu Newlib. https://answers.launchpad.net/gcc-arm-embedded/+question/269083
- Naprawiono niezgodność makr Newlib. https://answers.launchpad.net/gcc-arm-embedded/+question/269177
- Poprawka błędu kodowania asemblera. https://sourceware.org/ml/binutils/2015-08/msg00028.html
Co nowego w wersji 4.9 Aktualizacja 2:
- Funkcje:
- Wszystkie funkcje GCC 4.9 oraz najnowsze funkcje główne
- Obsługa Cortex-M7
- Mała pomoc wielokrotna z opcjami:
- -mcpu = cortex-m1.small-multiply
- -mcpu = cortex-m0.small-multiply
- -mcpu = cortex-m0plus.small-multiply
- Dedykowane narzędzie multilib dla Cortex-M7:
- cortex-m7
- cortex-m7 / fpu / fpv5-d16
- cortex-m7 / fpu / fpv5-sp-d16
- cortex-m7 / softfp / fpv5-d16
- cortex-m7 / softfp / fpv5-sp-d16
- Zdefiniuj procedury aeabi_memcpy i aeabi_memcpy4 w newlib.
- Zdefiniuj procedury aeabi_memmove, aeabi_memset i aeabi_memclr w newlib.
- Optymalizacje biblioteki Thumb-1.
- Dodatkowe optymalizacje rozmiaru kodu.
- Dodaj gdb python build (arm-none-eabi-gdb-py).
- Plik obiektu bez sekcji atrybutów można połączyć z innymi.
- Opcje -mapcs, -mapcs-frame, -mtpcs-frame i -mtpcs-leaf-frame będą uznawane za przestarzałe w gcc 5.0, dlatego zalecamy ich unikać.
- Ważne błędy zostały naprawione w aktualizacji 4.9 aktualizacji 2:
- Zaktualizowano jakiś wbudowany kod zespołu w Newlib, aby działał ze starymi obiektami docelowymi https://www.sourceware.org/ml/newlib/2015/msg00386.html
- Unikaj strat spowodowanych promocją rozmiaru sekcji https://answers.launchpad.net/gcc-arm-embedded/+question/262160
- Lokalne zmienne rejestrów nie działają poprawnie z wbudowanymi operacjami asm https://bugs.launchpad.net/gcc-arm-embedded/+bug/1411655
Co nowego w wersji 4.9 Aktualizacja 1:
- Funkcje:
- Wszystkie funkcje GCC 4.9 oraz najnowsze funkcje główne
- - Obsługa Cortex-M7
- - Mała wielokrotna obsługa z opcjami:
- . -mcpu = cortex-m1.small-multiply
- . -mcpu = cortex-m0.small-multiply
- . -mcpu = cortex-m0plus.small-multiply
- Dedykowane multilib dla Cortex-M7
- - cortex-m7
- - cortex-m7 / fpu / fpv5-d16
- - cortex-m7 / fpu / fpv5-sp-d16
- - cortex-m7 / softfp / fpv5-d16
- - cortex-m7 / softfp / fpv5-sp-d16
- Zdefiniuj procedury aeabi_memcpy i aeabi_memcpy4 w newlib.
- Zdefiniuj procedury aeabi_memmove, aeabi_memset i aeabi_memclr w newlib.
- Optymalizacje biblioteki Thumb-1.
- Dodatkowe optymalizacje rozmiaru kodu.
- Dodaj gdb python build (arm-none-eabi-gdb-py).
- Plik obiektu bez sekcji atrybutów można połączyć z innymi.
- Opcje -mapcs, -mapcs-frame, -mtpcs-frame i -mtpcs-leaf-frame będą uznawane za przestarzałe w gcc 5.0, dlatego zalecamy ich unikać.
- Ważne błędy zostały naprawione w wersji 4.9 aktualizacji 1:
- LD backport, aby zachować sekcję o zerowej długości w ostatecznym pliku axf
- Napraw awarię GDB spowodowaną odrzuceniem zgrupowanych sekcji debugowania
- Dodaj wzór kata 1, aby zalegalizować instrukcję, która przenosi komputer do niskiego rejestru
- Zaktualizuj GCC, aby wygenerować Tag_ABI_HardFP_use na najnowszym dokumencie EABI
- Wysoki wysoki rejestr nie został zapisany w funkcji prolog za pomocą -Os
- - var-info-path-expression nie działa w przypadku zagnieżdżonych struktur
Co nowego w wersji 4.9:
- Oddział do symbolu zdefiniowany w skrypcie linkera http: // źródło .org / bugzilla / show_bug.cgi? id = 15302
- GDB został zaktualizowany do wersji 7.6, aby lepiej obsługiwać karły-3 i nowsze standardowe https://answers.launchpad.net/gcc-arm-embedded/+question/234131 https://bugs.launchpad.net/gcc-arm -embedded / + bug / 1248981
- ICE przy używaniu wysokiego rejestru jako rejestr bazowy PIC dla celu kciuka-1
Co nowego w wersji 4.7 Aktualizacja 3:
- Awaria podczas kompilacji aplikacji o ustalonym punkcie z https LTO : //answers.launchpad.net/gcc-arm-embedded/+question/235582
- Oddział do miejsca docelowego określony przez symbol skryptu linkera https://sourceware.org/bugzilla/show_bug.cgi?id=15302
- Hostowany przez system Windows gdb zawiesza się w jakimś punkcie przerwania https://bugs.launchpad.net/gcc-arm-embedded/+bug/1197615
- Nano brakujące odwołanie do _mallopt_r https://mbed.org/forum/mbed/topic/2701/?page=3#comment-22549
Co nowego w wersji 4.7 Aktualizacja 2:
- Aktualizuj dokument / *. texi do najnowszego pakietu texinfo https: // answer.launchpad.net/gcc-arm-embedded/+question/227685
- Napraw ICE z opcją -mtune https://answers.launchpad.net/gcc-arm-embedded/+question/227667
- Napraw opcję --debug w skrypcie kompilacji https://answers.launchpad.net/gcc-arm-embedded/+question/229127
- Napraw niepotrzebne zapisywanie lr w funkcji kciuka 1 liścia
Co nowego w wersji 4.7 Aktualizacja 1:
- Ta wersja aktualizacji rozwiązuje kilka problemów znalezionych w 4,7 główne:
- Wersja hosta systemu Mac OS ma zależność od Pythona
- Błąd LTO po zainstalowaniu w katalogu z miejscem w ścieżce o nazwie http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50293
- Załaduj adres sekcji danych zawierających wyrównane dane http://sourceware.org/bugzilla/show_bug.cgi?id=15222
- libnosys nie sprawdza przepełnienia stosu https://answers.launchpad.net/gcc-arm-embedded/+question/218972
- librdimon.a nie pasuje do newlib-nano
- Otrzymuje również konfigurację kompilacji dostosowaną, aby umożliwić:
- Podstawowy profil Cortex-A multilib
- LTO (Optymalizacja czasu połączenia)
Komentarze nie znaleziono