|  | 

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 Flasher SDK

    Panoramica Flasher SDK consente agli sviluppatori di creare Flasher App che vengono eseguite direttamente sui programmatori SEGGER Flasher. Queste app gestiscono la programmazione, i test di sistema e la diagnostica per garantire flussi di lavoro efficienti e un’elevata qualità del prodotto. L’SDK permette inoltre agli utenti di aggiungere il supporto per dispositivi nuovi o non…

  •  |  |  | 

    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…

  •  |  | 

    Segger emBoot Secure

    Panoramica emBoot-Secure è la soluzione di SEGGER conforme al Cyber Resilience Act (CRA) per aggiornamenti firmware sicuri e verificabili su dispositivi embedded. Questo approccio end-to-end protegge i dispositivi da modifiche non autorizzate del firmware, furto di proprietà intellettuale e clonazione. Garantisce che venga installato solo firmware autentico e approvato dal produttore, utilizzando un’architettura crittografica a…

  •  | 

    SEGGER embOS Ultra

    Panoramica embOS-Ultra è un sistema operativo in tempo reale (RTOS) ad alte prestazioni che sfrutta l’innovativo scheduling RTOS basato sui cicli (cycle-based). Offre massime prestazioni e una precisione al singolo ciclo di CPU con latenza minima in applicazioni mission-critical e ad alto rendimento, dove il tempismo deterministico e la scalabilità sono essenziali. La tecnologia SEGGER…

  •  |  | 

    Segger emCrypt

    Panoramica Progettato pensando sia all’efficienza che alla sicurezza, emCrypt funge da toolkit di crittografia affidabile, offrendo tutti i componenti chiave necessari per i protocolli sicuri odierni. In un mondo pieno di dispositivi connessi, mantenere i dati al sicuro è fondamentale. Con emCrypt, gli utenti possono confidare nella protezione dei propri dispositivi embedded contro le potenziali…