Supongamos un proyecto de sistema integrado en el que tengo un procesador ARM multinúcleo (para simplificar, suponga 2 núcleos con una caché no compartida entre los 2 núcleos). Suponga que mi sistema contiene una tarea crítica y varias tareas no críticas.
Por tanto, ¿puedo asignar la tarea crítica al "núcleo 1" exclusivamente? ¿Y todos los demás para "core 2" exclusivamente?
Si es así, ¿cómo se hace y cuáles son las mejores prácticas desde el punto de vista de la implementación [supongo que uso C]? ¿Debo usar una biblioteca (si es así, cuál)? ¿Un RTOS?
2 respuestas
Ok, veo que también preguntaste esto en la junta de EE. También dieron la misma respuesta que quiero darte a ti. Utilice un sistema operativo de algún tipo para manejar afinidades de subprocesos. Si su RTOS o lo que sea que tenga no lo admite, investigue y vea cómo maneja realmente la programación de procesos / subprocesos.
Por lo general, a cada CPU de un sistema se le asignará algún tipo de hilo que maneja la programación de tareas. Este hilo es una de las primeras cosas que configura un sistema operativo. Siéntase libre de investigar algunos micro kernels para ver cómo se hace esto para su procesador en particular. También puede encontrar la salsa secreta para configurar este hilo en la documentación de ARM para su CPU en particular.
Pero, me arriesgo y supongo que esto está mucho, mucho más allá del alcance de cualquier asignación que se le asigne para un proyecto. Espero que tengas algún tipo de afinidad incorporada en lo que te dieron. Configurar la afinidad para un sistema operativo conocido es una tarea de unos pocos segundos. Configurar la afinidad en un sistema bare metal sin ningún sistema operativo es mucho más complicado.
Pregunta original: https: // electronics.stackexchange.com/questions/356225/multicore-arm-how-to-assign-a-critical-task-to-one-dedicated-core#comment854845_356225
Si no necesita la funcionalidad en tiempo real, puede hacerlo en un dispositivo con un kernel de Linux sin demasiados problemas.
Vea esta pregunta aquí
Nuevas preguntas
arm
Esta etiqueta se usa para preguntas relacionadas con la familia de computadoras ARM (Advanced RISC Machine); es decir, máquinas o dispositivos electrónicos que se ejecutan en núcleos de procesador ARM o sistemas que utilizan un núcleo ARM.