Pregunta

¿Es posible dormir durante un período de tiempo que será preciso a menos de 100 microsegundos en Windows CE? Cuanto menos fluctuación, mejor, idealmente nos gustaría tiempos de respuesta de microsegundos de un solo dígito.

Lo que realmente queremos es un temporizador de 5 ms con una fluctuación de fase muy baja, aunque los objetos Windows CE WaitFor [Single | Multiple] y Sleep API funcionan en unidades de milisegundos, entonces no podemos corregir el tiempo subms de nuestro código puede tardar en ejecutarse, por lo que el ciclo se desplazará gradualmente.

Si esto no es posible, esa información también sería muy útil.

¿Fue útil?

Solución

Este artículo de MSDN tiene algún código para configurar un 500us interrupción del temporizador en WinCE, por lo que es absolutamente posible.

Si no está bloqueado en su versión de WinCE, puede consultar Tenasys , quien afirma ofrecer un RTOS que se ejecuta junto con Windows en hardware estándar.

También he escuchado cosas buenas sobre QNX , pero tampoco he usado sus productos. Sin embargo, no creo que sea compatible con Windows de ninguna manera.

Otros consejos

No es posible. Ni siquiera es posible en equipos de escritorio. Los sistemas operativos típicos simplemente no funcionan de esta manera.

Si lo que necesita es algo para disparar exactamente cada 4 milisegundos o lo que sea que no tenga suerte. Si lo que realmente necesita es algo para disparar exactamente 250 veces por segundo, eso puede ser más factible. Si necesita este último, puedo sugerir un enfoque.

Si su necesidad de dormir no es un problema de batería / rendimiento del hilo y solo una cuestión de sincronización precisa, puede usar el "contador de rendimiento" en dispositivos con Windows CE. En las CPU XScale y Qualcomm, este es el temporizador de chip interno y tiene una granularidad inferior a 1 ms. En los procesadores más antiguos de OMAP y Samsung, la API performancecounter está pasando por el tic del sistema de 1 ms y tiene mucha fluctuación.

L.B.

Para corregir la fluctuación necesita acceso a un temporizador de alta resolución. La CPU que tienes puede tener una. Si no, el controlador de interrupción puede.

La forma más fácil es utilizar un Linux en tiempo real y WINE en esa biblioteca. quieres un hilo periódico.

Eche un vistazo a este informe de NIST.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top