Embedded Coder

Generare codice C e C++ ottimizzato per sistemi embedded

 

Embedded Coder® genera codice C e C++ leggibile, compatto e veloce per processori embedded utilizzati nella produzione di massa. Estende MATLAB Coder™ e Simulink Coder™ con ottimizzazioni avanzate per un controllo preciso delle funzioni, dei file e dei dati generati. Queste ottimizzazioni migliorano l’efficienza del codice e facilitano l’integrazione con codice, tipi di dati e parametri di calibrazione legacy. È possibile incorporare uno strumento di sviluppo di terze parti per creare un eseguibile per la distribuzione chiavi in mano su un sistema embedded o su una scheda di prototipazione rapida.

Embedded Coder offre il supporto integrato per AUTOSAR, MISRA C® e gli standard software ASAP2. Fornisce inoltre report di tracciabilità, documentazione sul codice e verifica software automatizzata per supportare lo sviluppo di software DO-178, IEC 61508 e ISO 26262. Il codice di Embedded Coder è portatile e può essere compilato ed eseguito su qualsiasi processore. Inoltre, Embedded Coder offre pacchetti di supporto con ottimizzazioni avanzate e driver di dispositivo per hardware specifico.

Scopri come le aziende sono in grado di generare codice di produzione con Embedded Coder per applicazioni di controlli, elaborazione di segnali, elaborazione di immagini e visione artificiale e machine learning.

Per iniziare:

Configurazione per la generazione di codice

Per configurare le impostazioni di generazione di codice per Embedded Coder®, è possibile utilizzare l’app MATLAB Coder per MATLAB® o Embedded Coder Quick Start per Simulink. È inoltre possibile configurare ciascuna impostazione utilizzando direttamente i comandi e gli script MATLAB.

Dall’app MATLAB Coder, è possibile:

  • Generare codice per i file e le funzioni MATLAB
  • Selezionare l’output per la generazione di codice e il proprio processore
  • Scegliere le ottimizzazioni di Embedded Coder

Da Embedded Coder Quick Start per Simulink, è possibile:

  • Generare codice per i propri modelli e sottosistemi Simulink
  • Selezionare l’output per la generazione di codice e il proprio processore
  • Scegliere Embedded Coder per ottimizzare la velocità di esecuzione o RAM

Utilizzo di Embedded Coder Quick Start per accelerare la generazione di codice di produzione da Simulink.

Selezione di target

Embedded Coder utilizza gli oggetti di configurazione e i file target di sistema per tradurre il codice MATLAB e i modelli Simulink in codice sorgente ed eseguibili di alta qualità.

Per MATLAB, è possibile specificare uno dei seguenti target di output:

  • File MEX
  • Libreria statica C/C++
  • Eseguibile C/C++

Per Simulink, è possibile specificare una delle configurazioni pronte per l’uso, tra cui:

Target in tempo reale embedded: genera codice C ANSI/ISO, C++ e C++ incapsulato con dati a virgola mobile e virgola fissa per un’esecuzione efficiente in tempo reale praticamente su qualsiasi processore di produzione

Target AUTOSAR: genera codice C e interfacce di runtime che supportano lo sviluppo di componenti software AUTOSAR (richiede AUTOSAR Blockset)

Target libreria condivisa: genera una versione della libreria condivisa del proprio codice per l’esecuzione su piattaforme host, sia come file di libreria di collegamento dinamico (.dll) di Windows® che come file oggetto condiviso (.so) di UNIX®

Inoltre, MathWorks e terze parti offrono componenti complementari MATLAB in grado di estendere Embedded Coder per supportare hardware specifico tra cui ARM®, Intel®, NXP™, STMicroelectronics® e Texas Instruments™.

Utilizzo di pacchetti di supporto hardware per distribuire rapidamente il codice generato su dispositivi embedded.

Elaborazione di dati personalizzati

Embedded Coder consente di definire e controllare la modalità di visualizzazione dei dati del modello nel codice generato per facilitare l’integrazione software.

Per il codice MATLAB, Embedded Coder supporta tutte le definizioni dei dati di MATLAB Coder, inclusi gli oggetti a virgola fissa e le classi di memorizzazione predefinite.

