GCC ARM Embedded è un software open source e liberamente distribuito che contiene una toolchain GNU pre-costruita per processori ARM Cortex-R e Cortex-M. Il progetto mira a portare gli strumenti GNU in ARM Embedded Processors, aiutando gli sviluppatori con varie attività di compilazione.
Supporta tutti i processori ARM Cortex importanti
Il software è stato creato da zero per supportare tutti gli importanti processori Cortex ARM, tra cui Cortex-R4, Cortex-R5, Cortex-R7, Cortex-M3, Cortex-M4, Cortex-M7, Cortex-M0 +, e Cortex-M0.
Essendo gestito dai dipendenti ARM, il software GCC ARM Embedded è parte di un impegno costante per migliorare e mantenere il supporto GCC (GNU Compiler Collection) per l'architettura ARM.
Introduzione a GCC ARM Embedded
Per usare il software GCC ARM Embedded sul tuo computer GNU / Linux, dovresti scaricare il pacchetto binario, che contiene tutti i binari pre-costruiti necessari per iniziare. Salva l'archivio da qualche parte sul tuo computer, preferibilmente la tua directory Home, usa un'utilità di gestione archivio per estrarne il contenuto.
Quindi apri un'app Terminal e vai alla posizione in cui hai estratto il file di archivio (ad esempio cd / home / softoware / gcc-arm-none-eabi-4_9-2014q4). Tutti i file binari si trovano nel & lsquo; bin & rsquo; cartella.
Disponibilità e piattaforme hardware supportate
GCC ARM Embedded è distribuito come archivio binario e sorgente, nonché un repository PPA per le ultime versioni del sistema operativo Ubuntu Linux, supportando entrambe le architetture a 32 e 64 bit. Tieni presente che il software è compatibile anche con i sistemi operativi Mac OS X e Microsoft Windows.
Novità in questa versione:
- Corretta la regressione delle prestazioni powf / expf / exp2f / logf / log2f
- Aggiunto il supporto per Arm Cortex-M33 senza DSP via -mcpu = cortex-m33 + nodsp
- Aggiunti i mapping multilib Armv8-R
- Correggere i requisiti di compilazione per il supporto GDB tui
- Abilitato specificatore di formato I / O C99 in newlib
- Corretto cmse_nonsecure_caller Armv8-M Security Extension intrinsic
- Correzione del crash in __builtin_arm_set_fpscr GCC integrato
- L'errore LTO https://bugs.launchpad.net/gcc-arm-embedded/+bug/1747966 è stato corretto nella versione precedente. Nota di rilascio aggiornata per riflettere la modifica.
- Risolto il problema con la creazione di cmse.c di libgcc senza intestazioni
- Risolto il problema con la compatibilità con C_cmse.h C99
Novità nella versione 7-2017-q4:
- Supporto Armv8-R e Cortex-R52 .
- Correzione per https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69866
- GDB creato con C + + abilitato per Mac OS X
Novità della versione nella versione 6.2:
- Caratteristiche:
- Tutte le funzionalità di GCC 6, oltre alle più recenti funzioni principali:
- Supporto completo per ARMv8-M che include atomica e estensioni di sicurezza
- Supporto ARM PURECODE per ARMv7-M e ARMv8-M Linea di base e linea principale
- Supporto intrinseco del co-processore
- Supporto per Cortex-M23 e Cortex-M33
- -mthumb opzionale per i dispositivi Cortex-M
- Supporto per il retargeting OS delle routine di blocco in newlib
- Implementazione avanzata di memchr ottimizzata da SIMD in newlib
- Abilita le opzioni di impostazione per il programma di installazione di Windows sulla riga di comando
- Cambiamenti importanti nella versione 6 dell'aggiornamento 2:
- GCC assume erroneamente che Cortex-r [578] abbia un LDRD atomico a 64 bit a copia singola https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80082
- LDR pseudo-op genera MOVS https://bugs.launchpad.net/gcc-arm-embedded/+bug/1682620
- Corretti i getter e setter incorporati di FPSCR
- Le librerie di importazione SG che sono state create come eseguibili ora sono fissate su rilocabili
- Abilita le opzioni di impostazione per il programma di installazione di Windows sulla riga di comando
- Supporto PURECODE abilitato per ARMv8-M.Baseline
- Implementazione avanzata di memchr ottimizzata da SIMD in newlib
Novità della versione nella versione 5.4:
- Nuove funzionalità:
- Supporto beta della linea di base e della linea principale ARMv8-M:
- Supporto atomico di base ARMv8-M
- Supporto ARM PureCode
- Impiallacciatura ramificata Thumb-2
- Bug importanti risolti nella versione 5 di aggiornamento 3:
- Rimossi i registri speciali MSP_S e PSP_S MRS / MSR
- Rilevamento della versione Fixed Thumb nella generazione di faccette
- Corretta la documentazione su newlib-nano in release.txt
Novità in nella versione 5.3:
- Caratteristiche:
- Tutte le funzioni di GCC 5, oltre alle più recenti funzioni principali:
- Supporto per Cortex-R8
- Ottimizzazione delle prestazioni di Cortex-M7
- ottimizzazione dei carichi manuali little endian e big endian
- miglioramento del threading di salto che elimina la necessità di -ftree-switch-shortcut
- Supporto alfa di base e Mainline ARMv8-M:
- atomics non incluso per la linea di base ARMv8-M
- Estensioni di sicurezza ARMv8-M Supporto alfa
- Ottimizzazioni della libreria Thumb-1:
- https://gcc.gnu.org/ml/gcc-patches/2015-10/msg01282.html
- Ottimizzazione CRC:
- https://gcc.gnu.org/ml/gcc-patches/2015-11/msg02046.html
- Gestore di terminazione più piccolo per newlib-nano
Novità in nella versione 5.2:
- Tutte le funzionalità di GCC 5, oltre alle più recenti funzioni principali:
- Ottimizzazione delle prestazioni di Cortex-M7
- ottimizzazione dei carichi manuali little endian e big endian
- miglioramento del threading di salto che elimina la necessità di -ftree-switch-shortcut
- Supporto alfa di base e Mainline ARMv8-M:
- atomics non incluso per la linea di base ARMv8-M
- Le estensioni di sicurezza di ARMv8-M sono supportate solo per il montaggio e il collegamento di base
- Ottimizzazioni della libreria Thumb-1
- https://gcc.gnu.org/ml/gcc-patches/2015-10/msg01282.html
- Ottimizzazione CRC
- https://gcc.gnu.org/ml/gcc-patches/2015-11/msg02046.html
Novità nella versione 4.9 Aggiornamento 3:
- Caratteristiche:
- Tutte le funzioni di GCC 4.9, oltre alle più recenti funzioni principali
- Supporto per Cortex-M7
- Piccolo supporto multiplo con opzioni:
- . -mcpu = cortex-m1.small-moltiplicare
- . -mcpu = cortex-m0.small-moltiplicare
- . -mcpu = cortex-m0plus.small-moltiplicare
- Multiib dedicato per 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
- Definisci le routine aeabi_memcpy e aeabi_memcpy4 in newlib.
- Definisci le routine aeabi_memmove, aeabi_memset e aeabi_memclr in newlib.
- Ottimizzazioni della libreria Thumb-1.
- Ottimizzazioni delle dimensioni del codice aggiuntive.
- Aggiungi gdb python build (arm-none-eabi-gdb-py).
- Il file oggetto senza sezione attributi può essere collegato con altri.
- Le opzioni -mapcs, -mapcs-frame, -mtpcs-frame e -mtpcs-leaf-frame saranno deprecate in gcc 5.0, quindi consiglia di evitarli.
- Bug importanti risolti nella versione 4.9 di aggiornamento 3:
- Correzione per la mancata corrispondenza degli specificatori del formato Newlib. https://answers.launchpad.net/gcc-arm-embedded/+question/269083
- Correzione di mancata corrispondenza delle macro Newlib. https://answers.launchpad.net/gcc-arm-embedded/+question/269177
- Correzione di bug per la codifica di Assembler. https://sourceware.org/ml/binutils/2015-08/msg00028.html
Novità nella versione 4.9 Aggiornamento 2:
- Caratteristiche:
- Tutte le funzioni di GCC 4.9, oltre alle più recenti funzioni principali
- Supporto per Cortex-M7
- Piccolo supporto multiplo con opzioni:
- -mcpu = cortex-m1.small-moltiplicare
- -mcpu = cortex-m0.small-moltiplicare
- -mcpu = cortex-m0plus.small-moltiplicare
- Multiib dedicato per 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
- Definisci le routine aeabi_memcpy e aeabi_memcpy4 in newlib.
- Definisci le routine aeabi_memmove, aeabi_memset e aeabi_memclr in newlib.
- Ottimizzazioni della libreria Thumb-1.
- Ottimizzazioni delle dimensioni del codice aggiuntive.
- Aggiungi gdb python build (arm-none-eabi-gdb-py).
- Il file oggetto senza sezione attributi può essere collegato con altri.
- Le opzioni -mapcs, -mapcs-frame, -mtpcs-frame e -mtpcs-leaf-frame saranno deprecate in gcc 5.0, quindi consiglia di evitarli.
- Bug importanti risolti nella versione 4.9 di aggiornamento 2:
- Aggiornato alcuni codici di assembly inline in Newlib per lavorare con vecchi target https://www.sourceware.org/ml/newlib/2015/msg00386.html
- Evita gli sprechi causati dalla promozione della dimensione della sezione https://answers.launchpad.net/gcc-arm-embedded/+question/262160
- Le variabili del registro locale non funzionano correttamente con gli operandi in linea asm https://bugs.launchpad.net/gcc-arm-embedded/+bug/1411655
Novità nella versione 4.9 Aggiornamento 1:
- Caratteristiche:
- Tutte le funzioni di GCC 4.9, oltre alle più recenti funzioni principali
- - Supporto per Cortex-M7
- - Piccolo supporto multiplo con opzioni:
- . -mcpu = cortex-m1.small-moltiplicare
- . -mcpu = cortex-m0.small-moltiplicare
- . -mcpu = cortex-m0plus.small-moltiplicare
- Multiib dedicato per 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
- Definisci le routine aeabi_memcpy e aeabi_memcpy4 in newlib.
- Definisci le routine aeabi_memmove, aeabi_memset e aeabi_memclr in newlib.
- Ottimizzazioni della libreria Thumb-1.
- Ottimizzazioni delle dimensioni del codice aggiuntive.
- Aggiungi gdb python build (arm-none-eabi-gdb-py).
- Il file oggetto senza sezione attributi può essere collegato con altri.
- Le opzioni -mapcs, -mapcs-frame, -mtpcs-frame e -mtpcs-leaf-frame saranno deprecate in gcc 5.0, quindi consiglia di evitarli.
- Bug importanti risolti nella versione 4.9 di aggiornamento 1:
- Backport LD per mantenere la sezione di lunghezza zero nel file axf finale
- Correzione degli arresti anomali di GDB causati dall'eliminazione delle sezioni di debug raggruppate
- Aggiungi un pattern ins1 Thumb1 per legalizzare l'istruzione che sposta il pc al registro basso
- Aggiorna GCC per generare Tag_ABI_HardFP_use per l'ultimo EABI doc
- Il registro alto live non viene salvato nel prologo di funzione con -Os
- - var-info-path-expression ha esito negativo per le strutture nidificate
Novità nella versione 4.9:
- Ramo al simbolo definito nello script linker http: // sourceware .org / Bugzilla / show_bug.cgi? id = 15302
- GDB è aggiornato a 7.6 per supportare meglio lo standard nano-3 e successivo https://answers.launchpad.net/gcc-arm-embedded/+question/234131 https://bugs.launchpad.net/gcc-arm -Embedded / + bug / 1.248.981
- ICE quando usi registro alto come registro base PIC per target thumb-1
Novità nella versione 4.7 Aggiornamento 3:
- Blocco durante la compilazione di app in virgola fissa con https LTO : //answers.launchpad.net/gcc-arm-embedded/+question/235582
- Branch to target specificato da un simbolo script linker https://sourceware.org/bugzilla/show_bug.cgi?id=15302
- Blocco di gdb ospitato da Windows in alcuni punti di interruzione https://bugs.launchpad.net/gcc-arm-embedded/+bug/1197615
- Nano riferimento mancante a _mallopt_r https://mbed.org/forum/mbed/topic/2701/?page=3#comment-22549
Novità nella versione 4.7 Aggiornamento 2:
- Esegui l'upgrade di doc / *. texi all'ultimo pacchetto texinfo https: // answers.launchpad.net/gcc-arm-embedded/+question/227685
- Correggere ICE con l'opzione -mtune https://answers.launchpad.net/gcc-arm-embedded/+question/227667
- Correggi l'opzione --debug nello script di costruzione https://answers.launchpad.net/gcc-arm-embedded/+question/229127
- Correzione non necessaria per il salvataggio nella funzione thumb1 leaf
Novità nella versione 4.7 Aggiornamento 1:
- Questa versione di aggiornamento risolve un paio di problemi riscontrati 4,7 principali:
- La versione host di Mac OS ha dipendenza da python
- Errore LTO se installato in una directory con spazio nel nome del percorso http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50293
- Carica l'indirizzo delle sezioni di dati contenenti dati allineati http://sourceware.org/bugzilla/show_bug.cgi?id=15222
- libnosys non controlla l'overflow dello stack https://answers.launchpad.net/gcc-arm-embedded/+question/218972
- librdimon.a non corrisponde a newlib-nano
- Viene anche modificata la configurazione della build per abilitare:
- Basic Cortex-A profile multilib
- LTO (Link Time Optimization)
I commenti non trovato