¿Los ticks obtenidos por la función tickGet en vxworks comienzan desde 0?
Es una cantidad digital y no puede representar el tiempo por sí solo. Si queremos saber cuánto tiempo tarda un tick en aumentar en uno, debemos observar la frecuencia del reloj del sistema.
En Shell, sysClkRateGet puede devolver este valor de tasa constante. Unos 60 años. ¿Qué quieres decir con que se generaron 60 puntos comerciales en 1 segundo? La programación del sistema operativo se basa en este tick, que es una interrupción de reloj de alta prioridad en el hardware (debajo de él, excepto NMI). Si su tasa de consistencia es 60, entonces el tiempo representado por un tick es 1000 milisegundos/60 = 16,67 milisegundos. Es decir, se necesitan 16,67 milisegundos para que un tick aumente en 1.
Entonces, si quieres que tu tick sea de 1 ms, simplemente configura la frecuencia del reloj en 1000, porque 1000 ms/1000 = 1. Puede utilizar sysClkRateSet(1000) para lograr este objetivo. Los sistemas integrados hacen todo por sí mismos, con altas velocidades de reloj, alta frecuencia de programación del sistema operativo y capacidad de respuesta mejorada del software, pero el procesamiento de las interrupciones del hardware no es necesariamente en tiempo real.
Cuanto mayor sea la frecuencia del reloj, mejor. Pero era demasiado pequeño para sanar. ¿1 ms aún no es suficiente? Utilice un reloj secundario. También interrumpido. El principio de funcionamiento es el mismo. Sin embargo, vale la pena señalar que no se deben bloquear muchas cosas en una interrupción que se ejecuta 1000 veces por segundo. La CPU no puede permitírselo. Por lo tanto, se recomienda utilizar hardware para una sincronización precisa por debajo de 1 ms. Tenga en cuenta que el sistema operativo en tiempo real es software; de todos modos, es suave.