|  | 

Segger emRun++


emRun++ è una libreria standard C++ completa, utilizzabile con qualsiasi toolchain. È stata specificamente ottimizzata per sistemi e applicazioni embedded. In quanto linguaggio di programmazione moderno, il C++ sta diventando sempre più importante nel settore embedded, offrendo agli sviluppatori opzioni sempre più vaste. Con questo obiettivo, emRun++ viene costantemente aggiornata per soddisfare i più moderni standard C++.

emRun++ è anche parte integrante dell’IDE Embedded Studio di SEGGER. Inclusa nella toolchain pronta all’uso e nella libreria runtime C di Embedded Studio, è disponibile immediatamente e possiede tutte le caratteristiche che rendono la programmazione orientata agli oggetti (OOP) veloce e semplice.

Caratteristiche principali

  • Libreria standard C++ completa.
  • Compatibilità con i comuni standard C++, incluso C++17.
  • Integrazione totale con emRun (libreria runtime C).
  • Gestione dinamica della memoria, ottimizzata per sistemi embedded.
  • Gestione delle eccezioni, incluso lo stack unwinding su tutti i target supportati.

Funzionalità C++ moderne

emRun++ implementa classi e funzioni secondo gli standard ISO. Integra il set completo di funzionalità dello standard C++17 definito dall’Organizzazione Internazionale per la Normalizzazione (ISO).

La libreria fornisce tutti i file header C++ standard insieme a wrapper per gli header della libreria runtime C. L’implementazione include il name mangling delle funzioni C standard, mappando ad esempio cos(float) e cos(double) ai rispettivi equivalenti C cosf() e cos().


Allocazione dinamica della memoria

Le moderne applicazioni C++ si affidano all’allocazione dinamica della memoria. Gli oggetti risiedono in memoria solo mentre vengono utilizzati. Gli oggetti a lunga durata vengono solitamente creati con new e distrutti con delete. Mentre il C++ si occupa di chiamare rispettivamente i costruttori e i distruttori degli oggetti, la libreria runtime C sottostante gestisce la memoria fisica.

emRun++ implementa new e delete in modo che utilizzino le routine alloc e free della libreria runtime emRun, garantendo un uso efficiente della memoria heap con il minimo sovraccarico (overhead).


Gestione delle eccezioni

Il C++ definisce l’uso delle eccezioni, a differenza del C dove la responsabilità di recuperare manualmente un errore e propagarlo ai chiamanti ricade interamente sull’utente. La gestione delle eccezioni offre un approccio sistematico e robusto per affrontare errori che non possono essere risolti localmente.

Quando viene lanciata un’eccezione in un blocco try, tutti gli oggetti costruiti all’interno del blocco devono essere distrutti e lo stack deve essere “srotolato” (stack unwinding). Per supportare ciò, emRun++ implementa lo stack unwinding specifico per ogni architettura target supportata.


Supporto di basso livello

I compilatori C++ definiscono un’interfaccia binaria dell’applicazione (ABI) che stabilisce, ad esempio, come vengono disposti gli oggetti, come funziona il name mangling o come vengono implementate le funzioni virtuali.

emRun++ implementa le funzioni di basso livello della C++ ABI alle quali il compilatore aggiunge implicitamente chiamate durante la generazione del codice. Ciò consente alla libreria C++ di essere utilizzata immediatamente con qualsiasi toolchain.


Occupazione di memoria (Memory Footprint)

I seguenti dati mostrano l’utilizzo della ROM (in byte) confrontando emRun++ con la libreria standard GNU libstdc++.

Arm (32-bit)

Progetto di testemRun++libstdc++
Empty (Vuoto)4969.244
STL_List11.19269.409
STL_Map11.46470.217

RISC-V (32-bit)

Progetto di testemRun++libstdc++
Empty (Vuoto)676858
STL_List11.86890.848
STL_Map12.38091.620

RISC-V (64-bit)

Progetto di testemRun++libstdc++
Empty (Vuoto)542888
STL_List11.41487.314
STL_Map11.75888.104


Articoli simili

  •  |  | 

    Segger embOS

    Panoramica embOS è una famiglia di sistemi operativi in tempo reale (RTOS) progettata come base per lo sviluppo di applicazioni embedded. Giunto al suo quarto decennio di utilizzo e perfezionamento continuo, embOS offre l’affidabilità e le prestazioni che sostengono il firmware di ogni SEGGER Flasher, J-Link e J-Trace. Distribuito in miliardi di dispositivi in un’ampia…

  •  |  | 

    Segger emPower OS

    emPower OS di SEGGER è un sistema operativo completo che fornisce l’ambiente ideale per qualsiasi sviluppatore impegnato nella creazione di sistemi embedded o dispositivi IoT. Può essere adattato per girare in sistemi a microcontrollore singolo con risorse limitate (senza memoria esterna) o scalato per ottenere le massime prestazioni su processori applicativi (MPU) senza sovraccarichi inutili….

  •  | 

    Segger Embedded Studio

    Embedded Studio di SEGGER è un ambiente di sviluppo integrato (IDE) completo, progettato specificamente per la gestione, la compilazione, il test e l’implementazione di applicazioni embedded. Grazie a una vasta gamma di funzionalità, garantisce operazioni di sviluppo fluide ed efficienti. Progettato per soddisfare le esigenze degli sviluppatori che lavorano con svariati microcontrollori, Embedded Studio ottimizza…

  •  |  | 

    Segger J-Trace

    Panoramica Lo J-Trace di SEGGER è una sonda di tracciamento (trace probe) professionale di tipo streaming che offre la migliore esperienza di analisi possibile, vantando un elenco esteso di funzionalità in grado di soddisfare ogni esigenza di debug degli sviluppatori embedded. Grazie allo streaming trace illimitato, al Live Code Profiling e alla Live Code Coverage,…

  •  |  | 

    Segger emSecure

    emSecure è una suite di firme digitali per sistemi embedded progettata per proteggere prodotti e asset vitali, offrendo una protezione totale contro l’hacking. Basata su algoritmi di crittografia asimmetrica a doppia chiave, la suite garantisce che le firme non possano essere forgiate tramite il reverse engineering del firmware. Inoltre, emSecure può rendere impossibile la creazione…