En este artículo, le mostraremos cómo usar un kernel de grado comercial, ejecutarlo en hardware real y usar herramientas de nivel profesional para comenzar a aprender sobre las funciones internas del kernel en tiempo real de forma casi gratuita.
En este artículo, le mostraremos cómo usar un kernel de grado comercial, ejecutarlo en hardware real y usar herramientas de nivel profesional para comenzar a aprender sobre las funciones internas del kernel en tiempo real de forma casi gratuita.
¿Qué es un núcleo en tiempo real?
Un núcleo en tiempo real es un software que administra el tiempo de la CPU (Unidad central de procesamiento) o MPU (Unidad de microprocesamiento) de la manera más eficiente posible. La mayoría de los núcleos están escritos en C y requieren una pequeña cantidad de código escrito en lenguaje ensamblador para adaptar el núcleo a diferentes arquitecturas de CPU.
El núcleo proporciona a los programadores muchos servicios útiles, como multitarea, gestión de interrupciones, comunicación y señalización entre tareas, gestión de recursos, gestión del tiempo y gestión de particiones de memoria. La mayoría de los núcleos utilizados para sistemas integrados son “preventivos”. En otras palabras, el núcleo siempre ejecuta las tareas más importantes que están listas para ejecutarse. Los núcleos preventivos también se basan en eventos. Básicamente, una tarea está diseñada para esperar a que ocurra un evento para ejecutarse. Por ejemplo, una tarea que espera que se reciba un paquete en el controlador Ethernet, una tarea que espera que expire un temporizador, una tarea que espera que se reciba un carácter en el UART, etc. Cuando ocurre un evento, se ejecuta una tarea para realizar su función. Si el evento que la tarea está esperando no ocurre, el kernel ejecutará alguna otra tarea. Las tareas en espera no consumen tiempo de CPU. El uso del kernel evita los bucles de sondeo que desperdician tiempo de CPU.
Los núcleos en tiempo real no se limitan a las CPU de 32 bits de gama alta. De hecho, los núcleos como µC/OS-III de Micrium pueden ejecutarse cómodamente en muchas CPU de 8 y 16 bits o incluso en chips DSP (procesamiento de señal digital).
Muchos programadores integrados dudan en usar el kernel porque temen que complicará demasiado sus aplicaciones. Resulta que solo necesita un puñado de servicios para que su proyecto despegue con el kernel. Por ejemplo, μC/OS-III le permite escribir aplicaciones multitarea bastante complejas usando solo 5 funciones API de las aproximadamente 70 llamadas API que proporciona μC/OS-III.
Hace años, los sistemas embebidos se diseñaron eligiendo primero un microprocesador o microcontrolador, luego eligiendo herramientas (compiladores, ensambladores, enlazadores y depuradores) y finalmente entendiendo cómo crear software. Hoy en día, muchos sistemas integrados se diseñan comenzando con los requisitos de software y determinando realmente si se pueden comprar componentes de software estándar para satisfacer las necesidades. El núcleo en tiempo real es uno de esos componentes y, de hecho, generalmente es el primer componente de software de su elección, ya que establece el marco para construir su producto. Una vez que tenga el kernel, puede agregar fácilmente otros componentes de software, como la pila TCP/IP, la pila USB (host o dispositivo), el sistema de archivos, la interfaz gráfica de usuario (o GUI). Algunos de estos componentes de software son fáciles de usar, pero muy complejos de desarrollar. Por ejemplo, una pila TCP/IP puede constar de más de 100 000 líneas de código C, pero desde la perspectiva del programador de aplicaciones, solo es necesario comprender y utilizar unas 30 funciones API. Dicho esto, es mucho más fácil crear con él.
Las partes internas del kernel en tiempo real µC/OS-III se describen en mi libro µC/OS-III, The Real-Time Kernel. En realidad, hay seis versiones diferentes del libro, cada una con una arquitectura de CPU diferente. Cada uno de estos libros está disponible como descarga gratuita en PDF en Sitio web de Micrium.
Personalmente prefiero el libro real, así que si eres como yo, puedes comprar el libro de tapa dura de uno de nuestros distribuidores autorizados, Micrium o Amazon.com.
µC/OS-III es “fuente disponible”. Esto significa que puede descargar el código fuente completo de µC/OS-III y usarlo de forma gratuita con fines educativos o de investigación pacífica. Sin embargo, si desea usar μC/OS-III en un producto o aplicación comercial, debe comprar una licencia (es decir, el derecho a usar μC/OS-III).
Tabla de evaluación
Cada libro tiene una placa de evaluación que permite a los lectores no solo aprender qué son los núcleos en tiempo real y cómo funcionan, sino también realizar experimentos reales en hardware real.
Para ejecutar los ejemplos proporcionados en cada libro, deberá descargar el código correspondiente al libro que le interesa (según el fabricante de CPU o la arquitectura de CPU que prefiera). Los proyectos complementarios para cada libro están disponibles para su descarga gratuita desde la misma página web anterior.
Finalmente, cada libro necesita una “herramienta” para compilar el código de muestra y ponerlo a disposición para su descarga. Las herramientas que necesita dependen de los libros y tableros que obtenga. Las versiones de evaluación de las herramientas están disponibles para su descarga gratuita y se proporcionan enlaces a ellas en cada libro. En cualquier caso, es necesario registrarse para descargar estas herramientas.
µC/sonda en Micrium
Todos los ejemplos proporcionados en cada libro utilizan una herramienta genial llamada µC/Probe disponible en Micrium. Una vez más, se puede descargar una versión de evaluación gratuita de µC/Probe desde la misma página web de Micrium que la anterior.
µC/Probe es una aplicación galardonada basada en Microsoft Windows™ que permite a los usuarios ver o cambiar el valor (en tiempo de ejecución) de casi cualquier variable o ubicación de memoria en un objetivo integrado conectado. Los usuarios simplemente ingresan calibres, indicadores numéricos, tablas, gráficos, LED virtuales, gráficos de barras, controles deslizantes, interruptores, botones y otros componentes en el entorno gráfico de µC/Probe y asocian cada uno de estos con una variable o ubicación de memoria.
µC/Probe no requiere que instrumente su código objetivo para ver o cambiar variables en tiempo de ejecución. De hecho, no es necesario agregar hardware como instrucciones printf(), diodos emisores de luz (LED), pantallas de cristal líquido (LCD) o cualquier otro medio de visibilidad dentro del objetivo incrustado en tiempo de ejecución. .
El µC/Probe adquiere valores del objetivo a través de la interfaz J-Tag (Segger J-Link), puerto RS-232C o puerto Ethernet usando TCP/IP. Para esto último, necesita una pila TCP/IP como µC/TCP-IP de Micrium. La versión gratuita de µC/Probe le permite ver o modificar hasta 8 variables de aplicación. Sin embargo, µC/Probe es “µC/OS-III Kernel Aware” y puede monitorear cualquier variable µC/OS-III. La Figura 1 muestra una captura de pantalla de ejemplo de µC/OS-III ejecutándose en un EVALBOT de Texas Instruments. El código de este ejemplo se encuentra en el libro correspondiente.
EVALBOT de Texas Instruments
Una de las mejores placas de evaluación disponibles en el libro µC/OS-III es la EVALBOT de Texas Instruments que se muestra en la Figura 2. EVALBOT es compatible con Ethernet, USB OTG (On-The-Go) e I2S. El kit incluye una rueda que se acopla fácilmente a la pizarra, una pantalla, una batería, un cable USB y un CD que contiene las herramientas IAR, el software StellarisWare® y toda la documentación necesaria. En la Figura 3 se muestra un diagrama de bloques de la electrónica de esta placa.
EVALBOT viene como un kit para ensamblar todas las partes mecánicas con todas las partes electrónicas preensambladas. Este kit está disponible en Texas Instruments. tienda web en línea o un distribuidor autorizado de TI.
Se tarda aproximadamente una hora en ensamblar EVALBOT. Los ejemplos proporcionados en el libro µC/OS-III muestran texto en una pequeña pantalla OLED, controlan LED, controlan los motores que impulsan cada rueda y leen sensores de “parachoques”. , puede ejecutar EVALBOT en modo autónomo y usarlo. Cambia de rumbo cuando golpea un objeto.
resumen
Los núcleos en tiempo real son un componente de software cada vez más útil que puede hacer un uso eficiente de los recursos del microprocesador o microcontrolador y crear un marco dentro del cual se pueden construir aplicaciones o productos simples o complejos. Descargue cualquiera o todos los seis libros de µC/OS-III en formato PDF de forma gratuita. Estos libros explican qué son los núcleos en tiempo real, qué pueden hacer por usted y brindan muchos ejemplos que puede probar usando una de las placas de evaluación incluidas. El código fuente de µC/OS-III también está disponible como descarga gratuita desde el sitio web de Micrium. Si es un desarrollador de software integrado y es nuevo en los kernels en tiempo real, encontrará que son una herramienta útil para agregar a su caja de herramientas. ■