Temporizador periódico (64 Hz) con procesador ARM y Linux (embebido)

Quiero llamar a una función 64 veces por segundo con un procesador ARM que ejecuta Linux. (ej: Rasberry Pi o Freescale i.mx6).

Idealmente, no quiero demasiado nerviosismo. Quiero realizar una tarea periódicamente... (p. ej., escanear un dispositivo)

Si es posible, me gustaría que se llamara una interrupción de hardware 64 veces por segundo.

Con "hardware de PC estándar (x86)", era posible usar IRQ8 desde el RTC (reloj) para lograr ese comportamiento.

¿Cuál es el equivalente con la arquitectura del procesador ARM?

Referencia 1 , consulte la sección "Controladores antiguos de "clase RTC""

Referencia 2

Linux solía tener un nivel de sistema "tick" a 10 ms que se podía cambiar a 1 ms. investigación en esta área.

Respuestas (2)

Creo que un temporizador Watchdog funcionaría en esta situación. Cuando el temporizador llega a 0 o se desborda (depende de si cuenta hacia atrás o hacia arriba), el procesador activará una interrupción. Si configura el temporizador correctamente, es posible que pueda activarse a 64 Hz, pero eso depende de los escaladores previos y posteriores. Parece que el procesador ARM tiene tales capacidades .

Veo que el i.mx 6 tiene un temporizador EPIT (temporizador de interrupción periódica mejorado). ¿Sería posible usar este temporizador desde el sistema operativo Linux? ¿Cómo uso ese temporizador de Linux? (¿Es un controlador?) Vengo del mundo de los microcontroladores y no estoy seguro de cómo realizar esta tarea en Linux. ¿Me puede señalar alguna documentación/libro sobre el temporizador y Linux?.

Siempre puede crear un subproceso en tiempo real (suponiendo que su kernel se haya compilado con soporte en tiempo real) y tener un ciclo infinito que use nanosleep para obtener la frecuencia de muestra deseada de 64 Hz.

¿Qué tan estricto es exactamente su requisito de jitter?