Al lavoro stiamo discutendo la progettazione di una nuova piattaforma e uno dei tipi di gestione superiore ha affermato che era necessario eseguire la nostra attuale base di codice (C su Linux) ma essere in tempo reale perché doveva rispondere in meno di un secondo a vari input. Ho fatto notare che:Esiste una differenza tra un sistema in tempo reale e uno solo deterministico?
- Quel punto non significa che ha bisogno di essere "tempo reale" solo che ha bisogno di un clock più veloce e più razionalizzazione nella sua gestione
- Uno dei punti chiave da prendere in considerazione è interrupt il sistema operativo in uso. Volevano restare con Linux incorporato, ho sottolineato che abbiamo bisogno di un RTOS. L'uso di Linux impedirà il "tempo reale" a causa della memoria dello spazio kernel/utente, quindi l'I/O viene eseguito tramite file e socket che introducono un ritardo
- Ciò che è veramente necessario determinare è se deve essere deterministico (è necessario per esempio, rispondere a input in < 200ms 90% del tempo).
Davvero nella mia mente se il punto 3 è vero, allora deve essere un sistema in tempo reale, e quindi il punto 2 è la più grande considerazione.
Mi sentivo sicuro di rispondere, ma poi ci pensavo più tardi ... Cosa pensano gli altri? Sono sulla buona strada qui o mi manca qualcosa?
C'è qualche differenza che mi manca tra un sistema "in tempo reale" e uno che è solo "deterministico"? E oltre a un RTC e un RTOS, mi manca qualcosa di importante che è necessario per eseguire un vero sistema in tempo reale?
Attendo con ansia alcune grandi risposte!
EDIT:
ottenuto alcune buone risposte finora, sembra che ci sia un po 'di curiosità per il mio sistema e requisiti in modo io aggiungo qualche nota per coloro che sono interessati:
- La mia azienda vende unità negli anni '10 di migliaia, quindi non voglio andare a uccidere sul prezzo
- In genere vendiamo una scheda processore principale e un display indipendente. C'è anche una rete collegata di altri dispositivi CAN.
- La scheda (attualmente) corre i dispositivi e anche agisce come un server web inviando documenti XML di base per la visualizzazione per gli utenti finali
I requisiti vengono qui dove la gestione vuole il display da aggiornare "in fretta" (< 1s), tuttavia i limiti true provengono dai dispositivi che possono essere collegati su CAN. Questi dispositivi sono spesso dispositivi controllati dal motore con requisiti che includono "devono rispondere in meno di 200 ms".
Un computer in tempo reale implica un disco * * vincolo di tempo, non è uno che è sufficiente a soddisfare solo il 90% del tempo. Il limite di tempo è difficile o no? Questo determina il tipo di sistema di cui hai bisogno. – bdares
Direi che dipende dal volume previsto per la tua piattaforma. È un milione di volte più facile e veloce da mantenere con il tuo codice Linux esistente e basta acquistare un processore molto veloce rispetto a provare a portarlo su un RTOS e vivere senza cose come la protezione dello spazio degli indirizzi. Ma se il prodotto è un volume molto alto, il costo della CPU è più che altro un fattore da prendere in considerazione. – TJD
@TJD: il problema è che anche con il processore più veloce non è garantito il rispetto di un vincolo. A quanto ho capito, un sistema con un UC che ha un RTC e un clock rate elevato (potrebbe) potrebbe essere strozzato dal sistema operativo. – Mike