le mie informazioni di contatto
Posta[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
La rete incorporata è un sistema di rete utilizzato per connettere vari sistemi incorporati in modo che possano trasferire informazioni tra loro e condividere risorse. I sistemi embedded utilizzano diverse tecnologie di connessione in diverse situazioni, come le reti informatiche domestiche nelle stanze familiari, i bus di campo nel campo dell'automazione industriale e le reti di comunicazione mobile in sistemi embedded come le apparecchiature informatiche mobili. Inoltre, esistono alcune tecnologie di connettività dedicate utilizzato per connettere sistemi embedded.
Fieldbus è una tecnologia di controllo computerizzata sviluppata a metà degli anni '80 dopo i sistemi di controllo degli strumenti analogici, i sistemi di controllo digitale centralizzato e i sistemi di controllo distribuito. È anche oggi uno dei punti caldi nello sviluppo della tecnologia nel campo del controllo dell'automazione spesso chiamata rete locale di computer nel campo dell'automazione industriale.
Fieldbus è una rete che interconnette dispositivi di campo come sensori digitali, convertitori, strumenti industriali e attuatori di controllo con unità di controllo di processi industriali e stazioni operative sul campo. Ha le caratteristiche di completa digitalizzazione, decentralizzazione, trasmissione bidirezionale e multi-ramo. È il prodotto dello sviluppo della rete di controllo industriale a livello di campo.
Fieldbus è una rete di controllo sottostante a bassa larghezza di banda situata nella parte inferiore del controllo della produzione e delle strutture di rete, per questo è anche chiamata rete sottostante (Infranet). Viene utilizzato principalmente nei siti di produzione per ottenere una comunicazione digitale bidirezionale, seriale e multinodo tra apparecchiature di misurazione e controllo.
Field Control System (FCS) è un sistema di controllo che utilizza un bus di campo per collegare vari controller e apparecchiature strumentali. Questo sistema di controllo decentralizza completamente le funzioni di controllo sul sito, riducendo i costi di installazione e di manutenzione. Infatti, FCS è un sistema di controllo distribuito aperto, interoperabile e completamente decentralizzato.
Il sistema di controllo sul campo integrato incorpora un microprocessore dedicato in uno strumento di misurazione e controllo tradizionale, consentendogli di avere capacità di calcolo e comunicazione digitale. Utilizza doppini intrecciati, linee elettriche o fibre ottiche come bus per collegare più strumenti di misurazione e controllo in una rete. Secondo i protocolli di comunicazione standard, collega più apparecchiature computerizzate di misurazione e controllo situate sul posto e tra strumenti in loco e monitoraggio remoto. La trasmissione dei dati e lo scambio di informazioni vengono realizzati tra computer, formando vari sistemi di controllo automatico adatti alle reali esigenze. In breve, il sistema di controllo del bus di campo trasforma i singoli dispositivi di misurazione e controllo distribuiti in nodi di rete, utilizzando il bus di campo come collegamento per rendere questi dispositivi distribuiti un sistema di rete in grado di comunicare tra loro e completare insieme attività di controllo automatico. Con l'aiuto della tecnologia del bus di campo, le tradizionali apparecchiature di controllo distribuito singole sono diventate un insieme che comunica tra loro e lavora in modo collaborativo.
La rete informatica domestica è una rete locale che collega personal computer, elettrodomestici, contatori di acqua, elettricità, gas, apparecchiature di illuminazione, apparecchiature di rete e apparecchiature di sicurezza all'interno della casa. La sua funzione principale è quella di controllare centralmente i suddetti dispositivi e collegarli a Internet per condividere risorse e servizi di rete. Inoltre, la rete informatica domestica può essere estesa anche all’intera casa o addirittura all’intera comunità, diventando la base delle comunità residenziali intelligenti e delle società intelligenti. Nel sistema di rete informatica domestica, tutti i dispositivi domestici sono intelligenti, compresi gli elettrodomestici, l'acqua, l'elettricità, i contatori del gas e gli apparecchi di illuminazione. Possono comunicare tra loro e accedere a Internet tramite il gateway domestico. La realizzazione della rete informatica domestica offre alle persone un ambiente domestico più sicuro, più conveniente e confortevole. Ad esempio, quando il proprietario esce, la porta verrà automaticamente chiusa e bloccata, il sistema di monitoraggio si accenderà automaticamente e il proprietario verrà automaticamente informato di qualsiasi anomalia in casa. È possibile controllare in qualsiasi momento i vari dispositivi della casa tempo e ovunque, e i dati dello strumento possono essere caricati automaticamente.
La rete di informazione familiare deve risolvere due problemi fondamentali:
(1) Come collegare tra loro elettrodomestici, contatori di acqua, elettricità, gas, apparecchi di illuminazione, ecc.
(2) Come realizzare l'interoperabilità tra questi dispositivi connessi, ovvero i dispositivi sulla rete informatica domestica possono richiedere automaticamente servizi quando necessario e i dispositivi correlati possono fornire servizi o accettare richieste ed elaborarle. La rete informatica domestica può adottare diverse strutture topologiche, come tipo di bus, struttura a stella, ecc. La rete informatica domestica può essere ulteriormente suddivisa in diverse sottoreti di controllo e sottoreti di dati. La sottorete di controllo è simile a un bus di campo. È una rete con larghezza di banda ridotta e viene utilizzata principalmente per inviare e ricevere informazioni di controllo. La sottorete dati ha requisiti di larghezza di banda più elevati e i dispositivi ad essa collegati devono trasmettere una grande quantità di informazioni sui dati.
Negli ultimi anni, con il rapido sviluppo delle comunicazioni di telefonia mobile e la rapida diffusione dei personal computer, una varietà di computer portatili, come computer portatili, computer portatili, computer palmari, ecc., è aumentata rapidamente non soddisfare più i bisogni. Le persone sperano di trasmettere e scambiare informazioni sui dati sempre e ovunque, quindi i mezzi di trasmissione della comunicazione dati hanno iniziato ad espandersi da cablati a wireless ed è emersa la comunicazione dati mobile wireless. La rete di comunicazione dati wireless è un sistema di rete che trasmette dati tramite onde radio. È sviluppato sulla base della comunicazione dati cablata e può realizzare la comunicazione dati in stato mobile.Attraverso reti di comunicazione dati wireless, smartphone, PDA e
I computer notebook possono scambiarsi informazioni sui dati e accedere a Internet. Le reti di comunicazione dati wireless si dividono in reti wireless a corto raggio e Internet wireless. Le reti wireless a corto raggio includono principalmente 802.11, Bluetooth, IrDA e HomeRF. Internet wireless o Internet mobile utilizza principalmente due tecnologie di connessione wireless: una è la tecnologia di accesso wireless mobile, come GSM, GPRS, CDPD (Cellular Digital Packet Data), ecc.; l'altra è la tecnologia di accesso wireless fissa, comprese le microonde e le comunicazioni a spettro esteso , trasmissione ottica satellitare e wireless, ecc.
Con il rapido sviluppo di Internet e della tecnologia incorporata, è necessario che sempre più dispositivi informativi, come videotelefoni Web, set-top box, elettrodomestici informatici e altri prodotti di sistema integrati, siano connessi a Internet per condividere la comodità , velocità e comodità forniti da Internet Risorse e servizi di informazione onnipresenti, ovvero tecnologia Internet incorporata. La tecnologia Internet integrata ha ampie prospettive di applicazione nei settori dei trasporti intelligenti, dei sistemi di pulizia, della domotica, dell'automazione industriale, dei POS e dell'e-commerce.
1.Metodo di accesso a Internet integrato
I dispositivi integrati integrano lo stack del protocollo TCP/IP e il relativo software. Tali dispositivi possono essere utilizzati come nodo su Internet, a cui viene assegnato un indirizzo IP e interconnessi direttamente con Internet. Le caratteristiche di questa modalità di accesso sono:
2.Stack di protocolli TCP/IP incorporato
Le funzioni completate dallo stack di protocolli TCP/IP incorporato sono le stesse di quelle dello stack di protocolli TCP/IP completo. Tuttavia, a causa delle limitazioni delle risorse del sistema incorporato, alcuni indicatori e interfacce dello stack di protocolli incorporato potrebbero essere diversi da quelli ordinari stack di protocolli.
(1) L'interfaccia di chiamata dello stack di protocolli incorporato è diversa da quella dello stack di protocolli ordinario. L'interfaccia socket dello stack di protocolli ordinario è standard e il software applicativo ha una buona compatibilità. Tuttavia, il sovraccarico del codice, l'elaborazione e l'archiviazione derivanti dall'implementazione dell'interfaccia standardizzata sono enormi. Pertanto, quando la maggior parte dei produttori ha trapiantato le interfacce dello stack di protocollo standard nei sistemi embedded, ha apportato vari gradi di modifica e semplificazione e ha stabilito stack di protocollo dedicati efficienti. Le API fornite erano diverse dalle API degli stack di protocollo generali .
(2) La personalizzazione dello stack di protocolli incorporato. La maggior parte degli stack di protocolli incorporati sono modulari se lo spazio di memoria è limitato, possono essere installati dinamicamente quando necessario e omettono diverse parti non essenziali per i sistemi incorporati come l'inoltro dell'interfaccia e un set completo di strumenti di servizi Internet.
(3) Compatibilità della piattaforma dello stack di protocolli incorporato. In genere, lo stack di protocolli è strettamente integrato con il sistema operativo e la maggior parte degli stack di protocolli sono implementati nel kernel del sistema operativo. L'implementazione dello stack di protocolli dipende dai servizi forniti dal sistema operativo e presenta scarsa portabilità. L'implementazione dello stack di protocolli incorporato generalmente dipende poco dal sistema operativo ed è facile da trasferire. Molti stack di protocolli incorporati commerciali supportano più piattaforme di sistemi operativi.
(4) Elevata efficienza dello stack di protocolli incorporato. Le implementazioni di stack di protocolli incorporati in genere occupano meno spazio, richiedono una memoria dati più piccola e sono efficienti dal punto di vista del codice, riducendo così i requisiti di prestazioni del processore.
Con lo sviluppo della tecnologia incorporata, i database incorporati si stanno gradualmente spostando verso l'applicazione. In sostanza, i database incorporati sono sviluppati da database generali e funzionano su vari dispositivi incorporati o dispositivi mobili. Mostrano la loro superiorità nei sistemi incorporati perché sono limitati dall'ambiente applicativo del sistema incorporato stesso, i database incorporati hanno caratteristiche diverse dai database generali .
In genere, un sistema di gestione di database incorporato è un sistema di gestione di database utilizzato su dispositivi incorporati. Poiché la maggior parte dei sistemi di gestione di database incorporati sono dispositivi di informazione mobili, come computer palmari, PDA, dispositivi montati su veicoli e altri dispositivi di comunicazione mobile, i dispositivi incorporati a posizione fissa vengono utilizzati raramente. Pertanto, i database incorporati sono anche chiamati database mobili o mobili database mobili incorporati.La sua funzione principale è risolvere i problemi di gestione dei dati nell'ambiente di mobile computing. Il database mobile è una parte importante dell'ambiente di mobile computing.
Base di dati distribuita.
L'introduzione della tecnologia dei database nei sistemi embedded è dovuta principalmente alle seguenti carenze nello sviluppo di applicazioni di gestione delle informazioni direttamente su sistemi operativi embedded o bare metal:
(1) Tutte le applicazioni richiedono un lavoro ripetuto di gestione dei dati, che aumenta la difficoltà e i costi di sviluppo.
(2) La condivisione dei dati tra le applicazioni è scarsa.
(3) Il software applicativo ha scarsa indipendenza, portabilità e scarsa riusabilità.
L'introduzione di un sistema di gestione di database nei sistemi embedded può risolvere in larga misura i problemi di cui sopra e migliorare l'efficienza di sviluppo e la portabilità dei sistemi applicativi.
Il sistema di database incorporato è un sistema completo che include un sistema di gestione di database incorporato e comprende dispositivi di comunicazione mobile, workstation o computer desktop e server di dati. Questa caratteristica del sistema e l'ambiente di utilizzo del sistema hanno una grande influenza sul sistema di gestione del database incorporato L'impatto maggiore influisce direttamente sulla struttura del sistema di gestione del database incorporato. Le caratteristiche del suo ambiente di utilizzo possono essere semplicemente riassunte come segue:
(1) Il dispositivo è mobile in qualsiasi momento. I database incorporati vengono utilizzati principalmente su dispositivi di informazione mobili. La posizione del dispositivo cambia spesso con l'utente.
(2) La rete viene spesso disconnessa e la posizione dei dispositivi mobili o dei terminali mobili cambia spesso durante l'uso. È inoltre influenzata da fattori quali metodi di utilizzo, alimentazione, comunicazione wireless e condizioni della rete. Pertanto, la connessione di rete generalmente non viene mantenuta in modo continuo, ma viene spesso disconnessa attivamente o passivamente e collegata in modo intermittente.
(3) Le condizioni della rete sono diverse. A causa dei frequenti cambiamenti nella posizione dei dispositivi di informazione mobile, i dispositivi di informazione mobile e i server di dati possono essere collegati attraverso diversi sistemi di rete in momenti diversi. Queste reti possono differire in termini di larghezza di banda, costi di comunicazione, ritardo della rete, qualità del servizio, ecc.
(4) Capacità di comunicazione asimmetriche. A causa dei limiti di risorse dei dispositivi mobili, le capacità di comunicazione di rete tra dispositivi mobili e server sono asimmetriche. Le capacità di invio dei dispositivi mobili sono molto limitate, rendendo la larghezza di banda di comunicazione in downlink dal server dati al dispositivo mobile e la larghezza di banda in uplink dal dispositivo mobile al server dati molto diverse.
Un sistema di gestione del database integrato completo è costituito da diversi sottosistemi, tra cui il sistema di gestione del database principale, il server di sincronizzazione, il sistema di gestione del database integrato, la rete di connessione e altri sottosistemi, come mostrato nella Figura 12-6.
(1) Sistema di gestione del database integrato. Il sistema di gestione del database incorporato è un sistema di gestione del database per utente singolo funzionalmente indipendente. Può funzionare indipendentemente dal server di sincronizzazione e dal sistema di gestione del database principale per gestire i dati nel sistema integrato. Può anche essere collegato al server principale tramite il server di sincronizzazione per gestire i dati nel database principale sincronizzazione dei dati in vari modi.
(2) Server di sincronizzazione. Il server di sincronizzazione è l'hub di connessione tra il database incorporato e il database principale, garantendo la coerenza dei dati nel database incorporato e nel database principale.
(3) Server dati. Il database principale e il sistema di gestione del database del server dati possono utilizzare sistemi di database generici su larga scala come Oracle o Sybase.
(4) Connettersi alla rete. Il server del database principale e il server di sincronizzazione sono generalmente collegati tramite una rete fissa a larghezza di banda elevata e bassa latenza. La connessione tra il dispositivo mobile e il server di sincronizzazione può essere una LAN wireless, una connessione a infrarossi, una linea seriale universale o una rete pubblica a seconda delle condizioni specifiche del dispositivo.
1.La chiave per incorporare database mobili nelle applicazioni
Nelle applicazioni pratiche, i database mobili incorporati devono risolvere problemi quali la coerenza dei dati (replica), l'elaborazione efficiente delle transazioni e la sicurezza dei dati.
(1) Coerenza dei dati. Una caratteristica notevole del database mobile incorporato è che la connessione tra i terminali dati mobili e il server di sincronizzazione è una connessione debole, ovvero larghezza di banda ridotta, ritardo lungo, instabilità e disconnessione frequente. Per supportare le operazioni degli utenti sul database in ambienti deboli, il metodo di replica ottimistica (Replica ottimistica o Replica pigra) è ora comunemente utilizzato per consentire agli utenti di eseguire copie dei dati sulla cache locale. Dopo la riconnessione della rete, le informazioni sulla modifica dei dati vengono scambiate con il server del database o altri terminali dati mobili e la coerenza dei dati viene ripristinata attraverso il rilevamento e il coordinamento dei conflitti.
(2) Elaborazione efficiente delle transazioni. Le transazioni mobili vengono eseguite in un ambiente mobile con disconnessioni frequenti e prevedibili. Per garantire il regolare completamento delle transazioni attive, è necessario progettare e implementare nuove strategie e algoritmi di gestione delle transazioni. Determinare la priorità dell'elaborazione delle transazioni in base alle condizioni della connessione di rete e le richieste di transazione con velocità di connessione di rete elevate verranno elaborate per prime;
Determina se la transazione viene migrata in base al tempo dell'operazione, ovvero tutte le operazioni di transazione a lungo termine verranno trasferite sul server per l'esecuzione e non è necessario garantire che la rete sia sempre fluida per determinare se la transazione viene caricata per l'esecuzione o scaricato dopo l'esecuzione della copia dei dati in base alla dimensione dei dati; strategia di registrazione migliorata durante l'elaborazione delle transazioni, se utilizzare il meccanismo di rilevamento del server o il meccanismo di dichiarazione del client durante l'aggiornamento in tempo reale degli attributi della posizione dell'utente; movimento delle transazioni (come query relative alla posizione).
(3) Sicurezza dei dati. I dispositivi integrati in molti campi di applicazione sono dispositivi chiave per la gestione o l'elaborazione dei dati nel sistema, pertanto il sistema di database sul dispositivo integrato ha un controllo più rigoroso sulle autorizzazioni di accesso. Allo stesso tempo, molti dispositivi integrati presentano un’elevata mobilità, portabilità e ambienti di lavoro non fissi, che comportano anche potenziali fattori non sicuri. Inoltre, alcuni dati hanno un'elevata privacy personale, quindi la sicurezza dei dati personali deve essere pienamente garantita in termini di prevenzione di collisioni, interferenze di campi magnetici, perdita e furto. Le principali misure per garantire la sicurezza dei dati sono: autenticazione dei terminali mobili per prevenire l'accesso fraudolento da parte di terminali illegali; crittografia delle comunicazioni wireless per impedire la fuga di informazioni sui dati; crittografia e archiviazione delle copie dei dati scaricati per prevenire la perdita fisica dei terminali mobili.
2.Caratteristiche dei sistemi di gestione di database mobili
L'ambiente informatico del DBMS mobile è un'estensione del tradizionale DBMS distribuito. Può essere considerato come un sistema distribuito in cui client e nodi server fissi sono connessi dinamicamente. Pertanto, il sistema di gestione di database nell'ambiente informatico mobile è un sistema di gestione di database distribuito dinamico. Poiché il sistema di gestione del database mobile incorporato viene applicato su un sistema operativo incorporato in un ambiente di mobile computing, ha le proprie caratteristiche e requisiti funzionali:
(1) La struttura del microkernel facilita la realizzazione di funzioni integrate. Considerando le risorse limitate dei dispositivi embedded, i DBMS mobili embedded dovrebbero essere implementati utilizzando la tecnologia di miniaturizzazione e compattare la struttura del sistema per soddisfare le esigenze delle applicazioni embedded.
(2) Supporto per SQL standard. Il DBMS mobile incorporato dovrebbe fornire il supporto per SQL standard. Supporta un sottoinsieme dello standard SQL92, supporta query di dati (unione di query, sottoquery, ordinamento, raggruppamento, ecc.), inserimento, aggiornamento, eliminazione di più istruzioni SQL standard, soddisfacendo pienamente le esigenze di sviluppo di applicazioni integrate.
(3) Funzione di gestione delle transazioni. Il DBMS mobile incorporato dovrebbe avere funzioni di elaborazione delle transazioni, mantenere automaticamente l'integrità delle transazioni, l'atomicità e altre caratteristiche supportare l'integrità dell'entità e l'integrità referenziale;
(4) Meccanismo completo di sincronizzazione dei dati. La sincronizzazione dei dati è la caratteristica più importante dei database incorporati. Attraverso la replica dei dati, le modifiche nel database incorporato o nel database principale possono essere applicate tra loro per garantire la coerenza dei dati. Il meccanismo di sincronizzazione dei dati del sistema di gestione del database mobile incorporato dovrebbe avere le seguenti caratteristiche:
(5) Supporta più protocolli di connessione. Il DBMS mobile incorporato dovrebbe supportare più protocolli di connessione di comunicazione. Le connessioni a dispositivi integrati e server di database possono essere ottenute tramite vari metodi di connessione come comunicazione seriale, TCP/IP, trasmissione a infrarossi e Bluetooth.
(6) Funzioni complete di gestione del database integrate. Il DBMS mobile incorporato dovrebbe avere una funzione di ripristino automatico, che sostanzialmente non richiede alcun intervento manuale per la gestione del database incorporato e può fornire backup e ripristino dei dati per garantire la sicurezza e l'affidabilità dei dati dell'utente.
(7) Indipendenza della piattaforma e supporto per più sistemi operativi integrati. Il DBMS mobile incorporato dovrebbe essere in grado di supportare una varietà di sistemi operativi incorporati attualmente popolari come Windows CE e Palm OS, in modo che il sistema di gestione del database mobile incorporato non sia limitato dai terminali mobili.
(8) Funzionalità di gestione zero. Il database incorporato dispone di una funzione di ripristino automatico. Può gestire il database incorporato senza intervento manuale e fornire backup e sincronizzazione dei dati.
Inoltre, uno stato ideale è che gli utenti possano eseguire operazioni e gestione dei dati su tutti i database mobili ad essi correlati utilizzando un solo terminale mobile (come un telefono cellulare). Ciò richiede che il sistema front-end sia universale e che l'interfaccia del database mobile abbia standard unificati e standardizzati. Il sistema di gestione front-end genera automaticamente comandi unificati di elaborazione delle transazioni durante l'elaborazione dei dati e li invia al server dati attualmente connesso per l'esecuzione. Ciò migliora effettivamente la versatilità del sistema di gestione del database mobile incorporato ed espande le prospettive applicative del database mobile incorporato.
In breve, nel sistema di gestione del database mobile incorporato, è necessario considerare molti aspetti che non devono essere considerati negli ambienti informatici tradizionali, come il supporto per le operazioni di disconnessione, il supporto per transazioni lunghe tra regioni, il supporto per query relative alla posizione e ottimizzazione delle query. Considerazioni speciali e considerazioni per migliorare l'utilizzo di risorse limitate e l'efficienza del sistema. Per risolvere efficacemente i problemi di cui sopra, tecnologie come la tecnologia di replica e memorizzazione nella cache, l'elaborazione delle transazioni mobili, la tecnologia di trasmissione dati, l'elaborazione e l'ottimizzazione delle query mobili, l'elaborazione dei dati e la tecnologia di query relativi alla posizione, la tecnologia di pubblicazione di informazioni mobili, l'agente mobile e altro tecnologie sono ancora in fase di sviluppo. Lo sviluppo e il miglioramento promuoveranno ulteriormente lo sviluppo di sistemi di gestione di database mobili integrati.
In poche parole, un sistema in tempo reale può essere visto come un sistema in grado di rispondere tempestivamente a eventi esterni. La caratteristica più importante di questo tipo di sistema è la tempestività, ovvero la real-timeness. La correttezza di un sistema in tempo reale non dipende solo dai risultati logici dei calcoli del sistema, ma dipende anche dal momento in cui questi risultati vengono generati.
Al momento, la maggior parte dei sistemi in tempo reale sono integrati e anche i sistemi integrati in esecuzione hanno requisiti in tempo reale. Pertanto, tra molti tipi di sistemi operativi integrati, i sistemi operativi integrati in tempo reale sono i più rappresentativi tutti i tipi di sistemi operativi embedded Pertanto, questa sezione si concentra principalmente sulle caratteristiche e sui concetti dei sistemi operativi embedded in tempo reale e introduce i concetti e le caratteristiche di base, l'architettura di base e il kernel dei sistemi operativi embedded come servizi, oggetti del kernel e servizi del kernel.
Nel mondo reale, non tutti i sistemi embedded hanno caratteristiche real-time e tutti i sistemi real-time non sono necessariamente embedded. Tuttavia, questi due sistemi non si escludono a vicenda e i sistemi che hanno le caratteristiche di entrambi i sistemi sono chiamati sistemi embedded in tempo reale. La relazione tra loro è mostrata nella Figura 12-7.
(1) Logica (o funzione) corretta significa che il sistema può produrre risultati corretti durante l'elaborazione di eventi esterni.
(2) Tempo corretto significa che l'elaborazione degli eventi esterni da parte del sistema deve essere completata entro un periodo predeterminato.
(3) Scadenza o limite di tempo, limite morto, scadenza si riferisce all'ultimo limite di tempo entro il quale il sistema deve elaborare gli eventi esterni. Il mancato rispetto di questo limite può avere gravi conseguenze. Di solito, il calcolo deve essere completato prima che venga raggiunto il limite di tempo.
(4) Il sistema in tempo reale si riferisce a un sistema che soddisfa sia la funzione corretta che l'ora corretta. Entrambi sono ugualmente importanti. In altre parole, i sistemi in tempo reale sono vincolati nel tempo e guidati da scadenze. Tuttavia, in alcuni sistemi, la correttezza temporale può essere sacrificata per garantire la correttezza funzionale.
Per la divisione dei sistemi in tempo reale, i sistemi in tempo reale possono solitamente essere suddivisi in:
(1) Forte sistema in tempo reale, il tempo di risposta del sistema è molto breve, solitamente a livello di millisecondi o microsecondi.
(2) Per i sistemi in tempo reale generali, il tempo di risposta del sistema è inferiore a quello dei sistemi in tempo reale forti, solitamente al secondo livello.
(3) Per i sistemi in tempo reale deboli, il tempo di risposta del sistema può essere più lungo e può anche cambiare con la gravità del carico del sistema.
I sistemi in tempo reale possono essere suddivisi in sistemi soft real-time e sistemi hard real-time in base alla tolleranza per le scadenze non rispettate o alla gravità delle conseguenze.
(1) Per sistema hard real-time si intende un sistema in tempo reale la cui flessibilità è prossima allo zero limite di tempo.È necessario rispettare il limite di tempo
Altrimenti si verificheranno conseguenze catastrofiche e i risultati dell'elaborazione ottenuti dopo il limite di tempo saranno inutili o altamente svalutati.
(2) Il sistema soft real-time si riferisce a un sistema in tempo reale che deve soddisfare i requisiti di limite di tempo ma ha un certo grado di flessibilità. Le scadenze possono includere livelli di tolleranza variabili, scadenze medie o anche distribuzioni statistiche con vari gradi di accettabilità dei tempi di risposta. Nei sistemi soft real-time, il mancato rispetto delle scadenze di solito non porta a conseguenze gravi come il guasto del sistema. La Tabella 12-2 è un confronto tra i sistemi soft real-time e hard real-time.
In confronto, si può vedere che poiché le scadenze non rispettate non hanno un impatto decisivo sul funzionamento dei sistemi soft real-time, un sistema soft real-time non ha bisogno di prevedere se potrebbero esserci scadenze non rispettate pendenti. Al contrario, i sistemi soft real-time possono avviare un processo di recupero dopo aver rilevato una scadenza non rispettata.
In un sistema in tempo reale, l'ora di inizio di un'attività è importante quanto la scadenza o l'ora di completamento. Poiché all'attività mancano le risorse richieste, come CPU e memoria, ciò potrebbe ostacolare l'avvio dell'esecuzione dell'attività e portare direttamente alla perdita. la scadenza per il completamento dell'attività, quindi il problema della scadenza si evolve diventando un problema di pianificazione delle risorse.
Ciò ha un impatto cruciale sugli algoritmi di pianificazione e sulla progettazione delle attività.
Il cosiddetto sistema operativo incorporato si riferisce a un sistema operativo che viene eseguito su un sistema informatico incorporato per supportare applicazioni integrate. Si tratta di una raccolta di software utilizzata per controllare e gestire le risorse hardware e software nei sistemi incorporati e fornire servizi di sistema. Il sistema operativo incorporato è una parte importante del software incorporato. La sua comparsa ha migliorato l'efficienza dello sviluppo di software embedded, ha migliorato la portabilità del software applicativo e ha promosso efficacemente lo sviluppo di sistemi embedded.
1.Caratteristiche dei sistemi operativi embedded
Rispetto ai sistemi operativi generici, i sistemi operativi embedded presentano principalmente le seguenti caratteristiche:
(1) Miniaturizzazione: la piattaforma operativa del sistema operativo incorporato non è un computer di uso generale, ma un sistema informatico incorporato. Questo tipo di sistema generalmente non dispone di memoria di grande capacità e quasi nessuna memoria esterna, pertanto il sistema operativo integrato deve essere compatto per occupare la minor quantità possibile di risorse di sistema. Per migliorare la velocità di esecuzione e l'affidabilità del sistema, il software nel sistema embedded viene generalmente solidificato nel chip di memoria invece di essere archiviato in un supporto come un disco.
(2) Elevata qualità del codice: nella maggior parte delle applicazioni, lo spazio di archiviazione è ancora una risorsa preziosa, che richiede che il codice del programma sia di alta qualità e che il codice sia il più snello possibile.
(3) Specializzazione: esistono varie piattaforme hardware per sistemi embedded e i processori vengono aggiornati rapidamente. Ciascuna di esse è appositamente progettata per diversi campi di applicazione. Pertanto, il sistema operativo integrato deve avere una buona adattabilità e portabilità e deve anche supportare più piattaforme di sviluppo.
(4) Ottime prestazioni in tempo reale: i sistemi integrati sono ampiamente utilizzati nel controllo dei processi, nella raccolta dati, nelle comunicazioni, nell'elaborazione di informazioni multimediali e in altre situazioni che richiedono una risposta in tempo reale. Pertanto, le prestazioni in tempo reale sono diventate un'altra caratteristica dei sistemi operativi integrati .
(5) Tagliabile e configurabile: la diversità delle applicazioni richiede che il sistema operativo integrato abbia una forte adattabilità e possa essere configurato in modo flessibile e ragionevolmente tagliato in base alle caratteristiche e ai requisiti specifici dell'applicazione per adattarsi ai requisiti di miniaturizzazione e specializzazione.
2.Classificazione dei sistemi operativi embedded
Esistono molti tipi di sistemi operativi integrati, che possono essere classificati da diverse prospettive. Dalla forma di acquisizione del sistema operativo embedded si può dividere in due categorie: di tipo commerciale e di tipo gratuito:
(1) Tipo commerciale. I sistemi operativi embedded commerciali generalmente hanno funzioni stabili e affidabili, supporto tecnico completo, strumenti di sviluppo completi e servizi post-vendita. Come VxWorks di WindRiver, pSOS e Palm OS di Palm, ecc. Tuttavia, è costoso e gli utenti solitamente non riescono a ottenere il codice sorgente del sistema.
(2) Tipo libero. Il vantaggio di un sistema operativo embedded gratuito risiede nel suo prezzo. Inoltre, gli sviluppatori del sistema applicativo possono ottenere il codice sorgente del sistema, il che rende comodo lo sviluppo. Tuttavia, i sistemi operativi gratuiti hanno funzioni semplici, scarso supporto tecnico e scarsa stabilità del sistema. I sistemi rappresentativi tipici includono Linux incorporato, uC/OS, ecc. Dalla natura in tempo reale dei sistemi operativi incorporati, possono essere suddivisi in due categorie: sistemi operativi incorporati in tempo reale e sistemi operativi incorporati non in tempo reale.
(1) Sistema operativo integrato in tempo reale (RTEOS). Il sistema operativo integrato in tempo reale supporta il lavoro del sistema in tempo reale. Il suo compito principale è pianificare tutte le risorse disponibili per soddisfare il limite di tempo in tempo reale per rispondere agli eventi esterni. In secondo luogo, si concentra sul miglioramento dell'efficienza del sistema. I sistemi operativi embedded in tempo reale sono utilizzati principalmente nel controllo, nella comunicazione e in altri campi. Attualmente, la maggior parte dei sistemi operativi embedded commerciali sono sistemi operativi in tempo reale.
(2) Sistema operativo incorporato non in tempo reale. Questo tipo di sistema operativo non presta particolare attenzione al tempo di risposta di una singola attività. Le sue prestazioni medie, l'efficienza del sistema e l'utilizzo delle risorse sono generalmente elevati ed è adatto per prodotti di elettronica di consumo che non hanno rigidi requisiti in tempo reale. quali assistenti digitali personali, set-top box, ecc.
Nel complesso, le prestazioni in tempo reale di un sistema embedded sono determinate dall'hardware, dal sistema operativo in tempo reale e dalle applicazioni. Tra questi, le prestazioni del nucleo del sistema operativo in tempo reale embedded svolgono un ruolo chiave. In generale, esistono due tipi di sistemi operativi embedded in tempo reale: RTEOS basato su kernel in tempo reale e RTEOS per scopi generici.
RTEOS di tipo kernel in tempo reale: questo tipo di sistema operativo, i driver sono tradizionalmente incorporati nel kernel e le applicazioni e il middleware sono implementati su interfacce di programmazione delle applicazioni standard (API, interfacce di programmazione delle applicazioni).
RTEOS per scopi generici in tempo reale: in questo tipo di sistema operativo, il driver non è profondamente integrato nel kernel, ma è implementato sopra il kernel e contiene solo alcuni driver necessari. Le applicazioni e il middleware possono essere implementati direttamente parte superiore del driver, anziché dover essere implementato nelle API standard. Le loro differenze sono mostrate nella Figura 12-8.
Esistono molte somiglianze funzionali tra i sistemi operativi embedded in tempo reale e i sistemi operativi generici. Ad esempio, entrambi supportano il multitasking, supportano la gestione delle risorse di software e hardware ed entrambi forniscono servizi di sistema operativo di base per le applicazioni.
1.Caratteristiche principali dei sistemi operativi embedded in tempo reale
Rispetto ai sistemi operativi generici, i sistemi operativi integrati in tempo reale hanno molte caratteristiche in termini di funzionalità. Le caratteristiche principali uniche dei sistemi operativi embedded in tempo reale che sono diversi dai sistemi operativi generici includono:
2.Indicatori di prestazioni in tempo reale dei sistemi operativi embedded in tempo reale Quando si valutano le prestazioni dei progetti di sistemi operativi in tempo reale, indicatori di prestazioni temporali
L'indicatore è l'indicatore di prestazione più importante Gli indicatori di prestazione temporale comunemente utilizzati includono principalmente quanto segue:
(1) Tempo di cambio attività: si riferisce al tempo necessario per trasferire il controllo della CPU da un'attività in esecuzione a un'altra attività pronta, compreso il tempo impiegato per salvare e ripristinare il contesto dell'attività e selezionare l'attività successiva da eseguire durante l'esecuzione della pianificazione delle attività tempo, questo indicatore è correlato al numero di registri e alla struttura del sistema del microprocessore. Lo stesso sistema operativo può richiedere tempi diversi se eseguito su microprocessori diversi. Il diagramma temporale corrispondente al tempo di commutazione dell'attività è mostrato nella Figura 12-9.
(2) Indicatori temporali relativi all'elaborazione dell'interruzione, il diagramma temporale dell'interruzione corrispondente è mostrato nella Figura 12-10
Il tempo di ritardo dell'interruzione si riferisce al tempo che intercorre tra il verificarsi dell'interruzione e l'apprendimento dell'interruzione da parte del sistema. È influenzato principalmente dal tempo massimo di interruzione dell'interruzione del sistema.
Maggiore è il tempo di interruzione, maggiore sarà il ritardo di interruzione;
Tempo di esecuzione dell'elaborazione dell'interruzione, determinato dall'applicazione specifica;
Il tempo di risposta all'interruzione si riferisce al tempo che intercorre tra il verificarsi di un'interruzione e l'inizio dell'esecuzione della routine di servizio di interruzione dell'utente;
Il tempo di ripristino dell'interruzione si riferisce al tempo che intercorre tra la fine della routine del servizio di interruzione dell'utente e il ritorno al codice interrotto;
Il tempo massimo di interruzione include due aspetti: uno è il tempo massimo di interruzione del kernel, ovvero il kernel disattiva gli interrupt durante l'esecuzione del codice della sezione critica, l'altro è il tempo di interruzione dell'applicazione e il tempo massimo di interruzione tempo è il massimo di questi due tempi di interruzione. ;Il tempo di risposta dell'attività si riferisce al tempo da quando viene generato l'interrupt corrispondente all'attività a quando l'attività inizia effettivamente a funzionare;
Per la pianificazione prerilasciabile, il tempo per il ripristino dell'interruzione viene aggiunto anche al tempo per il cambio di attività e il ripristino del nuovo contesto dell'attività.
fra.
(3) Tempo di risposta del sistema: si riferisce al tempo da quando il sistema invia una richiesta di elaborazione a quando il sistema risponde, ovvero il ritardo di pianificazione. La dimensione di questo tempo è determinata principalmente dall'algoritmo di pianificazione delle attività del kernel. In sintesi, il tipico metodo di calcolo dell'indice di prestazione del kernel in tempo reale prerilasciabile è mostrato nella Tabella 12-3.
Finora, secondo statistiche incomplete, il numero totale di sistemi operativi embedded esistenti nel mondo raggiunge le centinaia. Esistono più di una dozzina di sistemi operativi più comunemente utilizzati. Questi sistemi operativi hanno un'elevata popolarità e un'ampia base di utenti nei rispettivi campi di applicazione. La Tabella 12-4 seleziona alcuni sistemi operativi embedded comuni nel settore per il confronto.
Il compito principale della progettazione di sistemi embedded è definire le funzioni del sistema, determinare l'architettura del sistema e mappare le funzioni sull'architettura di implementazione del sistema. In questo caso, l'architettura del sistema include sia l'architettura del sistema software che l'architettura del sistema hardware. Un'architettura può essere mappata su una varietà di implementazioni fisiche diverse, ciascuna delle quali rappresenta diversi compromessi pur soddisfacendo determinati criteri di progettazione e ottimizzandone altri.
Il metodo di progettazione dei sistemi embedded è diverso dai metodi generali di progettazione hardware e sviluppo software. Adotta il metodo di co-progettazione hardware e software. Il processo di sviluppo non coinvolge solo la conoscenza nel campo del software, ma coinvolge anche una conoscenza completa dell'hardware campo, e coinvolge anche macchinari, ecc. aspetti della conoscenza. Ai progettisti è richiesta la conoscenza e la capacità di utilizzare liberamente le diverse tecnologie presenti in questi ambiti al fine di ottimizzare il sistema progettato.
Sebbene le soluzioni di progettazione del software applicativo dei sistemi embedded varino a seconda dei diversi campi di applicazione, anche i metodi di analisi e progettazione dei sistemi embedded seguono i principi generali dell'ingegneria del software. Molti metodi di analisi e progettazione maturi possono essere applicati nel campo embedded. Il processo di sviluppo dei sistemi embedded comprende anche diverse fasi fondamentali: analisi dei requisiti, progettazione del sistema, implementazione e test, e ogni fase ha le sue caratteristiche e il suo focus unici.
Questa sezione introduce principalmente la tecnologia e i metodi di sviluppo e progettazione di sistemi embedded e analizza i metodi di progettazione del software applicativo e i principali problemi affrontati nel processo di progettazione dal punto di vista delle applicazioni di sistemi embedded e dei modelli informatici. Infine, vengono discusse le questioni relative al trapianto di software nel campo dell'embedded.
Prima di progettare un sistema embedded, dovrebbero essere chiarite le caratteristiche della progettazione del sistema embedded stesso e alcuni dei principali indicatori tecnici per misurare la progettazione del sistema embedded.
1.Caratteristiche della progettazione di sistemi embedded
Rispetto alla normale progettazione del sistema, la progettazione del sistema embedded presenta le seguenti caratteristiche:
2.Indicatori tecnici dei sistemi embedded
Gli indicatori comunemente utilizzati per la progettazione di sistemi embedded includono:
(1) Costo NRE (costo di ingegneria non ricorrente): il costo monetario una tantum che deve essere pagato per progettare il sistema. Cioè, una volta completata la progettazione, è possibile fabbricare un numero qualsiasi di prodotti senza pagare costi di progettazione aggiuntivi .
(2) Costo unitario: il costo monetario necessario per produrre un singolo prodotto, esclusi i costi NRE.
(3) Dimensione: si riferisce allo spazio occupato dal sistema. Per il software si misura generalmente dal numero di byte; per l'hardware si misura dal numero di porte logiche o transistor.
(4) Prestazioni: il tempo necessario al sistema per completare le attività specificate è l'indicatore di progettazione più comunemente utilizzato durante la progettazione. Esistono due metodi di misurazione principali. Uno è il tempo di risposta, ovvero il tempo tra l'inizio dell'esecuzione e la fine l'obiettivo. Il secondo è l'importo di completamento, ovvero la quantità di attività completate per unità di tempo.
(5) Potenza: la potenza consumata dal sistema, che determina la durata della batteria o i requisiti di dissipazione del calore del circuito.
(6) Flessibilità: la capacità di modificare le funzioni del sistema senza aumentare i costi NRE.
(7) Tempo di creazione del prototipo: il tempo necessario per stabilire una versione eseguibile del sistema. Il prototipo del sistema può essere più grande e più costoso del prodotto finale, ma può verificare l'uso e la correttezza del sistema e migliorare la funzionalità del sistema. sistema.
(8) Tempo di immissione sul mercato: il tempo che intercorre tra lo sviluppo del sistema e il momento in cui può essere venduto ai consumatori. I fattori d'influenza più importanti includono il tempo di progettazione, il tempo di produzione e il tempo di test.
(9) Manutenibilità: la facilità con cui un sistema può essere modificato dopo essere stato lanciato o commercializzato, soprattutto da sviluppatori non originali.
(10) Correttezza: Se la funzione del sistema è implementata correttamente, la funzione del sistema può essere verificata durante l'intero processo di progettazione e si può anche inserire un circuito di prova per verificare se è corretto.
(11) Sicurezza: la probabilità che il sistema non causi danni. Vari indicatori di progettazione generalmente competono tra loro. Il miglioramento di un indicatore porta spesso al deterioramento di altri indicatori. Per soddisfare al meglio i requisiti di ottimizzazione della progettazione, i progettisti devono comprendere varie tecnologie di implementazione software e hardware ed essere in grado di imparare da esse la tecnologia viene trasferita a un'altra per trovare la soluzione migliore sotto vincoli specifici.
3.Sfide di progettazione di sistemi embedded
Le sfide affrontate dalla progettazione di sistemi embedded includono i seguenti aspetti.
(1) Quanto hardware è necessario: i progettisti hanno un forte controllo sulla potenza di calcolo utilizzata per risolvere i problemi. Non solo possono scegliere quale processore utilizzare, ma anche la quantità di memoria, periferiche utilizzate, ecc., perché la progettazione non si limita a farlo. Per soddisfare i requisiti prestazionali, ci sono anche vincoli sui costi di produzione. La scelta dell'hardware è molto importante. Troppo poco hardware non riuscirà a soddisfare i requisiti funzionali e prestazionali, e troppo hardware renderà il prodotto troppo costoso.
(2) Come rispettare il limite di tempo: non è consigliabile utilizzare il metodo di aumento della velocità del processore per far funzionare il programma più velocemente per risolvere il limite di tempo, perché ciò aumenterà il prezzo del sistema. Allo stesso tempo, l'aumento della frequenza di clock del processore a volte non migliora la velocità di esecuzione, poiché la velocità del programma potrebbe essere limitata dal sistema di archiviazione.
(3) Come ridurre il consumo energetico del sistema: per i sistemi alimentati a batteria, il consumo energetico è una questione molto delicata. Per i sistemi non alimentati a batteria, elevata potenza significa elevata dissipazione del calore. Un modo per ridurre il consumo energetico del sistema è ridurre la velocità di elaborazione, ma la semplice riduzione della velocità di elaborazione porterà ovviamente a prestazioni insoddisfacenti. Pertanto, è necessario eseguire un'attenta progettazione per ridurre il consumo energetico rispettando i limiti di prestazioni.
(4) Come garantire la scalabilità del sistema: La piattaforma hardware del sistema può utilizzare diverse generazioni o utilizzare diversi livelli di prodotti della stessa generazione. Questi richiedono solo alcune semplici modifiche. Il progettista deve modificare le caratteristiche del sistema modificando il software. Progettare una macchina in grado di fornire capacità prestazionali che non sono ancora disponibili nel software.
(5) Come garantire l'affidabilità del sistema: l'affidabilità è un indicatore importante quando si vendono prodotti. È un requisito ragionevole dei consumatori che il prodotto possa funzionare bene. L'affidabilità è particolarmente importante in alcuni sistemi, come i sistemi di controllo della sicurezza.
(6) Complessità del test: testare un sistema embedded è molto più difficile del semplice inserimento di alcuni dati, quindi è necessario far funzionare l'intera macchina per generare dati corretti Il momento in cui i dati vengono generati è molto importante, ovvero non può abbandonare il sistema embedded. Lavorare con l'intero ambiente per testare i sistemi embedded.
(7) Visibilità e controllabilità limitate: i sistemi integrati di solito non dispongono di dispositivi di visualizzazione e tastiere, il che rende difficile per gli sviluppatori capire cosa sta succedendo all'interno del sistema e non possono rispondere alle azioni del sistema. A volte devono osservare i microcontrollori segnali da comprendere. Nei sistemi in tempo reale, generalmente non è possibile spegnere il sistema per l'osservazione.
(8) Ambiente di sviluppo limitato: l'ambiente di sviluppo dei sistemi integrati, come software di sviluppo e strumenti hardware, è solitamente più limitato dell'ambiente disponibile su computer o workstation per uso generale, pertanto è possibile utilizzare solo lo sviluppo incrociato, il che è molto importante influenza il progresso dello sviluppo.
Similmente allo sviluppo di sistemi generali, lo sviluppo di sistemi embedded può anche adottare modelli di sviluppo comuni nell'ingegneria del software, tra cui principalmente il modello a cascata, il modello a spirale, il modello di perfezionamento graduale e il modello gerarchico.
1.Modelli di sviluppo comuni
Un processo di progettazione è una serie di passaggi che dovrebbero essere seguiti durante la progettazione di un sistema, alcuni dei quali possono essere eseguiti tramite strumenti automatizzati, mentre altri possono essere eseguiti solo manualmente. Nel campo dei sistemi embedded, esistono i seguenti modelli di processo di sviluppo comunemente utilizzati.
(1) Modello a cascata. Il modello a cascata è costituito da cinque fasi principali: la fase di analisi dei requisiti determina le caratteristiche di base del sistema di destinazione; la fase di progettazione della struttura del sistema scompone le funzioni del sistema in strutture principali; la fase di codifica principalmente scrive ed esegue il debug dei programmi; la fase di test rileva gli errori; e l'ultima È la fase di manutenzione, che è principalmente responsabile della modifica del codice per adattarsi ai cambiamenti nell'ambiente, della correzione degli errori e dell'aggiornamento. Il lavoro e le informazioni in ogni fase fluiscono sempre in una direzione, dall'astrazione di alto livello alle fasi di progettazione più dettagliate, che costituisce un modello di progettazione top-down ideale.
(2) Modello a spirale. Il modello a spirale presuppone che debbano essere costruite più versioni del sistema. La prima versione è un semplice modello sperimentale per aiutare il progettista a stabilire l'intuizione sul sistema e accumulare esperienza nello sviluppo di questo sistema. Man mano che la progettazione procede, verranno sviluppate versioni più complesse creato. In ogni livello di progettazione, i progettisti attraversano tre fasi: analisi della domanda, progettazione strutturale e test. In una fase successiva, quando verranno costruite versioni più complesse del sistema, sarà svolto più lavoro in ciascuna fase e la spirale di progettazione dovrà essere ampliata. Questo approccio graduale al perfezionamento consente al progettista di approfondire la propria comprensione del sistema sviluppato attraverso una serie di cicli di progettazione. Il primo anello nella parte superiore della spirale è molto piccolo e corto, mentre l'ultimo anello nella parte inferiore della spirale aggiunge dettagli ai primi anelli del modello a spirale, che è più realistico del modello a cascata.
(3) Affinamento graduale del modello. Il modello di perfezionamento graduale è un sistema che viene costruito più volte. Il primo sistema viene utilizzato come prototipo, quindi il sistema viene ulteriormente perfezionato uno per uno. Questo approccio ha senso quando il progettista non ha molta familiarità con il dominio applicativo del sistema in costruzione. Perfezionare il sistema costruendo diversi sistemi di complessità crescente consente ai progettisti di testare l'architettura e le tecniche di progettazione. Inoltre, varie tecniche iterative possono essere completate solo parzialmente fino al completamento definitivo del sistema.
(4) Modello gerarchico. Molti sistemi embedded stessi sono composti da progetti più piccoli e un sistema completo può richiedere vari componenti software e hardware. Queste parti possono essere composte da parti più piccole che devono ancora essere progettate, quindi il processo di progettazione cambia con il livello di astrazione del sistema, dalla progettazione iniziale del sistema completo alla progettazione delle singole parti, dalla progettazione complessiva alla fine dal livello di astrazione più alto a quello intermedio La progettazione dettagliata a livello astratto e quindi la progettazione di ciascun modulo specifico vengono sviluppate strato dopo strato. Ciascun processo può essere intrapreso da un singolo progettista o da un team di progettazione. Ciascun gruppo si basa sui risultati di altri gruppi e ciascun gruppo impara dai superiori. I gruppi ottengono i requisiti mentre i gruppi genitori fanno affidamento sulla qualità e sulle prestazioni dei progetti dei singoli gruppi. Inoltre, ogni fase di implementazione del processo è un processo completo, dalle specifiche ai test.
2.Metodi di progettazione di sistemi embedded
Un buon metodo di progettazione del sistema embedded è molto importante perché:
(1) Un buon metodo di progettazione consente ai progettisti di comprendere chiaramente lo stato di avanzamento del lavoro che stanno svolgendo, in modo da garantire che nessuno di essi venga perso.
(2) Consentire l'uso di strumenti computerizzati per aiutare i progettisti a lavorare e dividere l'intero processo in diverse fasi controllabili.
(3) Buoni metodi di progettazione facilitano la comunicazione tra i membri del gruppo di progettazione Definendo un processo di progettazione completo, ciascun membro del gruppo può avere una buona comprensione del lavoro che deve svolgere e dei passaggi necessari per completare i compiti assegnati. obiettivi raggiunti.
Il processo di sviluppo del software di sistema integrato può essere suddiviso in diverse fasi come pianificazione del progetto, analisi di fattibilità, analisi dei requisiti, progettazione di massima, progettazione dettagliata, creazione del programma, download, debugging, solidificazione, test e funzionamento.
Le fasi di pianificazione del progetto, analisi di fattibilità, analisi dei requisiti, progettazione di massima e progettazione dettagliata sono sostanzialmente le stesse del processo di sviluppo del software generale e possono essere tutte eseguite secondo metodi di ingegneria del software, come metodi di prototipazione, metodi strutturati, ecc. .
Poiché gli ambienti di esecuzione e di sviluppo del software embedded sono diversi, il lavoro di sviluppo viene svolto in modo trasversale, quindi questo deve essere considerato in ogni fase. Il lavoro nella fase di definizione del programma si basa sui documenti generati durante la fase di progettazione dettagliata. Il lavoro in questa fase comprende principalmente diversi sottoprocessi come la scrittura, la compilazione e il collegamento del codice sorgente. Queste attività vengono tutte eseguite sulla macchina host e non richiedono l'uso della macchina di destinazione. Dopo aver generato il file eseguibile dell'applicazione, è necessario utilizzare l'ambiente di sviluppo incrociato per il debug. È possibile scegliere in base alla situazione reale.
Fallo utilizzando uno dei numerosi metodi di debug disponibili o una combinazione valida di essi. La progettazione del sistema integrato è diversa dalla progettazione del software tradizionale, come mostrato nella Figura 12-11. Spesso implica la progettazione hardware e software, dove le attività front-end, come le specifiche e l'architettura del sistema, richiedono la considerazione sia degli aspetti hardware che software.
Allo stesso modo, la progettazione back-end come l'integrazione e il test del sistema considera l'intero sistema. Nella fase intermedia, i componenti software e hardware vengono sviluppati indipendentemente gli uni dagli altri e la maggior parte del lavoro hardware e software può essere eseguito in modo relativamente indipendente. Infine, il programma eseguibile corretto dopo il debug deve essere consolidato sul computer di destinazione.A seconda della configurazione dell'hardware del sistema integrato, esistono diversi metodi di polimerizzazione. Può essere polimerizzato in memorie come EPROM e FLASH o in dispositivi elettronici come DOC e DOM.
sottopiastra. Di solito viene fatto con l'aiuto di alcuni programmatori speciali.
Poiché i sistemi embedded hanno requisiti di sicurezza e affidabilità più elevati rispetto ai sistemi informatici generici, è necessaria una maggiore copertura del codice quando si eseguono test white-box dei sistemi embedded. In ogni fase del processo di sviluppo del sistema, devono essere effettuate la conferma del sistema e la valutazione delle prestazioni, la valutazione della sicurezza e la valutazione dei rischi, e l'implementazione del sistema deve essere testata e verificata.
Lo sviluppo di sistemi embedded è uno sviluppo completo di software e hardware, che è molto diverso dallo sviluppo di sistemi generali. Da un lato, ogni sistema embedded è una combinazione di software e hardware, dall'altro, una volta che il sistema embedded viene sviluppato, il software viene solidificato nel prodotto insieme all'hardware e ha una forte specificità. Sotto l'influenza di queste caratteristiche, deve esserci una metodologia ingegneristica diversa dal processo generale di sviluppo del software per supportare il processo di sviluppo dei sistemi embedded. Allo stesso tempo, queste caratteristiche determinano anche le tecnologie core uniche utilizzate nello sviluppo di sistemi embedded.
In generale, nel campo dello sviluppo integrato, esistono tre principali tecnologie fondamentali: tecnologia dei processori, tecnologia dei circuiti integrati e tecnologia di progettazione/verifica.
1. Tecnologia del processore
La tecnologia dei processori è legata alla struttura del motore di calcolo che implementa le funzioni del sistema. Molti sistemi digitali non programmabili possono anche essere considerati processori. La differenza tra questi processori è il loro grado di specializzazione per funzioni specifiche, che risulta in specifiche di progettazione diverse da altri processori. .
(1) Processore per uso generale. Questo tipo di processore può essere utilizzato per diversi tipi di applicazioni. Una caratteristica importante è la capacità di memorizzare programmi Poiché il progettista non sa quali operazioni eseguirà il processore, è impossibile creare un programma utilizzando circuiti digitali. Un'altra caratteristica è il percorso dati universale. Per gestire vari calcoli, il percorso dati è universale. Il percorso dati ha generalmente un gran numero di registri e una o più unità logiche aritmetiche di uso generale. Il progettista deve solo programmare la memoria del processore per eseguire le funzioni richieste, ovvero il software relativo alla progettazione.
L'utilizzo di processori generici nei sistemi embedded presenta numerosi vantaggi in termini di parametri di progettazione. Il tempo di commercializzazione e i costi NRE sono bassi perché il progettista deve solo scrivere il programma senza eseguire alcuna progettazione digitale. È altamente flessibile e è possibile apportare modifiche funzionali modificando il programma. Rispetto alla progettazione interna del processore, il costo unitario è inferiore quando la quantità è ridotta.
Naturalmente, questo metodo presenta anche alcuni difetti negli indicatori di progettazione. Quando la quantità è elevata, il costo unitario è relativamente elevato, perché quando la quantità è elevata, il costo dell'NRE autoprogettato viene ammortizzato, il che può ridurre il costo unitario. Allo stesso tempo, per alcune applicazioni, le prestazioni possono essere scarse. Le dimensioni del sistema e il consumo energetico potrebbero aumentare a causa dell'inclusione di hardware del processore non necessario.
(2) Processore monouso. Un processore monouso è un circuito digitale progettato per eseguire un programma specifico. Si riferisce anche a coprocessori, acceleratori, periferiche, ecc. Codec come JPEG eseguono un singolo processo per comprimere o decomprimere le informazioni video. I progettisti di sistemi embedded possono creare processori monouso progettando circuiti digitali specifici. I progettisti possono anche utilizzare processori commerciali monouso pre-progettati.
L'utilizzo di processori monouso nei sistemi embedded presenta alcuni vantaggi e svantaggi in termini di metrica. Questi vantaggi e svantaggi sono fondamentalmente opposti ai processori per uso generale. Le prestazioni potrebbero essere migliori, le dimensioni e la potenza potrebbero essere inferiori, il costo unitario potrebbe essere inferiore quando la quantità è elevata e il tempo di progettazione e il costo NRE potrebbero essere elevati. la flessibilità è scarsa e il costo unitario orario è più elevato, per alcune applicazioni le prestazioni non sono buone quanto quelle dei processori per uso generale.
(3) Processore dedicato. Un processore di set di istruzioni per scopi speciali è un processore programmabile ottimizzato per un tipo specifico di applicazione. Tali applicazioni specifiche hanno le stesse caratteristiche, come il controllo integrato, l'elaborazione del segnale digitale, ecc. L'uso di processori dedicati nei sistemi embedded può fornire maggiore flessibilità garantendo al tempo stesso buone prestazioni, potenza e dimensioni, ma tali processori richiedono ancora costi elevati per costruire il processore stesso e il compilatore. Microcontrollori e processori di segnali digitali sono due tipi di processori specializzati ampiamente utilizzati. I processori di segnali digitali sono microprocessori che eseguono operazioni comuni sui segnali digitali, mentre i microcontrollori sono microprocessori ottimizzati per applicazioni di controllo integrate.
2. Tecnologia dei circuiti integrati
La tecnologia di implementazione che ottiene il processo di mappatura fisica del chip reale dalla descrizione del progetto del circuito integrato del sistema è la tecnologia IC (Integrated Circuits, circuito integrato). Attualmente esistono tre tipi di tecnologie di implementazione nel campo dei semiconduttori, ovvero la personalizzazione completa , semi-personalizzazione e tecnologia programmabile Può essere applicata alla progettazione hardware di sistemi embedded.
(1) Completamente personalizzato/VLSI (Very Large Scale Integrated Circuits, circuiti integrati su scala molto grande). Nella tecnologia IC completamente personalizzata, i progettisti a ogni livello devono ottimizzare l'implementazione digitale di uno specifico sistema embedded. I progettisti iniziano dalle dimensioni del layout, dalla posizione e dal cablaggio dei transistor per ottenere un elevato utilizzo dell'area del chip, alta velocità e basso consumo energetico. Ottimizzare le prestazioni. Utilizzando maschere per produrre chip reali nello stabilimento di produzione, i progetti di circuiti integrati completamente personalizzati, spesso chiamati anche VLSI, hanno costi NRE elevati, tempi di produzione lunghi e sono adatti per applicazioni ad alto volume o con prestazioni critiche.
(2) Semi-custom/ASIC (Application Specific Integrated Circuit, circuito integrato specifico dell'applicazione). L'ASIC semi-personalizzato è un metodo di progettazione vincolato, che include il metodo di progettazione del gate array e il metodo di progettazione delle celle standard. Si tratta di un hardware semilavorato con alcuni componenti unitari universali e gruppi di componenti realizzati sul chip. Il progettista deve solo considerare le funzioni logiche del circuito e le connessioni ragionevoli tra i moduli funzionali. Questo metodo di progettazione è flessibile, conveniente ed economico, accorcia il ciclo di progettazione e migliora la resa.
(3) Programmabile/ASIC. Tutti gli strati del dispositivo programmabile esistono già Una volta completata la progettazione, il chip progettato può essere cotto in laboratorio senza il coinvolgimento dei produttori di circuiti integrati e il ciclo di sviluppo viene notevolmente ridotto. L'ASIC programmabile ha un costo NRE inferiore, un costo unitario più elevato, un consumo energetico più elevato e una velocità inferiore.
3.Tecnologia di progettazione/verifica
La tecnologia di progettazione dei sistemi embedded comprende principalmente due categorie: tecnologia di progettazione hardware e tecnologia di progettazione software. Tra questi, la tecnologia nel campo della progettazione hardware comprende principalmente la tecnologia di progettazione a livello di chip e la tecnologia di progettazione a livello di circuito stampato.
Il nucleo della tecnologia di progettazione a livello di chip è la compilazione/sintesi, la libreria/IP (proprietà intellettuale, proprietà intellettuale) e il test/verifica. La tecnologia di compilazione/sintesi consente ai progettisti di descrivere le funzionalità richieste in modo astratto e di analizzare e inserire automaticamente i dettagli di implementazione. La tecnologia libreria/IP utilizza implementazioni di astrazione di basso livello preprogettate per astrazioni di alto livello. La tecnologia di test/verifica garantisce che ciascun livello funzioni correttamente, riducendo il costo della progettazione iterativa tra i livelli.
Il nucleo della tecnologia di progettazione del software è il linguaggio del software. I linguaggi software hanno sperimentato il processo di sviluppo da linguaggi di basso livello (linguaggio macchina, linguaggio assembly) a linguaggi di alto livello (ad esempio, linguaggi di progettazione strutturati, linguaggi di progettazione orientati agli oggetti). tecnologia di assemblaggio, tecnologia di analisi, tecnologia di compilazione/interpretazione, ecc. Molte tecnologie correlate. Anche i livelli dei linguaggi software stanno gradualmente passando dal livello di implementazione, dal livello di progettazione e dal livello funzionale allo sviluppo del linguaggio a livello di domanda.
All'inizio, con la graduale formazione del concetto di processori generici, la tecnologia software si sviluppò rapidamente, anche la complessità del software iniziò ad aumentare e le tecnologie e i campi della progettazione del software e della progettazione dell'hardware furono completamente separati. Tecniche e strumenti di progettazione si sono sviluppati simultaneamente in questi due campi, consentendo di eseguire la descrizione del comportamento a livelli sempre più astratti per adattarsi alle crescenti esigenze di complessità della progettazione. Questo sviluppo simultaneo ora fa sì che entrambi i campi utilizzino lo stesso modello temporale per descrivere il comportamento, quindi è possibile che i due campi vengano nuovamente unificati in un unico campo.
In considerazione del fatto che la maggior parte dei sistemi embedded sono sistemi reattivi in tempo reale, i sistemi reattivi hanno le caratteristiche di concorrenza multi-task, rigidi vincoli temporali e alta affidabilità. Per la progettazione e la descrizione dei sistemi reattivi, le persone ne hanno successivamente proposto una varietà linguaggi di descrizione e metodologia di validazione. Ad esempio, la logica sequenziale viene utilizzata per descrivere la natura dei sistemi reattivi e ragionare sul comportamento dei sistemi reattivi, e la tecnologia di controllo dei modelli viene utilizzata per verificare la correttezza dei progetti di sistemi reattivi. Queste tecnologie hanno gradualmente svolto un ruolo importante nello sviluppo integrato processi. .
Esistono molti tipi di ambienti di sviluppo per sistemi embedded, che generalmente possono essere suddivisi nelle seguenti categorie:
(1) Ambienti di sviluppo che supportano sistemi operativi incorporati. Esistono molti ambienti di sviluppo in questa categoria, come PalmOS, THOS, VxWorks, Windows CE e altri sistemi operativi incorporati commerciali, che dispongono di ambienti di sviluppo completamente funzionali che li supportano.
(2) Ambiente di sviluppo che supporta il chip del processore. Questo tipo di ambiente di sviluppo viene generalmente fornito dai produttori di processori. Ad esempio, un kit di strumenti lanciato da EPSON appositamente per lo sviluppo di sistemi embedded basati sulla serie S1C33 di chip microcontrollore è questo tipo di ambiente di sviluppo.
(3) Un ambiente di sviluppo corrispondente alla piattaforma applicativa specifica. Questo tipo di ambiente di sviluppo è altamente mirato, come Brew SDK di Qualcomm.
(4) Altri tipi di ambienti di sviluppo. Questo tipo di ambiente di sviluppo si riferisce principalmente a un ambiente di sviluppo più generale sviluppato o personalizzato da alcuni fornitori di sistemi embedded basati su strumenti open source GNU. Tali strumenti sono disponibili gratuitamente, supportano un'ampia gamma di tipi di processori e hanno funzioni complete, ma il loro supporto tecnico è leggermente inferiore a quello degli strumenti commerciali professionali.
Poiché le funzioni dei sistemi embedded diventano sempre più complesse, diventa sempre più difficile descrivere il comportamento di questi sistemi funzionalmente complessi. La pratica ha dimostrato che descrivere e analizzare i sistemi utilizzando modelli computazionali è un metodo con valore ingegneristico.
Questa sezione introduce diversi modelli informatici comunemente utilizzati nel campo embedded e analizza e spiega le questioni relative alla progettazione e allo sviluppo di applicazioni embedded dal punto di vista dei modelli informatici. I modelli computazionali forniscono una serie di metodi per combinare comportamenti complessi con oggetti semplici, che possono aiutare i progettisti a comprendere e descrivere il comportamento del sistema. I modelli informatici comunemente utilizzati nei sistemi embedded includono quanto segue: modello di calcolo sequenziale, modello di processo di comunicazione, modello di macchina a stati, modello di flusso di dati, modello orientato agli oggetti e modello di processo simultaneo. Questi modelli sono utilizzati in diversi campi applicativi. Ad esempio, il modello della macchina a stati è particolarmente adatto per descrivere sistemi orientati al controllo, e il modello del flusso di dati può descrivere bene problemi di elaborazione e conversione dei dati. Attualmente il più utilizzato è il modello a processi simultanei.
1.Modello di macchina a stati
La Macchina a Stati Finiti (FSM) è un modello di stati di base che può utilizzare un insieme di possibili stati per descrivere il comportamento del sistema. Il sistema può trovarsi solo in uno degli stati in qualsiasi momento, oppure può anche descrivere lo stato determinato dall'input, infine, può descrivere le operazioni che possono verificarsi in un determinato stato o durante una transizione di stato.
La macchina a stati finiti FSM è una F a sei tuple<S,I,O,F,H,S0> , dove S è un insieme di stati {s0, s1,…,sl}, I è un insieme di ingressi {I0, I1,…,Im}, O è un insieme di uscite {o0, o1,…,on} e F è una funzione di sottostato. O una funzione di transizione, che mappa lo stato e l'ingresso nello stato (S×I→S), H è la funzione di uscita, che mappa lo stato nell'uscita (S→O), e S0 è lo stato iniziale. .
La Figura 12-12 è la descrizione della macchina a stati dell'unità di controllo dell'ascensore. Nello stato iniziale "inattivo", imposta su e giù su 0 e apri su 1. La macchina a stati rimane nello stato "inattivo" finché il piano richiesto non è diverso dal piano attuale. Se il piano richiesto è maggiore del piano attuale, la macchina a stati passa allo stato "su" e imposta fino a 1. Se il piano richiesto è inferiore al piano corrente, la macchina a stati si sposta nello stato "giù" e il basso viene impostato su 1. La macchina a stati rimane nello stato "giù" o "su" finché il piano attuale non è uguale al piano richiesto, quindi lo stato passa allo stato "aperto" con aperto impostato su 1. Di solito, il sistema ha un timer Pertanto, quando la macchina a stati passa allo stato di "porta aperta", anche il timer viene avviato. La macchina a stati rimane nello stato di "porta aperta" fino allo scadere del timer e infine passa a lo stato "inattivo".
Quando FSM viene utilizzato nella progettazione di sistemi embedded, i tipi di dati del suo input e output sono entrambi tipi booleani e la funzione rappresenta una funzione booleana contenente operazioni booleane. Questo modello è stato utilizzato per molti sistemi di controllo puri senza input o output di dati sufficienti . Se si desidera elaborare i dati, estendere l'FSM a una macchina a stati con datapath (FSM con Datapath, FSMD). Inoltre, il modello della macchina a stati può essere ulteriormente esteso per supportare la gerarchia e la concorrenza. Questo modello è chiamato modello FSM gerarchico/concorrente (HCFSM).
2.modello di flusso di dati
Il modello del flusso di dati è un modello derivato dal modello multi-task simultaneo. Questo modello descrive il comportamento del sistema come un insieme di nodi e bordi, dove i nodi rappresentano le trasformazioni e i bordi rappresentano il flusso di dati da un nodo a un altro nodo. . Ogni nodo utilizza i dati dai suoi bordi di input, esegue trasformazioni e produce dati sui suoi bordi di output.
Ogni bordo può avere o meno dati. I dati che appaiono sul bordo sono chiamati token. Quando tutti i bordi di input di un nodo hanno almeno un token, il nodo può essere attivato. Dopo che il nodo è stato attivato, verrà utilizzato un token da ciascun fronte di input, la trasformazione dei dati verrà eseguita su tutti i token utilizzati e verrà generato un token sul fronte di output. L'attivazione del nodo dipende solo dalla presenza del token .
La Figura 12-13 mostra il modello del flusso di dati per il calcolo di z=(a+b)×(cd). Attualmente esistono diversi strumenti commerciali che supportano l'espressione di modelli di flusso di dati in linguaggi grafici. Questi strumenti possono convertire automaticamente i modelli di flusso di dati in modelli multi-task simultanei per l'implementazione su microprocessori. Il metodo di conversione consiste nel convertire ciascun nodo in un'attività e ciascun bordo in un canale. Il metodo di implementazione del modello multi-task simultaneo consiste nell'utilizzare un sistema operativo in tempo reale per mappare attività simultanee.
La Figura 12-14 è un modello di flusso di dati sincrono. In questo modello, ciascun bordo di input e ciascun bordo di output del nodo sono contrassegnati con il numero di token utilizzati e generati per ciascun trigger. Il vantaggio di questo modello è che non è necessario convertirlo in un modello multi-task simultaneo durante l'implementazione. I nodi vengono invece pianificati in modo statico per generare un modello di programma sequenziale. Il modello può essere espresso utilizzando un linguaggio di programmazione sequenziale (come il linguaggio C) e può essere eseguito senza un sistema operativo in tempo reale, quindi la sua efficienza di esecuzione è maggiore.
3. Modello di processo simultaneo
Il modello di processo simultaneo è composto da un gruppo di processi Ogni processo è un processo di esecuzione sequenziale e ogni processo può essere eseguito contemporaneamente. Il modello di processo simultaneo fornisce operazioni per creare, terminare, sospendere, riprendere e connettere processi. I processi possono comunicare tra loro e scambiare dati durante l'esecuzione. La comunicazione tra processi può assumere due forme: variabili condivise e scambio di messaggi. Semafori, sezioni critiche, tubi, espressioni di percorso, ecc. vengono utilizzati per sincronizzare le operazioni di processi concorrenti.
In generale, un sistema in tempo reale può essere visto come un sistema composto da molti processi eseguiti contemporaneamente, ciascuno dei quali ha requisiti di tempo. In questo modo, molti sistemi embedded sono più facilmente descritti da una serie di attività eseguite contemporaneamente, perché questi sistemi stessi sono sistemi multi-tasking e il modello di processo simultaneo può essere naturalmente implementato dal multi-tasking di un sistema operativo in tempo reale.
4.modello orientato agli oggetti
Il modello di processo simultaneo tradizionale è progettato attorno al concetto di processo. Il processo è un concetto a livello di implementazione. È una simulazione indiretta delle attività nel mondo oggettivo. Pertanto, è estremamente difficile utilizzare il modello di processo per risolvere problemi di concorrenza mondo oggettivo. È innaturale e rende anche i programmi concorrenti difficili da progettare e comprendere.
Il modello orientato agli oggetti descrive le attività nel mondo oggettivo in un modo più diretto e nel modello è presente una potenziale capacità di esecuzione simultanea. Dopo che un oggetto ha inviato un messaggio a un altro oggetto, se il risultato dell'elaborazione del messaggio non è necessario o non è necessario immediatamente, il primo non deve attendere che il secondo elabori il messaggio e il mittente e il destinatario del messaggio possono eseguire in concomitanza.Gli oggetti non sono tutti in uno stato di fornitura di servizi passiva Oltre a fornire servizi ricevendo messaggi, alcuni di essi possono anche avere una propria elaborazione delle transazioni.
motivo. Un oggetto può spesso gestire più messaggi contemporaneamente.
Un oggetto è un incapsulamento di dati e operazioni. I dati sono memorizzati nelle variabili locali dell'oggetto. Lo stato dell'oggetto è rappresentato dai valori di tutte le variabili locali dell'oggetto in un determinato momento. In un ambiente concorrente è necessario considerare anche la descrizione dello stato simultaneo dell'oggetto, poiché il controllo della concorrenza dell'oggetto si basa sullo stato simultaneo dell'oggetto. La combinazione di concorrenza e orientamento agli oggetti può essere riassunta in due modi:
(1) Introdurre il meccanismo di concorrenza nel modello orientato agli oggetti, sfruttare appieno la tecnologia orientata agli oggetti per descrivere la buona capacità di modello del mondo oggettivo e varie importanti caratteristiche dell'orientamento agli oggetti e allo stesso tempo descrivere le sue potenziali capacità di concorrenza , rendendolo adatto per descrivere il calcolo simultaneo.
(2) Introdurre il pensiero orientato agli oggetti nel modello di concorrenza tradizionale. I modelli di concorrenza orientati agli oggetti possono essere suddivisi in due tipi: modelli di concorrenza implicita e modelli di concorrenza esplicita.
(1) Modello di concorrenza implicita. Questo modello è caratterizzato dal rinvio della progettazione simultanea e dall'utilizzo della modellazione a oggetti come base per la modellazione. Prima di entrare nella fase di esecuzione, tratta gli oggetti come unità autonome e le attività dei vari oggetti come compiti specifici completati in modo simultaneo ideale. Proprio come ogni oggetto ha il proprio processore, questo processore può fornire un thread di esecuzione per l'oggetto. Gli eventi esterni che entrano nel sistema sono considerati come una richiesta di elaborazione e vengono trasmessi ad alcuni oggetti. Questi oggetti poi inviano ulteriori richieste di elaborazione ad altri oggetti. Teoricamente, in corrispondenza di una richiesta, un numero qualsiasi di oggetti può eseguire l'elaborazione corrispondente. Durante l'implementazione, lo scheduler determina infine l'ordine delle operazioni sui suoi oggetti, come mostrato nella Figura 12.15.
(2) Modello di concorrenza esplicita. La caratteristica di questo modello è che la concorrenza dovrebbe essere considerata per prima e il concetto di concorrenza e il concetto di oggetto dovrebbero essere separati per primi. Dopo che l'oggetto è stato stabilito, il concetto di processo supportato dal sistema operativo in tempo reale viene utilizzato per rappresentare la concorrenza, formando due livelli astratti di oggetto e processo, ovvero scomponendo prima il sistema in processi quasi concorrenti come punto di partenza, e poi utilizzando la tecnologia orientata agli oggetti all'interno di ogni processo. Le interazioni tra gli oggetti sono espresse come chiamate di funzioni annidate e vengono aggiunti meccanismi di sincronizzazione espliciti come blocchi, monitor e semafori per garantire l'integrità degli oggetti. Questo modello colloca i processi sopra gli oggetti e non è necessario considerare la concorrenza o la serializzazione degli oggetti negli oggetti, come mostrato nella Figura 12.16.
Agli albori, il metodo di progettazione dei sistemi in tempo reale era principalmente un metodo di progettazione strutturata. I sistemi che utilizzavano metodi strutturati presentavano grandi limitazioni in termini di riusabilità e modificabilità. Il metodo di progettazione di sistemi in tempo reale orientato agli oggetti presenta ovviamente evidenti vantaggi in questi problemi. Il metodo di progettazione orientato agli oggetti più pratico è il metodo OCTOPUS di Nokia. Questo metodo si basa su OMT e sul metodo Fusion e propone metodi per elaborare il tempo di risposta del sistema in tempo reale, il dominio del tempo e la concorrenza e propone specificamente metodi per gestire il tempo reale. tempo di risposta del sistema, dominio del tempo e concorrenza. Gestione degli aspetti di concorrenza, sincronizzazione, comunicazioni, gestione degli interrupt, ASIC, interfacce hardware, tempi di risposta end-to-end, ecc. L'approccio OCTOPUS combina bene le fasi principali dello sviluppo del software, fornisce una transizione stretta e naturale dalle specifiche al modello in esecuzione e supporta lo sviluppo incrementale. Il metodo OCTOPUS è un tipico metodo di progettazione che combina l'attuale tecnologia orientata agli oggetti e sistemi in tempo reale. Inoltre, nella fase iniziale della modellazione del sistema in tempo reale vengono gradualmente applicate tecniche formali di sviluppo orientate agli oggetti e linguaggi di modellazione.
Prima di progettare, il progettista deve sapere cosa progettare. Requisiti e specifiche vengono spesso utilizzati per descrivere queste due fasi correlate ma distinte del processo di progettazione. I requisiti sono descrizioni informali di ciò che desiderano gli utenti, mentre le specifiche sono descrizioni più dettagliate, precise e coerenti che possono essere utilizzate per creare un'architettura di sistema. Naturalmente, i requisiti e le specifiche sono rappresentazioni esterne del sistema di guida, non rappresentazioni interne. Esistono due tipi di requisiti: requisiti funzionali e requisiti non funzionali I requisiti funzionali descrivono cosa deve fare il sistema, mentre i requisiti non funzionali descrivono altri attributi del sistema, come dimensioni fisiche, prezzo, consumo energetico, tempi di progettazione, affidabilità. Aspettare.
L'analisi dei requisiti per un sistema di grandi dimensioni è un compito complesso e dispendioso in termini di tempo, ma ottenere una piccola quantità di informazioni in un formato chiaro e semplice è un buon inizio per comprendere i requisiti del sistema. La Tabella 12-5 è un modulo dei requisiti che viene compilato all'inizio di un progetto e può essere utilizzato come lista di controllo quando si considerano le caratteristiche di base del sistema.
Il contenuto di questo modulo di requisiti è preparato utilizzando come esempio il GPS (Global Position System, sistema di mappe mobili). Il sistema di mappa mobile è un dispositivo portatile progettato per gli utenti che guidano su autostrade o utenti simili. Il dispositivo può ottenere informazioni sulla posizione dal GPS e visualizzare la posizione corrente e le mappe del terreno circostante per l'utente. Cambia a seconda della posizione dell'utente e del dispositivo.
Il documento più importante in uscita durante la fase di analisi dei requisiti sono le specifiche del sistema.
Una specifica è un documento tecnico che riflette accuratamente le esigenze del cliente e funge da requisiti da seguire durante la progettazione. Nel processo di sviluppo del software, le specifiche sono molto importanti. Gli analisti di sistema accettano i requisiti dell'utente e generano le specifiche per il sistema software di destinazione. I progettisti e i codificatori progettano i moduli in base alle specifiche e infine generano i codici del programma. Il personale di test e accettazione verifica se il software finale soddisfa le specifiche. Le specifiche dovrebbero essere chiare e inequivocabili, altrimenti il sistema costruito sulla base delle specifiche potrebbe non soddisfare i requisiti effettivi.
Attualmente, il metodo più diffuso nel settore è l'utilizzo di UML per descrivere le specifiche. UML è un linguaggio di modellazione standard universale in grado di modellare qualsiasi sistema con struttura statica e comportamento dinamico. UML è adatto a diverse fasi del processo di sviluppo del sistema, dalla specifica dei requisiti al test dopo il completamento del sistema. La Figura 12-17 è un esempio di specifica di una macchina a stati che mostra che le operazioni Inizio e fine sono stati speciali e gli stati nella macchina a stati rappresentano operazioni concettuali diverse.
Nella fase di analisi dei requisiti, i requisiti degli utenti vengono catturati attraverso i casi d'uso. Attraverso la modellazione dei casi d'uso, descrivere gli attori esterni interessati al sistema e i loro requisiti funzionali per il sistema (casi d'uso). La fase di analisi riguarda principalmente i concetti principali (come astrazioni, classi, oggetti, ecc.) e i meccanismi nel dominio del problema. È necessario identificare queste classi e le loro relazioni e descriverle con diagrammi di classi UML. Durante la fase di analisi, vengono modellati solo gli oggetti (concetti del mondo reale) del dominio del problema, senza considerare le classi che definiscono i dettagli tecnici nel sistema software (come le classi che gestiscono problemi come interfacce utente, database, comunicazione, e parallelismo).
Attualmente, gli strumenti di progettazione di sistemi embedded possono essere suddivisi in due categorie: strumenti di sintesi collaborativa e strumenti di simulazione collaborativa.
(1) Strumenti di sintesi collaborativa. Attualmente, i principali strumenti di sintesi collaborativa utilizzati per lo sviluppo integrato includono POLIS, COSYMA e Chinook.
POLIS: POLIS è un framework di co-progettazione software e hardware per sistemi embedded interattivi sviluppato da UC-Berkeley. È adatto per la progettazione di piccoli sistemi di controllo. La descrizione del sistema supporta il linguaggio basato su FSM (Finite State Machine). Poiché sia il software che l'hardware possono essere ottenuti in modo trasparente dalla stessa descrizione CFSM, anche la flessibilità dello spazio di progettazione viene aumentata di conseguenza. La simulazione collaborativa utilizzando PTOLEMY è supportata sia a livello di descrizione che di implementazione è limitato, ovvero i CFSM hardware sono circondati da un solo processore e non supportano la memoria condivisa.
COSYMA: COSYMA è una piattaforma sviluppata dalla società tedesca IDA per esplorare il processo di sintesi della co-progettazione hardware e software. Ha una descrizione relativamente semplice per i sistemi software, supporta la segmentazione automatica e la sintesi del coprocessore e può esplorare lo spazio di progettazione durante il periodo di sintesi, la sintesi del sistema dipende dalle limitazioni hardware e non supporta i moduli di concorrenza, ovvero è possibile eseguire solo un thread alla volta. Anche l'architettura è limitata e non supporta la verifica formale dipende dal partizionamento e dalle tecniche di stima dei costi.
Chinook: Chinook è progettato per i sistemi di controllo. La descrizione dell'intero sistema viene fornita a Chinook come input. Il suo modello interno è basato su un modello gerarchico di tipo statale. Non segmenta il codice l'intero design Chinook Supporta una varietà di architetture di sistema, in particolare architetture multiprocessore. Supporta anche la descrizione dei vincoli temporali. Può sintetizzare una varietà di interfacce, comprese le interfacce software e hardware tra i sistemi. Può sintetizzare i driver dei dispositivi direttamente dai grafici temporali e controllare la comunicazione tra processori.
(2) Strumenti di simulazione collaborativa. La simulazione collaborativa è un aspetto cruciale nella progettazione di sistemi embedded. Una volta completata la progettazione dell'intero sistema, è necessario simulare diversi tipi di componenti in un quadro unificato. La simulazione collaborativa non solo fornisce la verifica, ma fornisce anche agli utenti informazioni sulle prestazioni di ciascun sistema ., che aiuta a proporre cambiamenti nelle prime fasi del sistema senza causare grandi perdite. Attualmente esistono due principali strumenti di simulazione collaborativa:
TOLOMEO: L'idea chiave di TOLOMEO è quella di mescolare modelli di calcolo con kernel orientati agli oggetti. Può essere utilizzato per simulare una varietà di sistemi ed è ampiamente utilizzato in varie applicazioni, ma non è adatto per la sintesi di sistemi anche una delle sue funzioni. TSS: TSS (Tool for System Simulation) è uno strumento per la simulazione di hardware complesso. È scritto in linguaggio C. L'estrazione dei singoli moduli può essere controllata dall'utente e i moduli possono essere facilmente aggiunti ed eliminati. Tuttavia, i moduli gerarchici non sono supportati e non esiste alcun meccanismo per sincronizzare l'accesso alle strutture dati condivise da ciascun processore. La comunicazione tra i moduli viene eseguita tramite porte e bus. Inoltre, TSS supporta la simulazione di sistemi multi-core.
1.Progettazione dell'architettura del sistema
Descrivere come il sistema implementa le funzioni definite nelle specifiche è lo scopo principale della progettazione dell'architettura del sistema. Tuttavia, quando si progetta la struttura di sistema di un sistema embedded, è difficile separare completamente software e hardware. L'approccio usuale consiste nel considerare prima l'architettura software del sistema e poi la sua implementazione hardware. La descrizione dell'architettura del sistema deve soddisfare requisiti funzionali e non funzionali. Non solo è necessario implementare la funzionalità richiesta, ma devono essere soddisfatti anche i vincoli non funzionali come costo, velocità, consumo energetico, ecc. È un metodo pratico per considerare e perfezionare uno per uno gli elementi funzionali nello schema a blocchi originale del sistema e convertire lo schema a blocchi originale in una struttura di sistema software e hardware tenendo conto dei vincoli non funzionali. Di seguito viene preso come esempio illustrativo il progetto architettonico del sistema di mappe mobili GPS.
(1) Schema a blocchi originale. Come mostrato nella Figura 12-18, questo diagramma a blocchi originale è l'operazione principale e il flusso di dati del sistema di mappa mobile.
(2) Architettura del sistema software. Come mostrato nella Figura 12-19, il sistema software è costituito principalmente da un'interfaccia utente, un motore di ricerca nel database e un convertitore di dati.
(3) Architettura del sistema hardware. Come mostrato nella Figura 12-20, il sistema hardware è costituito da un microprocessore generico, memoria e dispositivi I/O. Questo sistema seleziona due tipi di memoria: dati generali, memoria di programma e memoria frame buffer per la visualizzazione dei pixel.
2.Progettazione del sottosistema hardware
L'ambiente di sviluppo dei sistemi embedded è composto da 4 parti: piattaforma hardware di destinazione, sistema operativo embedded, linguaggio di programmazione e strumenti di sviluppo. Tra questi, la selezione del processore e del sistema operativo dovrebbe considerare più fattori per evitare decisioni sbagliate che influenzino l'avanzamento del progetto .
(1) Selezionare la tecnologia del processore. Una delle sfide principali nella progettazione di sistemi embedded è come ottimizzare contemporaneamente le specifiche di progettazione concorrenti. I progettisti devono trovare dei compromessi tra le varie tecnologie dei processori e le tecnologie dei circuiti integrati. In generale, la tecnologia dei processori non ha nulla a che fare con la tecnologia dei circuiti integrati, vale a dire che qualsiasi tecnologia dei processori può essere implementata utilizzando qualsiasi tecnologia dei circuiti integrati, ma le prestazioni, i costi NRE, il consumo energetico, le dimensioni e altri indicatori del dispositivo finale saranno molto diverso, come mostrato nella Figura 12-21.
Una tecnologia programmabile più versatile offre maggiore flessibilità, riduce i costi NRE e consente tempi di prototipazione e lancio del prodotto più rapidi. La tecnologia personalizzata può fornire un consumo energetico inferiore, prestazioni migliori, dimensioni più piccole e costi inferiori per la produzione di volumi elevati.
Di solito, quando un'azienda desidera lanciare un prodotto, come un set-top box, un router domestico o un processore generico, può prima lanciare un prodotto semi-personalizzato per conquistare il mercato il più rapidamente possibile, quindi lanciare un prodotto semi-personalizzato per conquistare il mercato il più rapidamente possibile. prodotto completamente personalizzato. È inoltre possibile utilizzare prima una vecchia tecnologia più affidabile per implementare il processore, quindi utilizzare la nuova tecnologia di processo per implementare la generazione successiva. Allo stesso modo, i progettisti di sistemi embedded possono utilizzare dispositivi programmabili per costruire prototipi per accelerare il time-to-market e quindi utilizzare dispositivi personalizzati per la produzione in serie. Sulla base di questi principi, i progettisti possono fare scelte ragionevoli riguardo alla tecnologia del processore e al processore utilizzato. In generale, il "software per processore universale" completamente personalizzabile e disponibile in commercio è un'opzione adatta per la maggior parte delle situazioni.
(2) Selezione del processore integrato generale. Scegliere un processore integrato adatto per scopi generali in base alle esigenze dell'utente e del progetto. Quando si seleziona è necessario considerare i seguenti indicatori.
Velocità del processore. Le prestazioni di un processore dipendono da molti fattori: frequenza di clock, dimensione dei registri interni, se le istruzioni elaborano tutti i registri allo stesso modo, ecc. Per molti progetti di sistemi embedded che richiedono un processore, l'obiettivo non è scegliere il processore più veloce, ma scegliere il processore e il sottosistema I/O in grado di svolgere il lavoro. Le prestazioni del processore soddisfano le esigenze del sistema e hanno un certo margine, ma non è necessario sceglierlo troppo alto. Indicatori tecnici. Attualmente molti processori embedded integrano le funzioni dei dispositivi periferici, riducendo così il numero di chip e diminuendo così i costi di sviluppo dell'intero sistema. La prima cosa che gli sviluppatori considerano è se parte dell'hardware richiesto dal sistema può essere collegato al processore senza un'eccessiva logica combinatoria. In secondo luogo, considera alcuni chip di supporto del processore, come il controller DMA, il gestore della memoria, il controller degli interrupt, il dispositivo seriale, l'orologio, ecc. La familiarità dello sviluppatore con il processore significa che lo sviluppatore del progetto deve trovare un compromesso tra il costo del processore stesso e il costo di sviluppo.
Se la funzione I/O del processore soddisfa le esigenze del sistema, ovvero molti processori forniscono dispositivi esterni integrati per ridurre il numero di chip e ridurre i costi, questa soluzione dovrebbe essere considerata il più possibile. Strumenti di supporto software rilevanti per il processore, ovvero se il processore ha il supporto completo per sistemi operativi integrati, linguaggi di programmazione e strumenti di sviluppo, ecc.
Il debug del processore si riferisce al fatto che il processore abbia funzioni di debug integrate, ad esempio se supporti JTAG, BDM e altri metodi di debug. Credibilità del supporto del produttore del processore. Quando si sceglie un determinato processore durante il ciclo di vita del prodotto, i progettisti devono confermare che disponga di forniture sufficienti, supporto tecnico, ecc. Basso consumo energetico del processore.
Il mercato più grande e in più rapida crescita per i microprocessori incorporati è quello dei prodotti elettronici di consumo come dispositivi portatili, taccuini elettronici, PDA, telefoni cellulari, navigatori GPS ed elettrodomestici intelligenti. I microprocessori acquistati in questi prodotti sono generalmente caratterizzati da requisiti elevati. basso consumo energetico. Molti produttori di CPU sono già entrati in questo campo.
(3) Precauzioni per la progettazione dell'hardware. Innanzitutto, dividi l'hardware in componenti o moduli e disegna uno schema a blocchi delle connessioni dei componenti o dei moduli. In secondo luogo, perfezionare ciascun modulo e dividere il sistema in parti più gestibili che possano essere implementate in modo indipendente. Di solito, alcune funzioni del sistema possono essere implementate sia nel software che nell'hardware. Non esiste un metodo unificato che guidi il progettista nel decidere l'allocazione delle funzioni tra software e hardware, ma è possibile trovare un compromesso tra prestazioni e costi in base alle caratteristiche. elenco vincoli. Quando si progetta l'interfaccia tra software e hardware, i progettisti hardware e software devono lavorare insieme per completarla. Una buona progettazione dell'interfaccia può garantire che l'hardware sia semplice e facile da programmare. Durante la progettazione è necessario tenere conto dei seguenti punti.
In breve, i progettisti hardware dovrebbero fornire ai progettisti software informazioni sempre più dettagliate per facilitare la progettazione e lo sviluppo del software.
3.Progettazione del sottosistema software
Secondo il documento delle specifiche nella fase di analisi dei requisiti, determinare il modello di calcolo del sistema ed eseguire una progettazione ragionevole della parte software.
(1) Selezione del sistema operativo. Quando si sceglie un sistema operativo embedded è necessario considerare molti aspetti:
Funzioni del sistema operativo. Selezionare i prodotti del sistema operativo in base alle funzioni del sistema operativo richieste dal progetto. Considerare se il sistema supporta tutte o parte delle funzioni del sistema operativo, se supporta file system, interfacce uomo-macchina, se si tratta di un sistema in tempo reale. o un sistema di time-sharing, e se il sistema può essere ridotto, ecc.
Selezione degli strumenti di supporto allo sviluppo. Alcuni sistemi operativi in tempo reale (rto) supportano solo gli strumenti di sviluppo del fornitore del sistema. In altre parole, è necessario procurarsi anche un compilatore, un debugger, ecc. dal fornitore del sistema operativo. Alcuni sistemi operativi sono ampiamente utilizzati e sono disponibili strumenti di terze parti, quindi la scelta è più ampia. Quanto è facile trasferire il sistema operativo. Il porting del sistema operativo sull'hardware è una questione importante. È un fattore chiave legato alla possibilità di completare l'intero sistema nei tempi previsti. Pertanto, è necessario selezionare sistemi operativi con un elevato grado di portabilità per evitare varie difficoltà causate dalla difficoltà di portare il sistema operativo sull'hardware e accelerare il progresso dello sviluppo. del sistema. Quali sono i requisiti di memoria del sistema operativo. Considerare se è necessaria RAM o eeprom aggiuntiva per soddisfare i maggiori requisiti di memoria del sistema operativo. Alcuni sistemi operativi hanno requisiti di memoria specifici per la destinazione. Come nel caso di tornado/vxworks, gli sviluppatori possono allocare le risorse richieste in base alle esigenze dell'applicazione invece di allocare risorse per il sistema operativo. Gli sviluppatori possono scegliere tra un massimo di 80 diverse configurazioni, che vanno da progetti embedded che richiedono diversi kilobyte di memoria a complesse applicazioni in tempo reale di fascia alta che richiedono più funzionalità del sistema operativo.
Pacchetti aggiuntivi del sistema operativo. Se contiene i componenti software richiesti, come stack di protocolli di rete, file system, driver per varie periferiche di uso comune, ecc. Quanto è in tempo reale il sistema operativo? Il tempo reale è diviso in tempo reale soft e tempo reale hard. Alcuni sistemi operativi integrati possono fornire solo prestazioni soft in tempo reale. Ad esempio, Microsoft Windows CE 2.0 è un sistema operativo in tempo reale scalabile, compatibile con Windows, a 32 bit, in grado di soddisfare le esigenze della maggior parte dei sistemi operativi integrati e non incorporati. applicazioni.Tuttavia, le prestazioni in tempo reale non sono abbastanza potenti e si tratta di un'operazione incorporata in tempo reale.
sistema operativo. Quanto è flessibile il sistema operativo? Se il sistema operativo può essere personalizzato, cioè se le funzioni del sistema possono essere adattate alle reali esigenze. Alcuni sistemi operativi hanno una forte personalizzazione, come Linux incorporato, tornado/vxworks, ecc.
(2) Scelta del linguaggio di programmazione. Quando si sceglie un linguaggio di programmazione bisogna considerare anche molti aspetti:
Versatilità. Con il continuo sviluppo della tecnologia dei microprocessori, le sue funzioni stanno diventando sempre più specializzate e ne esistono sempre più tipi. Tuttavia, diversi tipi di microprocessori hanno il proprio linguaggio assembly dedicato. Ciò costituisce un enorme ostacolo per gli sviluppatori di sistemi, rendendo la programmazione del sistema più difficile e il riutilizzo del software impossibile da realizzare. I linguaggi di alto livello generalmente hanno meno contatto con la struttura hardware di macchine specifiche sono disponibili per la maggior parte dei microprocessori. Buon supporto e buona versatilità.
portabilità. Poiché il linguaggio assembly è strettamente correlato a uno specifico microprocessore, un programma progettato per un determinato microprocessore non può essere trapiantato direttamente su un altro microprocessore di tipo diverso, pertanto la portabilità è scarsa. I linguaggi di alto livello sono comuni a tutti i microprocessori, quindi i programmi possono essere eseguiti su diversi microprocessori e sono più portabili. Questa è la base per il riutilizzo del software. efficacia. In generale, più il linguaggio è di alto livello, maggiore sarà il compilatore e il sovraccarico, e più grande e lenta sarà l'applicazione. Tuttavia, fare affidamento esclusivamente su linguaggi di basso livello, come il linguaggio assembly, per sviluppare applicazioni comporta problemi quali programmazione complessa e cicli di sviluppo lunghi. Pertanto, esiste un compromesso tra tempo di sviluppo e prestazioni di runtime.
Manutenibilità. I linguaggi di basso livello come il linguaggio assembly non sono mantenibili. I programmi linguistici di alto livello sono spesso modulari nel design e le interfacce tra ciascun modulo sono fisse. Pertanto, quando si verifica un problema nel sistema, il problema può essere rapidamente localizzato in un determinato modulo e risolto il prima possibile. Inoltre, il design modulare facilita anche l'espansione e l'aggiornamento delle funzioni del sistema.
Prestazioni di base. Esistono molti tipi di linguaggi utilizzati nel processo di sviluppo di sistemi embedded. I linguaggi di alto livello più utilizzati includono Ada, C/C++, Modula-2 e Java, ecc. La lingua Ada è rigorosamente definita, facile da leggere e comprendere e dispone di un ricco supporto di programmi bibliotecari. Attualmente è ampiamente utilizzata nella difesa nazionale, nell'aviazione, nell'aerospaziale e in altri campi correlati e occuperà ancora una posizione importante in questi campi nel mondo. futuro. Il linguaggio C ha un ampio supporto di programmi di libreria ed è il linguaggio di programmazione più utilizzato nei sistemi embedded. Occuperà ancora per molto tempo una posizione importante nel campo delle applicazioni di sistemi embedded. C++ è un linguaggio di programmazione orientato agli oggetti ampiamente utilizzato anche nella progettazione di sistemi embedded, come GNU C++. Visual C++ è un ambiente di sviluppo integrato che supporta la programmazione visiva ed è ampiamente utilizzato nello sviluppo di programmi GUI. Tuttavia, rispetto al C++, il codice target del C++ è spesso più grande e complesso. Questo fattore dovrebbe essere pienamente considerato nelle applicazioni di sistema embedded.
(3) Processo di sviluppo del software. Il processo di sviluppo del software incorporato è diverso dal processo di sviluppo del software generale generale e comprende principalmente i seguenti passaggi:
(4) Documenti di sviluppo del software. Nel processo di sviluppo e progettazione di prodotti integrati, la fase di sviluppo completa l'implementazione dei prodotti di sistema. Questa fase richiede anche il completamento di una serie di documenti. Questi documenti sono molto importanti per completare la progettazione e la manutenzione del prodotto. Questi documenti sono directory di file tecnici , compiti tecnici, ecc. documenti, relazioni di piani tecnici, specifiche di prodotto, condizioni tecniche, istruzioni di progettazione, rapporti di prova, rapporti di sintesi, ecc.
Di solito il test del sistema embedded comprende principalmente tre parti: test del software, test dell'hardware e test dell'unità. I test generali sull'hardware del sistema includono test di affidabilità e test di compatibilità elettromagnetica. Attualmente esistono standard nazionali e internazionali obbligatori per la compatibilità elettromagnetica.
I metodi e i principi di test del software di sistema integrato sono fondamentalmente gli stessi del test del software generale. Quando si testa il software, sono generalmente richieste istanze di test o sequenze di test: una è progettata dall'utente e l'altra è una sequenza di test standard. Non importa quale tipo di istanza di test, l'istanza deve essere in grado di trovare più errori con un'alta probabilità, ma ci sono alcune differenze nel contenuto del test:
(1) Il software integrato deve funzionare stabilmente per lungo tempo.
(2) Il software incorporato generalmente non è sottoposto ad aggiornamenti frequenti della versione.
(3) Il software integrato viene solitamente utilizzato in applicazioni critiche.
(4) Il software incorporato deve essere responsabile del guasto e dell'affidabilità del prodotto insieme all'hardware incorporato.
(5) Le condizioni del mondo reale sono asincrone e imprevedibili, rendendo i test di simulazione molto difficili.
A causa di queste differenze, il test del software di sistema integrato si concentra principalmente sui seguenti quattro diversi aspetti:
(1) Poiché il tempo reale e la simultaneità sono difficili da soddisfare allo stesso tempo, la maggior parte dei test si concentra sui test in tempo reale.
(2) La maggior parte dei sistemi in tempo reale presenta limiti di risorse e pertanto richiede maggiori test di prestazioni e usabilità.
(3) La copertura del codice può essere testata utilizzando strumenti di monitoraggio in tempo reale dedicati.
(4) Il livello di test dell'affidabilità è molto più elevato di quello del software generale.
Inoltre, il test delle prestazioni è anche una delle attività di test più importanti che devono essere completate nella progettazione di sistemi embedded e ha un impatto decisivo sui sistemi embedded.
A causa delle caratteristiche speciali dei sistemi embedded, il sistema dispone di varie piattaforme hardware e software, ognuna delle quali è appositamente progettata per diverse applicazioni. Pertanto, il software applicativo è raramente universale tra varie piattaforme e i sistemi embedded La velocità di aggiornamento è relativamente elevata. Al fine di proteggere gli investimenti esistenti, sfruttare appieno le risorse software esistenti e accelerare lo sviluppo del prodotto, il trapianto di software è diventato molto frequente nel campo dell'embedded.