Siemens offre sia software embedded per il settore automobilistico che soluzioni di ingegneria del software embedded . Siemens ha interrotto l'offerta di software embedded autonomo per SoC con il ritiro nel novembre 2023 dei prodotti Nucleus, Nucleus Hypervisor, Nucleus ReadyStart, Sokol Flex Linux, Sokol Omni Linux e Sourcery CodeBench (inclusi i componenti aggiuntivi associati). I contratti di assistenza esistenti per questi prodotti sono ancora in fase di onorazione, si prega di contattare il Centro di supporto Siemens per ulteriori informazioni.
Quali sono i diversi tipi di software embedded e i loro scopi?
- Sistema operativo - Un sistema operativo (OS), nel suo senso più generale, è un software che consente a un utente di eseguire altre applicazioni su un dispositivo informatico. Il sistema operativo gestisce le risorse hardware di un processore, inclusi i dispositivi di input come tastiera e mouse, i dispositivi di output come display o stampanti, le connessioni di rete e i dispositivi di archiviazione come dischi rigidi e memoria. Il sistema operativo fornisce inoltre servizi per facilitare l'esecuzione e la gestione efficienti e l'allocazione della memoria per i programmi applicativi software.
- Firmware - Il firmware è un tipo di software scritto direttamente per un componente hardware. Funziona senza passare attraverso le API, il sistema operativo o i driver di dispositivo, fornendo le istruzioni e le indicazioni necessarie per comunicare con altri dispositivi o eseguire attività e funzioni di base come previsto.
- Middleware – Il middleware è un livello software situato tra le applicazioni e i sistemi operativi. Il middleware viene spesso utilizzato nei sistemi distribuiti in cui semplifica lo sviluppo del software fornendo quanto segue:
- Nascondere le complessità delle applicazioni distribuite
- Mascherare l'eterogeneità di hardware, sistemi operativi e protocolli
- Fornire interfacce uniformi e di alto livello utilizzate per creare applicazioni interoperabili, riutilizzabili e portatili.
- Fornire una serie di servizi comuni che riducono al minimo la duplicazione degli sforzi e migliorano la collaborazione tra le applicazioni
- Applicazione: l'utente finale sviluppa l'applicazione software finale che viene eseguita sul sistema operativo, utilizza o interagisce con il middleware e il firmware ed è l'obiettivo principale della funzione di destinazione dei sistemi embedded. Ogni applicazione finale è unica, mentre i sistemi operativi e il firmware possono essere identici da dispositivo a dispositivo.
Software embedded vs sistemi embedded
I componenti hardware all'interno di un dispositivo che esegue software embedded sono chiamati "sistema embedded". Alcuni esempi di componenti hardware utilizzati nei sistemi embedded sono i circuiti di alimentazione, le unità di elaborazione centrale, i dispositivi di memoria flash, i timer e le porte di comunicazione seriale. Durante le prime fasi di progettazione di un dispositivo, viene deciso l'hardware che comporrà il sistema embedded e la sua configurazione all'interno del dispositivo. Quindi, il software embedded viene sviluppato da zero per funzionare esclusivamente su quell'hardware in quella precisa configurazione. Ciò rende la progettazione di software embedded un campo specializzato che richiede una profonda conoscenza delle capacità hardware e della programmazione informatica.
Esempi di funzioni integrate basate su software
Quasi tutti i dispositivi con circuiti stampati e chip per computer hanno questi componenti disposti in un sistema software integrato. Di conseguenza, i sistemi software integrati sono onnipresenti nella vita di tutti i giorni e si trovano in tutta la tecnologia di consumo, industriale, automobilistica, aerospaziale, medica, commerciale, delle telecomunicazioni e militare.
Esempi comuni di funzionalità basate su software incorporato includono:
- Sistemi di elaborazione delle immagini presenti nelle apparecchiature di imaging medicale
- Sistemi di controllo fly-by-wire presenti negli aeromobili
- Sistemi di rilevamento del movimento nelle telecamere di sicurezza
- Sistemi di controllo del traffico presenti nei semafori
- Sistemi di temporizzazione e automazione presenti nei dispositivi per la casa intelligente
Quali sono i diversi tipi di sistemi embedded?
In base alle prestazioni e ai requisiti funzionali, esistono cinque classi principali di sistemi embedded:
- I sistemi embedded in tempo reale completano le attività in modo deterministico e ripetibile, il che è influenzato dall'architettura e dalla pianificazione sottostanti dei sistemi operativi, nonché dalle prestazioni dei thread, dalla diramazione e dalla latenza di interruzione. I sistemi embedded generici non contengono un requisito in tempo reale e possono gestire interrupt o ramificazioni senza dipendere da un tempo di completamento. I display grafici e la gestione di tastiera e mouse sono buoni esempi di sistemi generali.
- I sistemi embedded autonomi sono in grado di completare le attività senza un sistema host o risorse di elaborazione esterne. Possono emettere o ricevere dati dai dispositivi collegati, ma non dipendono da essi per completare la loro attività.
- I sistemi embedded stand-alone possono completare il loro compito senza un sistema host o risorse di elaborazione esterne. Possono emettere o ricevere dati dai dispositivi collegati, ma non dipendono da essi per completare la loro attività.
- I sistemi embedded collegati in rete dipendono da una rete connessa per eseguire le attività assegnate.
- In base alla complessità dell'architettura hardware del sistema, esistono tre tipi principali di sistemi embedded: I sistemi embedded collegati in rete dipendono da una rete connessa per eseguire le attività assegnate.
In che modo i mercati finali influenzano i sistemi embedded
I requisiti e i componenti del sistema embedded differiranno in base alle richieste del mercato di destinazione. Di seguito sono riportati alcuni esempi:
- Consumer – In applicazioni come i beni di consumo come lavatrici, dispositivi indossabili e telefoni cellulari, i sistemi embedded enfatizzano le dimensioni ridotte del
- System-on-chip, funzionamento a basso consumo energetico o a batteria e interfacce grafiche. In queste applicazioni, i sistemi operativi configurabili e la capacità di disattivare i "domini" non operativi del progetto sono apprezzati.
- Rete: applicazioni che consentono la connettività, la comunicazione, le operazioni e la gestione di una rete aziendale. Fornisce il percorso di comunicazione e i servizi tra utenti, processi, applicazioni, servizi e reti esterne/Internet. Le applicazioni di rete embedded si concentrano sulla velocità di risposta, sull'elaborazione dei pacchetti e sui percorsi hardware delle periferiche.
- Industriale – Per applicazioni come la gestione delle fabbriche, i motori e i mulini a vento, l'enfasi tende a proteggere la connettività cloud e il funzionamento deterministico "in tempo reale" e può concentrarsi fortemente sul middleware.
- Medicale, automobilistico e aerospaziale – Questi settori hanno bisogno di sistemi critici per la sicurezza mista, in cui parti del progetto sono isolate l'una dall'altra per garantire che solo i dati necessari entrino o escano dal sistema (sicurezza), garantendo al contempo l'assenza di danni all'utente finale (sicurezza). Ne sono un esempio i sistemi di guida autonoma nelle automobili e i dispositivi medici. Questi sistemi embedded possono essere caratterizzati da una combinazione di sistemi operativi open source (Linux) e deterministici in tempo reale (RTOS) e utilizzano pesantemente middleware collaudato.
Perché il software embedded per il settore automobilistico è diverso?
Nell'elettronica automobilistica, complesse interazioni in tempo reale si verificano su più sistemi integrati che controllano funzioni come freni, sterzo, sospensioni, gruppo propulsore, ecc. L'alloggiamento fisico contenente ciascun sistema embedded è indicato come unità di controllo elettronico (ECU). Ogni ECU e il relativo software incorporato fanno parte di una complessa architettura elettrica nota come sistema distribuito.
Comunicando tra loro, le centraline che compongono il sistema distribuito di un veicolo possono eseguire una varietà di funzioni, come la frenata automatica di emergenza, il cruise control adattivo, il controllo della stabilità, i fari adattivi e molto altro. Una singola funzione potrebbe richiedere interazioni tra 20 o più applicazioni software integrate distribuite su numerose centraline collegate da più protocolli di rete. I complessi algoritmi di controllo implementati con il software integrato garantiscono la corretta temporizzazione delle funzioni, gli input e le uscite necessari e la sicurezza dei dati.
Esempi comuni di funzionalità basate su applicazioni software per il settore automobilistico includono:
- Funzioni ADAS (Advanced Driver Assist Systems) come il cruise control adattivo, la frenata automatica di emergenza, l'assistenza al mantenimento della corsia, l'assistenza al traffico, gli avvisi di deviazione dalla corsia
- Gestione della batteria
- Compensazione della coppia
- Controllo della velocità di iniezione del carburante
Stack software ECU
L'unità di controllo elettronico o ECU è composta da un'unità di calcolo principale con hardware a livello di chip e uno stack di software incorporato. Tuttavia, c'è una tendenza crescente tra le case automobilistiche a progettare ECU con circuiti integrati complessi che contengono più core di calcolo su un singolo chip, quello che viene definito System on a Chip (SoC). Questi SoC possono ospitare una moltitudine di astrazioni ECU per consolidare l'hardware. Lo stack software per una ECU include in genere una gamma di soluzioni, dal firmware di basso livello alle applicazioni software integrate di alto livello.
Pila ECU | Descrizione |
Applicazione software integrata | Algoritmi di controllo, elaborazioni, servizi |
Framework applicativo | Quadri di sicurezza e protezione |
Ambiente operativo | AUTOSAR classic, AUTOSAR Adaptive, Canali input/ output |
Virtualizzazioni integrate | Sistema operativo in tempo reale, astrazioni ECU |
Firmware | Bootloader, archiviazione sicura, threading sicuro |
Hardware | Dispositivi a base di silicio, microcontrollori, schede a uno o più strati |