Per un MCU in metallo scoperto, rispetto al codice casalingo con loop in background più architettura di interruzione del timer, quali sono i vantaggi di un sistema operativo non preventivo? Quali tra questi vantaggi sono abbastanza interessanti da consentire a un progetto di adottare un sistema operativo non preventivo, piuttosto che utilizzare codice fatto in casa con architettura a ciclo di background?
.
Spiegazione alla domanda:
Apprezzo molto tutti coloro che hanno risposto alla mia domanda. Sento che la risposta è stata quasi lì. Aggiungo questa spiegazione alla mia domanda qui che mostra la mia considerazione e può aiutare a restringere la domanda o renderla più precisa.
Quello che sto cercando di fare è capire come scegliere l'RTOS più appropriato per un progetto in generale.
Per raggiungere questo obiettivo, una migliore comprensione dei concetti di base e i vantaggi più interessanti di diversi tipi di RTOS e il prezzo corrispondente aiuteranno, poiché non esiste un RTOS migliore per tutte le applicazioni.
Ho letto libri sul sistema operativo alcuni anni fa ma non li ho più con me. Ho cercato su Internet prima di pubblicare la mia domanda qui e ho trovato queste informazioni molto utili: http://www.ustudy.in/node/5456 .
Ci sono molte altre informazioni utili come le presentazioni nel sito Web di diversi RTOS, articoli che confrontano la pianificazione preventiva e la pianificazione non preventiva, ecc.
Ma non ho trovato alcun argomento menzionato quando scegliere un RTOS non preventivo e quando è meglio scrivere il proprio codice usando l'interruzione del timer e il ciclo in background.
Ho certe mie risposte ma non sono abbastanza soddisfatto di loro.
Mi piacerebbe davvero conoscere la risposta o il punto di vista di persone più esperte, soprattutto nelle pratiche del settore.
Finora la mia comprensione è:
indipendentemente dall'uso o meno di un sistema operativo, alcuni tipi di codici di pianificazione sono sempre necessari, anche sotto forma di codice come:
in the timer interrupt which occurs every 10ms
if(it's 10ms)
{
call function A / execute task A;
}
if(it's 50ms)
{
call function B / execute task B;
}
Vantaggio 1:
un sistema operativo non preventivo indica il modo / lo stile di programmazione per il codice di pianificazione, in modo che gli ingegneri possano condividere la stessa vista anche se prima non si trovavano nello stesso progetto. Quindi, con la stessa visione delle attività concettuali, gli ingegneri possono lavorare su diverse attività e testarle, profilandole il più indipendentemente possibile.
Ma quanto possiamo davvero guadagnare da questo? Se gli ingegneri stanno lavorando allo stesso progetto, possono trovare il modo di condividere bene la stessa vista senza usare un sistema operativo non preventivo.
Se un ingegnere proviene da un altro progetto o società, otterrà il vantaggio se avesse già conosciuto il sistema operativo. Ma se non lo facesse, di nuovo, sembra non fare molta differenza per lui imparare un nuovo sistema operativo o un nuovo codice.
Vantaggio 2:
se il codice del sistema operativo è stato testato bene, si risparmia tempo dal debug. Questo è davvero un buon vantaggio.
Ma se l'applicazione ha solo circa 5 compiti, penso che non sia davvero complicato scrivere il proprio codice usando l'interruzione del timer e il ciclo in background.
Un sistema operativo non preventivo in questo caso è riferito a un sistema operativo commerciale / libero / legacy con uno scheduler non preventivo.
Quando ho pubblicato questa domanda, penso principalmente a determinati sistemi operativi come:
(1) KISS Kernel (A Small NonPreemptive RTOS - rivendicato dal suo sito Web)
http://www.frontiernet.net/~rhode/kisskern.html
(2) uSmartX (RTOS leggero - rivendicato dal suo sito Web)
(3) FreeRTOS (È un RTOS preventivo, ma a quanto ho capito, può essere configurato anche come RTOS non preventivo)
(4) uC / OS (simile a FreeRTOS)
(5 ) codice legacy del sistema operativo / scheduler in alcune società (solitamente creato e gestito internamente dalla società)
(Impossibile aggiungere più collegamenti a causa della limitazione dal nuovo account StackOverflow)
A quanto ho capito, un sistema operativo non preventivo è una raccolta di questi codici:
(1) uno scheduler che utilizza una strategia non preventiva.
(2) strutture per la comunicazione tra compiti, mutex, sincronizzazione e controllo del tempo.
(3) gestione della memoria.
(4) altre utili strutture / librerie come File System, stack di rete, GUI e così via (FreeRTOS e uC / OS forniscono questi, ma non sono sicuro che funzionino ancora quando lo scheduler è configurato come non preventivo)
Alcuni di loro non sono sempre lì. Ma lo scheduler è un must.