|  | 

Segger emRun

Panoramica

La maggior parte delle toolchain che utilizzano GCC o LLVM si appoggia a newlib, newlib-nano o glibc.

Sfortunatamente, queste librerie presentano svantaggi significativi rispetto alle librerie di runtime professionali per sistemi embedded.

È qui che entra in gioco emRun. Può essere utilizzato con GCC, LLVM e altre toolchain per fornire una libreria di runtime progettata e ingegnerizzata specificamente per il mondo embedded. Scritta da zero, emRun consente un elevato grado di ottimizzazione con requisiti minimi.

emRun è una libreria di runtime C completa che trasforma qualsiasi toolchain basata su GCC/LLVM in una scelta di sviluppo professionale. Viene utilizzata nell’IDE Embedded Studio di SEGGER e ha dimostrato il suo valore per anni.

  • Funzioni altamente ottimizzate: Evitano l’inclusione di funzioni di supporto non necessarie (es. printf).
  • I/O personalizzabile: Le funzioni di input e output formattate sono configurabili (da I/O di base a completo), riducendo l’impronta del codice finale.
  • Supporto localizzazione: Il supporto per UTF-8 e codepage viene collegato (link) solo se effettivamente utilizzato.

In molti casi, il risparmio di memoria ROM garantito da emRun consente l’uso di microcontrollori più piccoli ed economici, portando a una riduzione dei costi significativa nella produzione di massa.

Caratteristiche principali

  • Alte prestazioni: Routine critiche scritte in linguaggio assembly.
  • Riduzione drastica del codice: Configurabile per massima velocità o dimensioni ridotte.
  • emFloat inclusa: Include la libreria ottimizzata di SEGGER per i calcoli in virgola mobile.
  • Compatibilità: Funzioni compatibili EABI e progettate per varie toolchain.
  • Efficienza RAM: Utilizzo minimo di RAM e nessun requisito di heap.
  • Licenza chiara: Nessuna licenza “virale”, nessuna clausola di attribuzione obbligatoria.

Licenze e Disponibilità

emRun può essere concesso in licenza come codice sorgente a singole aziende o incluso come libreria dai fornitori di toolchain. Il codice sorgente permette di eseguire il debug passo-passo (step-through) all’interno delle funzioni della libreria.

Architetture supportate:

  • Arm (Cortex-M e Cortex-A 32-bit)
  • RISC-V (RV32M, RV32IMAC, RV64)
  • Varianti generiche in codice “C” per qualsiasi altro sistema.

Opzione “Buyout” per produttori di silicio

SEGGER offre ai produttori (Silicon Vendors) l’opzione di licenziare emRun per ridistribuirlo ai propri clienti secondo i propri termini. Aziende come SiFive, Microchip, Nuclei e Haawking hanno già adottato questa soluzione.


Ottimizzazione delle prestazioni: Velocità e Dimensioni

La scelta della libreria di runtime può avere un impatto enorme sulla velocità dell’applicazione. Anche cercando di evitare funzioni come sprintf() o memcpy(), il compilatore genererà chiamate a funzioni di libreria per operazioni “invisibili” come divisioni, moltiplicazioni a 64-bit o calcoli in virgola mobile.

emRun utilizza implementazioni di basso livello avanzate che possono essere calibrate per privilegiare la velocità o lo spazio occupato, sfruttando al massimo il potenziale della piattaforma target.


Requisiti di memoria (Benchmark)

emRun offre un risparmio significativo di memoria Flash perché riduce al minimo le dipendenze interne (ad esempio, l’I/O su file non viene collegato automaticamente con printf()).

Esempio di Benchmark (Progetto “Hello World” con printf):

Ambiente di TestUtilizzo ROMUtilizzo RAM
MCUXpresso, Newlib31.888 byte2.864 byte
MCUXpresso, Newlib-nano9.552 byte416 byte
MCUXpresso, SEGGER emRun4.392 byte184 byte
Embedded Studio, emRun + SEGGER Linker1.868 byte0 byte

Verifica della libreria

Per garantire l’affidabilità, emRun viene sottoposta a una suite di test rigorosa:

  • Oltre 450 test diversi con milioni di casi studio.
  • Verifica completa di tutte le funzioni della libreria e della virgola mobile (IEEE-754).
  • La Runtime Library Verification Test Suite è disponibile separatamente per chi desidera verificare le proprie librerie.

emFloat: Virgola mobile ottimizzata

Un componente chiave di emRun è emFloat, una libreria per calcoli in virgola mobile conforme a IEEE 754. Progettata per essere velocissima e compatta, offre prestazioni simili a una FPU (Floating Point Unit) hardware anche in puro software. Se una FPU è presente, emFloat ne potenzia le prestazioni per le funzioni matematiche complesse.

Articoli simili

  •  |  |  | 

    Segger emUSB Host

    Panoramica Il software emUSB-Host consente alle periferiche USB di funzionare con i dispositivi embedded. Fornisce funzionalità complete di host USB, inclusi il supporto per hub esterni e driver di classe (opzionali). Il software è conforme alle specifiche standard stabilite dall’USB Implementors Forum e supporta tutte le modalità di trasferimento (control, bulk, interrupt e isochronous) a…

  •  |  | 

    exFAT per emFile

    Per chi desidera o necessita di un’implementazione exFAT® per emFile, SEGGER ha collaborato con Microsoft per rendere disponibile una licenza diretta Microsoft tramite SEGGER. exFAT per emFile è un’implementazione specializzata del file system exFAT, concepita su misura per i sistemi embedded. Il file system exFAT (Extensible File Allocation Table) è stato sviluppato da Microsoft nel…

  •  | 

    Segger Ozone

    Ozone è un ambiente di debugg grafico stand-alone completo per applicazioni embedded. Con Ozone è possibile eseguire il debug di qualsiasi applicazione basata su Arm o RISC-V a livello di sorgente (C, C++ e Rust) e assembly. Ozone può caricare applicazioni create con quasi tutti i tipi di toolchain o ambienti di sviluppo integrati (IDE),…

  •  | 

    SEGGER Flasher Portable Plus

    Panoramica Il Flasher Portable PLUS è un programmatore portatile robusto progettato per l’aggiornamento del firmware dei microcontrollori. Ottimizzato per l’uso sul campo in ambienti ostili, supporta memorie flash sia interne (on-chip) che esterne e funziona con diverse interfacce target (tra cui JTAG, SWD, FINE e SPD). Grazie alla sua elevata portabilità e alla capacità di…

  •  | 

    Segger J-Link OB

    Il J-Link OB (dove OB sta per: on-board) è essenzialmente un J-Link in un chip singolo basato su microcontrollore che viene integrato direttamente sulla scheda di valutazione. Arricchisce il design di qualsiasi scheda target con funzionalità standard, come il supporto al debug, il caricamento nella memoria Flash e il VCOM, senza aggiungere costi extra. Il…

  •  | 

    Segger emCompress

    La riduzione delle dimensioni dei dati per l’archiviazione e il trasferimento è estremamente preziosa nei sistemi embedded. Una dimensione di archiviazione ridotta minimizza la complessità e i costi dei sistemi mantenendo bassi i requisiti di memoria. Una dimensione di trasferimento ridotta permette di superare i limiti della larghezza di banda disponibile per l’invio e la…