Para cumplir con los gastos de los clientes y completar los informes de los clientes sobre el dispositivo, también hay una sección sobre la utilización de la CPU. Debido a que nunca he hecho tal tarea antes, he revisado algunos artículos de "Búsqueda de Google". Muchos de los artículos están en conexión directa con la programación de Linux, muchos de ellos hablan en general sobre la utilización de la CPU (solo teórica) y no encontré ningún artículo sobre el método de cómo se puede hacer esto... está bien, hay algunos: Embedded.com .
Me interesa cómo USTED ha hecho ese trabajo de sincronización de tareas antes. Estoy interesado en el método y también con qué herramienta se hizo. ¿Con alguna medición directa en el osciloscopio (o analizador lógico) o capturando datos del osciloscopio y postprocesándolos? ¿Qué período de tiempo debe tomarse para calcular la utilización de la CPU: el "momento más ocupado" cuando todas las interrupciones están presentes, porque en este caso la utilización de la CPU es mucho mayor que tal vez 1 milisegundo o 1 microsegundo más tarde, cuando solo se está ejecutando el bucle de fondo?
Tal vez como referencia, cómo hice mi primer enfoque de utilización de CPU (no sé si es el enfoque correcto): cada interrupción cuando comienza a ejecutarse tiene un PIN dedicado que aumenta cuando comienza la interrupción y disminuye cuando finaliza la interrupción. También hay los mismos retrasos de propagación involucrados. Exporto estas señales sobre el osciloscopio en un archivo y las postproceso con octava. Todavía hay un problema sobre qué plazo tomar.
En caso de cualquier pregunta por favor escriba en la sección de comentarios
La utilización de la CPU es realmente solo una medida cruda de la resistencia general de un sistema en tiempo real. Por lo tanto, la respuesta a su pregunta es que generalmente es un valor promedio a largo plazo.
El criterio real es si todas las tareas de software cumplen con los plazos de finalización. Tenga en cuenta que esto incluye tanto tareas desencadenadas por interrupciones como tareas desencadenadas por otros tipos de eventos. Cuando la utilización de la CPU comienza a acercarse al 100 %, el tiempo de finalización de las tareas de menor prioridad tiende a volverse arbitrariamente grande.
El uso de pines GPIO para indicar el tiempo de ejecución de tareas individuales es una buena manera de verificar si esos plazos se superan alguna vez.
Otro enfoque es instrumentar el propio código. Si tiene acceso a un contador de ejecución libre (quizás, un módulo de temporizador/contador de hardware de repuesto), puede tomar una instantánea de su valor al comienzo de cada tarea y luego, al final de la tarea, tomar otra instantánea. y calcula la diferencia. Si esto alguna vez excede el valor requerido para esa tarea, indique un error.
Una pregunta ligeramente diferente sería calcular la utilización esperada de la CPU de un sistema, antes de implementarlo.
En este caso, considera cada tarea individualmente, calculando cuánto tiempo se ejecuta cuando se activa y con qué frecuencia se activa. El tiempo de ejecución dividido por el período de activación proporciona la utilización de la CPU para esa tarea por sí misma.
Si suma todos los valores de utilización individuales y obtiene un valor que se acerca o supera el 100 %, entonces debe pensar en formas de redistribuir el trabajo: CPU más rápida, más CPU, hardware dedicado para algunas tareas, etc.
Bora
Pukaai
mattman944
Bora
Pukaai