Domanda

È possibile dormire per un periodo di tempo che sarà accurato a meno di 100 microsecondi su Windows CE? Meno jitter è meglio, idealmente vorremmo tempi di risposta di microsecondi a una cifra.

Quello che vogliamo veramente è un timer da 5ms con jitter molto basso - sebbene gli oggetti WaitFor [Single | Multiple] e le API di sospensione di Windows CE funzionino in unità di millisecondi, non possiamo quindi correggere per il tempo inferiore al ms il nostro codice potrebbe richiedere l'esecuzione, quindi il ciclo andrà alla deriva gradualmente.

Se ciò non fosse possibile, anche tali informazioni sarebbero molto utili.

È stato utile?

Soluzione

Questo articolo MSDN ha del codice per impostare un 500us il timer si interrompe in WinCE, quindi è assolutamente possibile.

Se non sei bloccato nella tua versione di WinCE, potresti voler esaminare Tenasys , che afferma di offrire un RTOS in esecuzione fianco a fianco con Windows su hardware standard.

Ho anche sentito cose positive su QNX , ma non ho nemmeno usato i loro prodotti. Tuttavia, non credo che sia compatibile in alcun modo con Windows.

Altri suggerimenti

Non è possibile. Non è nemmeno possibile sui desktop. I sistemi operativi tipici semplicemente non funzionano in questo modo.

Se ciò di cui hai bisogno è qualcosa da sparare esattamente ogni 4 millisecondi o qualunque cosa tu abbia sfortuna. Se ciò di cui hai davvero bisogno è qualcosa da sparare con precisione 250 volte al secondo che potrebbe essere più fattibile. Se hai bisogno di quest'ultimo, posso suggerire un approccio.

Se la tua necessità di dormire non è un problema di batteria / rendimento del filo e solo una questione di tempistica accurata, puoi utilizzare il "performancecounter" nei dispositivi Windows CE. Sulle CPU XScale e Qualcomm, questo è il timer chip interno e ha una granularità inferiore a 1 ms. Sui vecchi processori OMAP e Samsung, l'API performancecounter sta attraversando il tick di sistema da 1 ms e ha un sacco di jitter.

L.B.

Per correggere il jitter è necessario accedere a un timer ad alta risoluzione. La tua CPU potrebbe averne una. In caso contrario, il controller di interruzione potrebbe.

Il modo più semplice è usare un Linux in tempo reale e VINCI per entrare in quella libreria. vuoi una discussione periodica.

Dai un'occhiata a questo rapporto da NIST.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top