Per i modelli Simulink, Embedded Coder supporta le seguenti funzionalità per specifiche e dizionari di dati:

Dizionario Embedded Coder: consente di visualizzare e personalizzare le definizioni di codice tra cui interfacce di funzioni, classi di memorizzazione e sezioni di memoria

Oggetto dati Simulink: fornisce classi di memorizzazione predefinite, tra cui costante, volatile, globale esportata, globale importata, direttiva di definizione, struttura, campo di bit (inclusa la struttura a bit) e metodi di accesso get e set

Oggetto dati di packaging del modulo: fornisce attributi preconfigurati per oggetti dati avanzati comunemente utilizzati nella produzione di massa, come segmenti di memoria per calibrare o ottimizzare le tabelle di lookup

Tipo di dati utente: consente di creare tipi astratti per dati complessi al fine di controllare con precisione la modalità di visualizzazione dei dati del modello nel codice generato, per poterli interfacciare con qualsiasi tipo di dati legacy e per estendere o sostituire i tipi integrati di Simulink

Embedded Coder consente di accedere ai file di scambio dati ASAP2 in Simulink per poter esportare i dati del modello con definizioni di dati complessi mediante lo standard ASAP2. È possibile modificare le funzionalità integrate per produrre altri meccanismi di scambio di dati.

Utilizzo del dizionario Embedded Coder per definire e controllare la modalità di visualizzazione di modelli e dati nel codice generato.

Ottimizzazione e packaging del codice

Con Embedded Coder, è possibile controllare i limiti delle funzioni, preservare le espressioni e applicare ottimizzazioni su più blocchi per ridurre ulteriormente le dimensioni del codice. I dati vengono scambiati con il codice generato tramite variabili globali o argomenti di funzioni. È possibile tracciare il codice generato su blocchi e segnali nel proprio modello.

Le opzioni di Embedded Coder per la generazione di codice dal codice MATLAB e dai modelli Simulink consentono di:

  • Generare codice specifico del processore per funzioni e operatori matematici
  • Riutilizzare il codice per l’esportazione in ambienti legacy o esterni
  • Eliminare il codice non necessario di inizializzazione, conclusione, registrazione e gestione degli errori
  • Rimuovere il codice in virgola mobile da applicazioni di soli numeri interi

Sono disponibili ulteriori opzioni di ottimizzazione e configurazione di Embedded Coder per i modelli Simulink, che consentono di:

  • Generare varianti di codice utilizzando le macro per la compilazione del preprocessore
  • Controllare il formato di ciascun file generato
  • Determinare come vengono definiti e referenziati i dati globali
  • Specificare il contenuto e il posizionamento dei commenti

Generazione di codice SIMD dal modello Simulink.

Commenti, tracciamento e documentazione del codice

Embedded Coder offre diverse funzionalità per esaminare il codice generato per i file e le funzioni MATLAB o i modelli e sottosistemi Simulink. Utilizzando queste funzionalità, è possibile:

  • Generare un report sul codice che descriva i moduli del codice, le interfacce delle funzioni e le metriche del codice statico
  • Controllare i formati degli identificatori per le funzioni, i dati globali e i tipi di dati generati
  • Includere il codice MATLAB sotto forma di commento nel codice generato, incluso il testo di aiuto della funzione

Con Simulink, Embedded Coder consente inoltre di inserire requisiti di alto livello come commenti di codice con collegamenti alla sorgente dei requisiti (richiede Simulink Requirements™). Il report sul codice per la generazione di codice Simulink include anche una descrizione dell’interfaccia del codice, un report di tracciabilità e la visualizzazione del codice e dei file sorgente generati. Sono presenti collegamenti bidirezionali tra il modello e il codice generato, facilitando la navigazione tra ogni riga di codice e il corrispondente elemento del modello Simulink, inclusi sottosistemi, blocchi, funzioni e codice MATLAB e grafici e transizioni Stateflow®.

Rapporto sulla generazione di codice Simulink che evidenzia la tracciabilità bidirezionale tra algoritmo e implementazione.

Esecuzione e verifica del codice

Embedded Coder consente di incorporare il codice generato nel proprio ambiente di esecuzione del codice.

Con MATLAB, il codice generato da Embedded Coder viene eseguito utilizzando lo stesso framework di esecuzione fornito da MATLAB Coder.

Con Simulink, Embedded Coder estende in modo significativo il framework di esecuzione in tempo reale fornito da Simulink Coder. Per impostazione predefinita, il codice può essere eseguito con o senza un sistema operativo in tempo reale (RTOS) e in modalità single-tasking, multitasking, multicore o asincrona. È inoltre possibile verificare i risultati dell’esecuzione del codice utilizzando Embedded Coder per i test software in-the-loop (SIL) e processor-in-the-loop (PIL). Simulink Test™ e Simulink Coverage aiutano ad automatizzare l’esecuzione dei test, il confronto dei risultati e l’analisi della copertura. È supportata anche l’analisi di profiling dell’esecuzione del codice.

Generazione di un programma principale

Embedded Coder genera un programma principale estensibile basato sulle informazioni fornite per utilizzare il codice nel proprio ambiente in tempo reale. Questa funzionalità consente di generare e creare un eseguibile personalizzato completo dal proprio modello.

Esecuzione di codice multi-rate, multitask e multicore

Embedded Coder genera un codice single-rate e multi-rate utilizzando i tempi di campionamento periodici specificati nel modello. Per i modelli multi-rate e multitasking, utilizza una strategia denominata “rate grouping” che genera funzioni separate per l’attività “base rate” e per ciascuna attività “subrate” nel modello. È inoltre possibile utilizzare la modellazione Concurrent Execution di Simulink per produrre codice multithread per l’elaborazione multicore.

Esecuzione di test SIL e PIL

Embedded Coder automatizza l’esecuzione del codice generato in Simulink per i test SIL o sul target embedded per i test PIL utilizzando le modalità di simulazione Simulink o i blocchi funzione S. Simulink Test™ aiuta ad automatizzare l’esecuzione dei test e il confronto dei relativi risultati con quelli della simulazione del modello originale. È possibile eseguire analisi di copertura del codice strutturale per misurare la completezza del test con Simulink Coverage o con l’integrazione con strumenti di terze parti. L’analisi di profiling del codice fornisce i tempi di esecuzione su processori host o target.

Esecuzione di test software-in-the-loop (SIL) e processor-in-the-loop (PIL) del codice generato da Embedded Coder.

Funzionalità recenti

Supporto per le librerie sostitutive di codice FFT per ARM

Generazione di codice ottimizzato per le trasformate di Fourier veloci (FFT) utilizzando le librerie sostitutive di codice per processori ARM Cortex-A e Cortex-M

Copie di dati ridotte

Generazione di codice con meno copie di dati per i blocchi Data Store Memory che archiviano grandi strutture bus all’interno di sottosistemi e oltre i confini di modelli referenziati

Array multidimensionali ottimizzati

Riduzione della memoria riutilizzando buffer per array multidimensionali che consentono di preservare le dimensioni

Operatori bitwise

Riduzione della ROM generando operatori bitwise da blocchi di operatori logici

Funzioni multithread di Image Processing Toolbox

Incremento della velocità di esecuzione generando codice per le funzioni di Image Processing Toolbox con funzionalità multithread

Vettorializzazione SIMD per loop

Utilizzo di funzioni intrinseche SIMD per vettorizare loop e array per processori Intel e ARM

Calibrazione e monitoraggio attraverso strumenti XCP e di terzi

Generazione di codice che supporta la regolazione dei parametri e il monitoraggio dei segnali attraverso un canale di comunicazione ASAM MCD-1 XCP e strumenti di calibrazione di terzi come ETAS INCA e Vector CANape

Consulta le note di rilascio per ulteriori informazioni su queste caratteristiche e sulle funzioni corrispondenti.

Coder Summit

Guarda gli ingegneri del settore e lo staff di sviluppo presentare nuove funzionalità per la progettazione del software, la generazione di codice embedded e molto altro.