Story Transcript
Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky
Mario Azcueta
4 - Marzo - 2011
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
1 / 114
Introducci´ on LPCXpresso
Introducci´ on
Section 1 Introducci´on LPCXpresso
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
2 / 114
Introducci´ on LPCXpresso
Introducci´ on
Introducci´on
El LPCXpresso es un toolchain completo para evaluaci´on y desarrollo con microcontroladores de NXP. Esta compuesto por: LPCXpresso IDE y ”development tools” IDE basado en Eclipse Compiler y linker GNU GDB debugger
LPCXpresso target board (stick) BaseBoard o hardware adicional (opcional)
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
3 / 114
Introducci´ on LPCXpresso
Introducci´ on
Introducci´on
El LPCXpresso es un toolchain completo para evaluaci´on y desarrollo con microcontroladores de NXP. Esta compuesto por: LPCXpresso IDE y ”development tools” IDE basado en Eclipse Compiler y linker GNU GDB debugger
LPCXpresso target board (stick) BaseBoard o hardware adicional (opcional)
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
3 / 114
Introducci´ on LPCXpresso
Introducci´ on
Introducci´on
El LPCXpresso es un toolchain completo para evaluaci´on y desarrollo con microcontroladores de NXP. Esta compuesto por: LPCXpresso IDE y ”development tools” IDE basado en Eclipse Compiler y linker GNU GDB debugger
LPCXpresso target board (stick) BaseBoard o hardware adicional (opcional)
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
3 / 114
Introducci´ on LPCXpresso
Introducci´ on
Introducci´on
El LPCXpresso es un toolchain completo para evaluaci´on y desarrollo con microcontroladores de NXP. Esta compuesto por: LPCXpresso IDE y ”development tools” IDE basado en Eclipse Compiler y linker GNU GDB debugger
LPCXpresso target board (stick) BaseBoard o hardware adicional (opcional)
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
3 / 114
Introducci´ on LPCXpresso
LPCXpresso Target board
LPCXpresso target board
El target board es un un microcontrolador con todo lo necesario para encender y tambi´en una herramienta que incluye un programador y debugger.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
4 / 114
Introducci´ on LPCXpresso
LPCXpresso Target board
LPCXpresso target board
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
5 / 114
Introducci´ on LPCXpresso
LPCXpresso Target board
LPCXpresso target board
Del lado del target este incluye algunos perif´ericos b´asicos y se comercializan con diferentes micrcontroladores. Por el momento se encuentran disponibles: LPC1114: ARM Cortex-M0, 32KB flash, 4/8KB SRAM LPC1343: ARM Cortex-M3, 32KB flash, 8K SRAM, USB LPC1768: ARM Cortex-M3, 512KB flash, 64KB SRAM, Ethernet, USB On the go.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
6 / 114
Introducci´ on LPCXpresso
LPCXpresso Target board
LPCXpresso target board En este tutorial vamos a utilizar el target que viene con el LPC1768.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
7 / 114
Introducci´ on LPCXpresso
BaseBoard
LPCXpresso BaseBoard El BeseBoard fue dise˜ nado por Embedded Artists Junto con NXP. Permite conectarle un MBed o un LPCXpresso Target.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
8 / 114
Introducci´ on LPCXpresso
BaseBoard
LPCXpresso BaseBoard
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
9 / 114
Introducci´ on LPCXpresso
BaseBoard
LPCXpresso BaseBoard
La placa contiene perif´ericos para desarrollo y experimentaci´on: Generales: Socket for LPCXpresso and mbed module
Anal´ ogicos:
50 pin expansion dual row pin/header list connector
Trimming potentiometer input (analog input)
Battery powering (small coin battery) USB interface
PWM to analog LP-filtering (PWM output and analog input)
Reset pushbutton
Speaker output (PWM output) Oscilloscope probe inout stage
Digitales: RGB-LED (can be PWM controlled)
Serial - UART:
5-key joystick switch
USB-to-serial bridge, with automatic ISP activation
2 pushbuttons, one for activating bootloader
RS422/485 interface
Rotary switch with quadrature encoding (timer capture)
Interface socket for XBee RF-module
Temperature sensor with PWM output (timer capture)
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
10 / 114
Introducci´ on LPCXpresso
BaseBoard
LPCXpresso BaseBoard
Continuaci´ on: Serial - SPI: Shift register driving 7-segment LED
Serial - I2C/SPI SC16IS752 - I2C/SPI to 2xUART bridge; connected to RS232 full-modem interface and one expansion UART
SD/MMC memory card interface Dataflash SPI-NOR flash
96x64 pixel white OLED (alternative I2C/SPI interface)
Serial - I2C: PCA9532 port expander connected to 16 LEDs
Extras
8kbit E2PROM
CAN bus interface (can be simulated with LPCXpresso LPC1114/LPC1343)
MMA7455L accelerometer with I2C interface
Ethernet RJ45 connector with integrated magnetic
Light sensor
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
11 / 114
Introducci´ on LPCXpresso
BaseBoard
Informaci´on adicional
Se recomienda revisar los siguientes documentos: LPC1768 User Manual (datasheet)
Ver
LPCXpresso 1768 Target board: Esquem´aticos LPCXpresso BaseBoard: Gu´ıa de usuario LPCXpresso BaseBoard: Esquem´aticos
Alan Kharsansky, Mario Azcueta ()
Ver
Ver Ver
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
12 / 114
Introducci´ on LPCXpresso
LPCXpresso IDE
LPCXpresso IDE (Eclipse) El LPCXpresso IDE fue desarrollado por CodeRed junto a NXP. El mismo incluye un entorno de Eclipse espec´ıficumente adaptado para interactuar con el target board.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
13 / 114
Introducci´ on LPCXpresso
LPCXpresso IDE
Eclipse - Conceptos b´asicos
Eclipse utiliza algunos conceptos que no siempre son comunes a otros entornos de desarrollo por lo que vamos a ver algunos de ellos.
rkspace Es el contenedor de nuestros proyectos. Estos proyectos pueden ser aplicaciones y/o bibliotecas. Tambi´en almacena todas las configuraciones del entorno por lo que se puede mover muy f´ acilmente de computadora en computadora.
royecto Este puede ser de dos tipos. Biblioteca est´ atica o una aplicaci´ on ejecutable. Contiene archivos de c´ odigo fuente (.c), encabezados (.h) y cualquier otro archivo que se desee. En general utilizaremos el workspace para intercambiar proyectos (en el sentido convencional de la palabra) ya que el mismo inclu´ıra todas las bibliotecas necesarias.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
14 / 114
Introducci´ on LPCXpresso
LPCXpresso IDE
Tipos de proyectos
Los proyectos pueden ser de dos tipos: Aplicaciones: Se compilan y se pueden descargar directamente al target. Bibliotecas est´ aticas: Se pueden compilar, pero para usarlas, un proyecto de tipo aplicaci´ on debe hacer llamadas a las funciones que este contiene. Es decir, no puede tener un main(). Este tipo de proyectos no se puede descargar por si solo al microcontrolador.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
15 / 114
Introducci´ on LPCXpresso
LPCXpresso IDE
Tipos de proyectos - Ejemplo
Para ejemplificar pensemos en un ejemplo de un sistema embebido: un reproductor de MP3. Este podr´ıa estar compuesto por una memoria SD, una pantalla t´actil y un decodificaro de MP3. Todos estos perif´ericos est´an controlados por un microcontrolador, por ejemplo un LPC1768.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
16 / 114
Introducci´ on LPCXpresso
LPCXpresso IDE
Tipos de proyectos - Ejemplo Las bibliotecas est´aticas que podr´ıamos tener son: Para el manejo de una memoria SD Para el manejo del display Para el manejo del touchscreen Para el manejo del decodificador Nuestra aplicaci´on en s´ı ser´ıa la que tendr´a el programa principal y desde donde se ejecutara nuestro programa. Pero las bibliotecas nos proveen funciones para el manejo de estos perif´ericos. Puede darse el caso en el que el fabricante nos provea de estas bibliotecas ya compiladas. En ese caso solo debemos conocer los prototipos de las funciones.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
17 / 114
Introducci´ on LPCXpresso
LPCXpresso IDE
Tipos de proyectos - Ejemplo Las bibliotecas est´aticas que podr´ıamos tener son: Para el manejo de una memoria SD Para el manejo del display Para el manejo del touchscreen Para el manejo del decodificador Nuestra aplicaci´on en s´ı ser´ıa la que tendr´a el programa principal y desde donde se ejecutara nuestro programa. Pero las bibliotecas nos proveen funciones para el manejo de estos perif´ericos. Puede darse el caso en el que el fabricante nos provea de estas bibliotecas ya compiladas. En ese caso solo debemos conocer los prototipos de las funciones.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
17 / 114
Introducci´ on LPCXpresso
LPCXpresso IDE
Tipos de proyectos - Ejemplo Las bibliotecas est´aticas que podr´ıamos tener son: Para el manejo de una memoria SD Para el manejo del display Para el manejo del touchscreen Para el manejo del decodificador Nuestra aplicaci´on en s´ı ser´ıa la que tendr´a el programa principal y desde donde se ejecutara nuestro programa. Pero las bibliotecas nos proveen funciones para el manejo de estos perif´ericos. Puede darse el caso en el que el fabricante nos provea de estas bibliotecas ya compiladas. En ese caso solo debemos conocer los prototipos de las funciones.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
17 / 114
Introducci´ on LPCXpresso
LPCXpresso IDE
Tipos de proyectos - Ejemplo Las bibliotecas est´aticas que podr´ıamos tener son: Para el manejo de una memoria SD Para el manejo del display Para el manejo del touchscreen Para el manejo del decodificador Nuestra aplicaci´on en s´ı ser´ıa la que tendr´a el programa principal y desde donde se ejecutara nuestro programa. Pero las bibliotecas nos proveen funciones para el manejo de estos perif´ericos. Puede darse el caso en el que el fabricante nos provea de estas bibliotecas ya compiladas. En ese caso solo debemos conocer los prototipos de las funciones.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
17 / 114
Introducci´ on LPCXpresso
LPCXpresso IDE
Tipos de proyectos - Ejemplo Las bibliotecas est´aticas que podr´ıamos tener son: Para el manejo de una memoria SD Para el manejo del display Para el manejo del touchscreen Para el manejo del decodificador Nuestra aplicaci´on en s´ı ser´ıa la que tendr´a el programa principal y desde donde se ejecutara nuestro programa. Pero las bibliotecas nos proveen funciones para el manejo de estos perif´ericos. Puede darse el caso en el que el fabricante nos provea de estas bibliotecas ya compiladas. En ese caso solo debemos conocer los prototipos de las funciones.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
17 / 114
Introducci´ on LPCXpresso
LPCXpresso IDE
Tipos de proyectos - Ejemplo Las bibliotecas est´aticas que podr´ıamos tener son: Para el manejo de una memoria SD Para el manejo del display Para el manejo del touchscreen Para el manejo del decodificador Nuestra aplicaci´on en s´ı ser´ıa la que tendr´a el programa principal y desde donde se ejecutara nuestro programa. Pero las bibliotecas nos proveen funciones para el manejo de estos perif´ericos. Puede darse el caso en el que el fabricante nos provea de estas bibliotecas ya compiladas. En ese caso solo debemos conocer los prototipos de las funciones.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
17 / 114
Conceptos de RTOS
Section 2 Conceptos de RTOS
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
18 / 114
Conceptos de RTOS
¿Qu´ e es?
RTOS - ¿Qu´e es?
Un RTOS (Real Time Operating System) es un programa que se encarga de: Ordenar con precisi´on el tiempo de ejecuci´ on de las tareas Administrar los recursos del sistema como tiempo de uso de procesador, memoria, etc. Proveer una base consistente para el desarrollo del c´odigo
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
19 / 114
Conceptos de RTOS
¿Qu´ e es?
RTOS - ¿Qu´e es?
Un RTOS (Real Time Operating System) es un programa que se encarga de: Ordenar con precisi´on el tiempo de ejecuci´ on de las tareas Administrar los recursos del sistema como tiempo de uso de procesador, memoria, etc. Proveer una base consistente para el desarrollo del c´odigo
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
19 / 114
Conceptos de RTOS
¿Qu´ e es?
RTOS - ¿Qu´e es?
Un RTOS (Real Time Operating System) es un programa que se encarga de: Ordenar con precisi´on el tiempo de ejecuci´ on de las tareas Administrar los recursos del sistema como tiempo de uso de procesador, memoria, etc. Proveer una base consistente para el desarrollo del c´odigo
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
19 / 114
Conceptos de RTOS
¿Qu´ e es?
RTOS - ¿Qu´e es?
Un RTOS (Real Time Operating System) es un programa que se encarga de: Ordenar con precisi´on el tiempo de ejecuci´ on de las tareas Administrar los recursos del sistema como tiempo de uso de procesador, memoria, etc. Proveer una base consistente para el desarrollo del c´odigo
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
19 / 114
Conceptos de RTOS
¿Qu´ e es?
RTOS - ¿Qu´e es? Las aplicaciones que utilizan un RTOS son diversas:
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
20 / 114
Conceptos de RTOS
¿Qu´ e es?
RTOS - ¿Qu´e es? Las aplicaciones que utilizan un RTOS son diversas:
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
20 / 114
Conceptos de RTOS
¿Qu´ e es?
RTOS - ¿Qu´e es? Las aplicaciones que utilizan un RTOS son diversas:
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
20 / 114
Conceptos de RTOS
¿Qu´ e es?
RTOS - ¿Qu´e es? Las aplicaciones que utilizan un RTOS son diversas:
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
20 / 114
Conceptos de RTOS
¿Qu´ e es?
RTOS - ¿Qu´e es? Las aplicaciones que utilizan un RTOS son diversas:
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
20 / 114
Conceptos de RTOS
¿Qu´ e es?
RTOS - ¿Qu´e es?
Todas tienen un denominador com´ un:
TAREAS CONCURRENTES El RTOS crea la ilusi´on de m´ ultiples tareas ejecut´andose en simult´aneo.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
21 / 114
Conceptos de RTOS
¿Qu´ e es?
RTOS - ¿Qu´e es?
Todas tienen un denominador com´ un:
TAREAS CONCURRENTES El RTOS crea la ilusi´on de m´ ultiples tareas ejecut´andose en simult´aneo.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
21 / 114
Conceptos de RTOS
¿Qu´ e es?
RTOS - ¿Qu´e es?
Todas tienen un denominador com´ un:
TAREAS CONCURRENTES El RTOS crea la ilusi´on de m´ ultiples tareas ejecut´andose en simult´aneo.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
21 / 114
Conceptos de RTOS
¿Qu´ e es?
RTOS - ¿Qu´e es?
El RTOS se sit´ ua entre la capa BSP (Board Support Package, o ”port”) y la capa de aplicaci´on. Puede incluir varios m´odulos (protocolos de red, sistema de archivos, etc.)
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
22 / 114
Conceptos de RTOS
¿Qu´ e es?
RTOS - ¿Qu´e es?
El RTOS se sit´ ua entre la capa BSP (Board Support Package, o ”port”) y la capa de aplicaci´on. Puede incluir varios m´odulos (protocolos de red, sistema de archivos, etc.)
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
22 / 114
Conceptos de RTOS
Componentes
RTOS - Componentes
Los componentes de un RTOS pueden clasificarse ampliamente en 3 grupos: Scheduler: maneja los hilos de ejecuci´ on de las tareas. Objetos: tareas, colas, sem´aforos, etc. Servicios: operaciones realizadas sobre los objetos (manejo de interrupciones, de memoria, etc.)
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
23 / 114
Conceptos de RTOS
Componentes
RTOS - Componentes
Los componentes de un RTOS pueden clasificarse ampliamente en 3 grupos: Scheduler: maneja los hilos de ejecuci´ on de las tareas. Objetos: tareas, colas, sem´aforos, etc. Servicios: operaciones realizadas sobre los objetos (manejo de interrupciones, de memoria, etc.)
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
23 / 114
Conceptos de RTOS
Componentes
RTOS - Componentes
Los componentes de un RTOS pueden clasificarse ampliamente en 3 grupos: Scheduler: maneja los hilos de ejecuci´ on de las tareas. Objetos: tareas, colas, sem´aforos, etc. Servicios: operaciones realizadas sobre los objetos (manejo de interrupciones, de memoria, etc.)
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
23 / 114
Conceptos de RTOS
Componentes
RTOS - Componentes
Los componentes de un RTOS pueden clasificarse ampliamente en 3 grupos: Scheduler: maneja los hilos de ejecuci´ on de las tareas. Objetos: tareas, colas, sem´aforos, etc. Servicios: operaciones realizadas sobre los objetos (manejo de interrupciones, de memoria, etc.)
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
23 / 114
Conceptos de RTOS
Componentes
RTOS - Scheduler
El Scheduler determina cu´ando se ejecutar´a cada tarea. Existen diferentes esquemas de scheduling: Cooperativo: La tarea en ejecuci´ on cede el uso de CPU a otra voluntariamente. Preemptive: La tarea en ejecuci´ on cede el uso de CPU a otra por orden del scheduler. Priority-Based: Se asignan prioridades a las tareas para acceder al uso de CPU. Round-Robin: Se asigna un tiempo fijo de uso de CPU a cada tarea en orden circular. Puede combinarse con el uso de prioridades.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
24 / 114
Conceptos de RTOS
Componentes
RTOS - Scheduler
El Scheduler determina cu´ando se ejecutar´a cada tarea. Existen diferentes esquemas de scheduling: Cooperativo: La tarea en ejecuci´ on cede el uso de CPU a otra voluntariamente. Preemptive: La tarea en ejecuci´ on cede el uso de CPU a otra por orden del scheduler. Priority-Based: Se asignan prioridades a las tareas para acceder al uso de CPU. Round-Robin: Se asigna un tiempo fijo de uso de CPU a cada tarea en orden circular. Puede combinarse con el uso de prioridades.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
24 / 114
Conceptos de RTOS
Componentes
RTOS - Scheduler
El Scheduler determina cu´ando se ejecutar´a cada tarea. Existen diferentes esquemas de scheduling: Cooperativo: La tarea en ejecuci´ on cede el uso de CPU a otra voluntariamente. Preemptive: La tarea en ejecuci´ on cede el uso de CPU a otra por orden del scheduler. Priority-Based: Se asignan prioridades a las tareas para acceder al uso de CPU. Round-Robin: Se asigna un tiempo fijo de uso de CPU a cada tarea en orden circular. Puede combinarse con el uso de prioridades.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
24 / 114
Conceptos de RTOS
Componentes
RTOS - Scheduler
El Scheduler determina cu´ando se ejecutar´a cada tarea. Existen diferentes esquemas de scheduling: Cooperativo: La tarea en ejecuci´ on cede el uso de CPU a otra voluntariamente. Preemptive: La tarea en ejecuci´ on cede el uso de CPU a otra por orden del scheduler. Priority-Based: Se asignan prioridades a las tareas para acceder al uso de CPU. Round-Robin: Se asigna un tiempo fijo de uso de CPU a cada tarea en orden circular. Puede combinarse con el uso de prioridades.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
24 / 114
Conceptos de RTOS
Componentes
RTOS - Scheduler
El Scheduler determina cu´ando se ejecutar´a cada tarea. Existen diferentes esquemas de scheduling: Cooperativo: La tarea en ejecuci´ on cede el uso de CPU a otra voluntariamente. Preemptive: La tarea en ejecuci´ on cede el uso de CPU a otra por orden del scheduler. Priority-Based: Se asignan prioridades a las tareas para acceder al uso de CPU. Round-Robin: Se asigna un tiempo fijo de uso de CPU a cada tarea en orden circular. Puede combinarse con el uso de prioridades.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
24 / 114
Conceptos de RTOS
Componentes
RTOS - Scheduler
Ejemplo de esquema Priority-Based
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
25 / 114
Conceptos de RTOS
Componentes
RTOS - Scheduler
Ejemplo de esquema Round-Robin con prioridades.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
26 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Una tarea es un hilo de ejecuci´ on independiente que puede competir con otras tareas por tiempo de ejecuci´ on. Pueden ser creadas y eliminadas en tiempo de ejecuci´on.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
27 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Una tarea es un hilo de ejecuci´ on independiente que puede competir con otras tareas por tiempo de ejecuci´ on. Pueden ser creadas y eliminadas en tiempo de ejecuci´on.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
27 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Se compone de: Nombre/ID Prioridad (esquema preemptive) Stack Rutina (c´ odigo) Bloque de control
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
28 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Se compone de: Nombre/ID Prioridad (esquema preemptive) Stack Rutina (c´ odigo) Bloque de control
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
28 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Se compone de: Nombre/ID Prioridad (esquema preemptive) Stack Rutina (c´ odigo) Bloque de control
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
28 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Se compone de: Nombre/ID Prioridad (esquema preemptive) Stack Rutina (c´ odigo) Bloque de control
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
28 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Se compone de: Nombre/ID Prioridad (esquema preemptive) Stack Rutina (c´ odigo) Bloque de control
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
28 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Se compone de: Nombre/ID Prioridad (esquema preemptive) Stack Rutina (c´ odigo) Bloque de control
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
28 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Algunos ejemplos de tareas: Inicializaci´on del sistema (ejecuta solo una vez) Filtrar una se˜ nal (posiblemente peri´ odica) Mostrar en pantalla (puede activarse ante un evento) Tarea idle Las tareas pueden tener diferentes requerimientos de temporizaci´on.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
29 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Algunos ejemplos de tareas: Inicializaci´on del sistema (ejecuta solo una vez) Filtrar una se˜ nal (posiblemente peri´ odica) Mostrar en pantalla (puede activarse ante un evento) Tarea idle Las tareas pueden tener diferentes requerimientos de temporizaci´on.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
29 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Algunos ejemplos de tareas: Inicializaci´on del sistema (ejecuta solo una vez) Filtrar una se˜ nal (posiblemente peri´ odica) Mostrar en pantalla (puede activarse ante un evento) Tarea idle Las tareas pueden tener diferentes requerimientos de temporizaci´on.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
29 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Algunos ejemplos de tareas: Inicializaci´on del sistema (ejecuta solo una vez) Filtrar una se˜ nal (posiblemente peri´ odica) Mostrar en pantalla (puede activarse ante un evento) Tarea idle Las tareas pueden tener diferentes requerimientos de temporizaci´on.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
29 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Algunos ejemplos de tareas: Inicializaci´on del sistema (ejecuta solo una vez) Filtrar una se˜ nal (posiblemente peri´ odica) Mostrar en pantalla (puede activarse ante un evento) Tarea idle Las tareas pueden tener diferentes requerimientos de temporizaci´on.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
29 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Algunos ejemplos de tareas: Inicializaci´on del sistema (ejecuta solo una vez) Filtrar una se˜ nal (posiblemente peri´ odica) Mostrar en pantalla (puede activarse ante un evento) Tarea idle Las tareas pueden tener diferentes requerimientos de temporizaci´on.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
29 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Los estados posibles de una tarea son: Ready: compite por tiempo de ejecuci´ on Running: tarea activa Blocked: esperando pasar a Ready (podr´a activarse ante un evento o cuando pase cierto tiempo)
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
30 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Los estados posibles de una tarea son: Ready: compite por tiempo de ejecuci´ on Running: tarea activa Blocked: esperando pasar a Ready (podr´a activarse ante un evento o cuando pase cierto tiempo)
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
30 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Los estados posibles de una tarea son: Ready: compite por tiempo de ejecuci´ on Running: tarea activa Blocked: esperando pasar a Ready (podr´a activarse ante un evento o cuando pase cierto tiempo)
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
30 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Los estados posibles de una tarea son: Ready: compite por tiempo de ejecuci´ on Running: tarea activa Blocked: esperando pasar a Ready (podr´a activarse ante un evento o cuando pase cierto tiempo)
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
30 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Estructura t´ıpica de una tarea: void t a r e a t i p i c a () { /∗ C o d i g o de i n i c i a l i z a c i o n ∗/ for ( ; ; ) { /∗ Cuerpo p r i n c i p a l ∗/ /∗ Llama a b l o q u e a r ∗/ } /∗ La t a r e a NUNCA d e b e l l e g a r a q u i ∗/ }
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
31 / 114
Conceptos de RTOS
Componentes
RTOS - Colas
Su funci´on principal es proveer un mecanismo de intercambio de datos entre tareas. Son FIFO.
Se compone de: Nombre/ID Tama˜ no y tipo de datos a almacenar Bloque de control
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
32 / 114
Conceptos de RTOS
Componentes
RTOS - Colas
Su funci´on principal es proveer un mecanismo de intercambio de datos entre tareas. Son FIFO.
Se compone de: Nombre/ID Tama˜ no y tipo de datos a almacenar Bloque de control
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
32 / 114
Conceptos de RTOS
Componentes
RTOS - Colas
Su funci´on principal es proveer un mecanismo de intercambio de datos entre tareas. Son FIFO.
Se compone de: Nombre/ID Tama˜ no y tipo de datos a almacenar Bloque de control
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
32 / 114
Conceptos de RTOS
Componentes
RTOS - Colas
Su funci´on principal es proveer un mecanismo de intercambio de datos entre tareas. Son FIFO.
Se compone de: Nombre/ID Tama˜ no y tipo de datos a almacenar Bloque de control
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
32 / 114
Conceptos de RTOS
Componentes
RTOS - Colas
Varias tareas pueden acceder a una misma cola.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
33 / 114
Conceptos de RTOS
Componentes
RTOS - Colas
Varias tareas pueden acceder a una misma cola. Una tarea puede elegir bloquearse si su cola est´a vac´ıa. Al llegar un elemento, autom´aticamente pasa a Ready.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
33 / 114
Conceptos de RTOS
Componentes
RTOS - Colas
Varias tareas pueden acceder a una misma cola. Una tarea puede elegir bloquearse si su cola est´a vac´ıa. Al llegar un elemento, autom´aticamente pasa a Ready. Cuidado! Cargar datos en una cola causa una copia de los datos en memoria. Puede ser conveniente pasar un puntero.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
33 / 114
Conceptos de RTOS
Componentes
RTOS - Sem´aforos Son objetos como las colas. Pueden ser creados y destruidos. Su funci´on principal es proveer un mecanismo de sincronizaci´ on entre tareas.
Ejemplo: acceder a un recurso (como escribir en una pantalla): Para acceder al recurso la tarea pide el sem´aforo Si est´a disponible, toma el sem´aforo y realiza la operaci´on. Al terminar, lo libera para que otros puedan acceder. Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
34 / 114
Conceptos de RTOS
Componentes
RTOS - Sem´aforos Son objetos como las colas. Pueden ser creados y destruidos. Su funci´on principal es proveer un mecanismo de sincronizaci´ on entre tareas.
Ejemplo: acceder a un recurso (como escribir en una pantalla): Para acceder al recurso la tarea pide el sem´aforo Si est´a disponible, toma el sem´aforo y realiza la operaci´on. Al terminar, lo libera para que otros puedan acceder. Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
34 / 114
Conceptos de RTOS
Componentes
RTOS - Sem´aforos
Tambi´en pueden utilizarse para disparar un handler ante una interrupci´on La Tarea 1 est´a activa hasta que en t2 ocurre una interrupci´on. El ISR se ejecuta y cede un sem´aforo asociado al Handler en t3. El Handler se desbloquea y toma el sem´aforo, de la misma manera que si le llegara un dato por una cola.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
35 / 114
Conceptos de RTOS
Componentes
RTOS - Sem´aforos
El Handler ejecuta su rutina dentro de un for( ;;) y cuando termina quiere volver a tomar el sem´aforo. Como no hubo otra interrupci´on que cediera un sem´aforo, el Handler se bloquea y vuelve el control a la Tarea 1 en t4.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
36 / 114
Conceptos de RTOS
Componentes
RTOS - Sem´aforos
Los reci´en descriptos se conocen como sem´aforos binarios (tienen 2 estados). Existen otros m´etodos de sincronizaci´ on: Sem´ aforos de conteo: pueden tomarse o liberarse m´as de una vez. Mutex: similares a los sem´aforos binarios pero con funciones adicionales (como herencia de prioridades).
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
37 / 114
Conceptos de RTOS
Componentes
RTOS - Sem´aforos
Los reci´en descriptos se conocen como sem´aforos binarios (tienen 2 estados). Existen otros m´etodos de sincronizaci´ on: Sem´ aforos de conteo: pueden tomarse o liberarse m´as de una vez. Mutex: similares a los sem´aforos binarios pero con funciones adicionales (como herencia de prioridades).
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
37 / 114
Conceptos de RTOS
Componentes
RTOS - Sem´aforos
Los reci´en descriptos se conocen como sem´aforos binarios (tienen 2 estados). Existen otros m´etodos de sincronizaci´ on: Sem´ aforos de conteo: pueden tomarse o liberarse m´as de una vez. Mutex: similares a los sem´aforos binarios pero con funciones adicionales (como herencia de prioridades).
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
37 / 114
Conceptos de RTOS
Utilidad
RTOS - ¿Por qu´e usarlo? Existen varias razones por las cuales usar un RTOS: Abstracci´on de la implementaci´ on del scheduling Mayor modularidad Facilita el desarrollo en grupos Mayor facilidad al debuggear Mayor reusabilidad del c´ odigo Posibilidad de realizar profiling (tarea idle) Reducen el tiempo de desarrollo y la lista sigue ...
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
38 / 114
Conceptos de RTOS
Utilidad
RTOS - ¿Por qu´e usarlo? Existen varias razones por las cuales usar un RTOS: Abstracci´on de la implementaci´ on del scheduling Mayor modularidad Facilita el desarrollo en grupos Mayor facilidad al debuggear Mayor reusabilidad del c´ odigo Posibilidad de realizar profiling (tarea idle) Reducen el tiempo de desarrollo y la lista sigue ...
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
38 / 114
Conceptos de RTOS
Utilidad
RTOS - ¿Por qu´e usarlo? Existen varias razones por las cuales usar un RTOS: Abstracci´on de la implementaci´ on del scheduling Mayor modularidad Facilita el desarrollo en grupos Mayor facilidad al debuggear Mayor reusabilidad del c´ odigo Posibilidad de realizar profiling (tarea idle) Reducen el tiempo de desarrollo y la lista sigue ...
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
38 / 114
Conceptos de RTOS
Utilidad
RTOS - ¿Por qu´e usarlo? Existen varias razones por las cuales usar un RTOS: Abstracci´on de la implementaci´ on del scheduling Mayor modularidad Facilita el desarrollo en grupos Mayor facilidad al debuggear Mayor reusabilidad del c´ odigo Posibilidad de realizar profiling (tarea idle) Reducen el tiempo de desarrollo y la lista sigue ...
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
38 / 114
Conceptos de RTOS
Utilidad
RTOS - ¿Por qu´e usarlo? Existen varias razones por las cuales usar un RTOS: Abstracci´on de la implementaci´ on del scheduling Mayor modularidad Facilita el desarrollo en grupos Mayor facilidad al debuggear Mayor reusabilidad del c´ odigo Posibilidad de realizar profiling (tarea idle) Reducen el tiempo de desarrollo y la lista sigue ...
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
38 / 114
Conceptos de RTOS
Utilidad
RTOS - ¿Por qu´e usarlo? Existen varias razones por las cuales usar un RTOS: Abstracci´on de la implementaci´ on del scheduling Mayor modularidad Facilita el desarrollo en grupos Mayor facilidad al debuggear Mayor reusabilidad del c´ odigo Posibilidad de realizar profiling (tarea idle) Reducen el tiempo de desarrollo y la lista sigue ...
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
38 / 114
Conceptos de RTOS
Utilidad
RTOS - ¿Por qu´e usarlo? Existen varias razones por las cuales usar un RTOS: Abstracci´on de la implementaci´ on del scheduling Mayor modularidad Facilita el desarrollo en grupos Mayor facilidad al debuggear Mayor reusabilidad del c´ odigo Posibilidad de realizar profiling (tarea idle) Reducen el tiempo de desarrollo y la lista sigue ...
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
38 / 114
Conceptos de RTOS
Utilidad
RTOS - ¿Por qu´e usarlo? Existen varias razones por las cuales usar un RTOS: Abstracci´on de la implementaci´ on del scheduling Mayor modularidad Facilita el desarrollo en grupos Mayor facilidad al debuggear Mayor reusabilidad del c´ odigo Posibilidad de realizar profiling (tarea idle) Reducen el tiempo de desarrollo y la lista sigue ...
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
38 / 114
Conceptos de RTOS
Utilidad
RTOS - ¿Por qu´e usarlo? Existen varias razones por las cuales usar un RTOS: Abstracci´on de la implementaci´ on del scheduling Mayor modularidad Facilita el desarrollo en grupos Mayor facilidad al debuggear Mayor reusabilidad del c´ odigo Posibilidad de realizar profiling (tarea idle) Reducen el tiempo de desarrollo y la lista sigue ...
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
38 / 114
Conceptos de RTOS
Utilidad
RTOS - ¿Por qu´e usarlo?
Existen varias razones por las cuales usar un RTOS: Mejoran la escalabilidad Facilitan la portabilidad Mejoran la mantenibilidad Reducen la incertidumbre etc...
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
39 / 114
Conceptos de RTOS
Utilidad
RTOS - ¿Por qu´e usarlo?
Existen varias razones por las cuales usar un RTOS: Mejoran la escalabilidad Facilitan la portabilidad Mejoran la mantenibilidad Reducen la incertidumbre etc...
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
39 / 114
Conceptos de RTOS
Utilidad
RTOS - ¿Por qu´e usarlo?
Existen varias razones por las cuales usar un RTOS: Mejoran la escalabilidad Facilitan la portabilidad Mejoran la mantenibilidad Reducen la incertidumbre etc...
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
39 / 114
Conceptos de RTOS
Utilidad
RTOS - ¿Por qu´e usarlo?
Existen varias razones por las cuales usar un RTOS: Mejoran la escalabilidad Facilitan la portabilidad Mejoran la mantenibilidad Reducen la incertidumbre etc...
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
39 / 114
Conceptos de RTOS
Utilidad
FreeRTOS Por qu´e decidimos usar FreeRTOS: Es de c´odigo abierto C´ odigo ampliamente comentado Sencillo de portar (existen m´as de 23 ports)
Ocupa poco espacio en flash (∼5KB) necesita poca RAM (∼5KB + Heap) y el overhead que introduce es m´ınimo (entre 1% y 4% del tiempo de CPU) a cambio de una gran utilidad. Ampliamente documentado Existe una comunidad de usuarios importante Libre de regal´ıas. Puede ser usado en aplicaciones comerciales bajo licencia GNU versi´on 2.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
40 / 114
Conceptos de RTOS
Utilidad
FreeRTOS Por qu´e decidimos usar FreeRTOS: Es de c´odigo abierto C´odigo ampliamente comentado Sencillo de portar (existen m´as de 23 ports)
Ocupa poco espacio en flash (∼5KB) necesita poca RAM (∼5KB + Heap) y el overhead que introduce es m´ınimo (entre 1% y 4% del tiempo de CPU) a cambio de una gran utilidad. Ampliamente documentado Existe una comunidad de usuarios importante Libre de regal´ıas. Puede ser usado en aplicaciones comerciales bajo licencia GNU versi´on 2.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
40 / 114
Conceptos de RTOS
Utilidad
FreeRTOS Por qu´e decidimos usar FreeRTOS: Es de c´odigo abierto C´odigo ampliamente comentado Sencillo de portar (existen m´as de 23 ports)
Ocupa poco espacio en flash (∼5KB) necesita poca RAM (∼5KB + Heap) y el overhead que introduce es m´ınimo (entre 1% y 4% del tiempo de CPU) a cambio de una gran utilidad. Ampliamente documentado Existe una comunidad de usuarios importante Libre de regal´ıas. Puede ser usado en aplicaciones comerciales bajo licencia GNU versi´on 2.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
40 / 114
Conceptos de RTOS
Utilidad
FreeRTOS Por qu´e decidimos usar FreeRTOS: Es de c´odigo abierto C´odigo ampliamente comentado Sencillo de portar (existen m´as de 23 ports)
Ocupa poco espacio en flash (∼5KB) necesita poca RAM (∼5KB + Heap) y el overhead que introduce es m´ınimo (entre 1% y 4% del tiempo de CPU) a cambio de una gran utilidad. Ampliamente documentado Existe una comunidad de usuarios importante Libre de regal´ıas. Puede ser usado en aplicaciones comerciales bajo licencia GNU versi´on 2.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
40 / 114
Conceptos de RTOS
Utilidad
FreeRTOS Por qu´e decidimos usar FreeRTOS: Es de c´odigo abierto C´odigo ampliamente comentado Sencillo de portar (existen m´as de 23 ports)
Ocupa poco espacio en flash (∼5KB) necesita poca RAM (∼5KB + Heap) y el overhead que introduce es m´ınimo (entre 1% y 4% del tiempo de CPU) a cambio de una gran utilidad. Ampliamente documentado Existe una comunidad de usuarios importante Libre de regal´ıas. Puede ser usado en aplicaciones comerciales bajo licencia GNU versi´on 2.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
40 / 114
Conceptos de RTOS
Utilidad
FreeRTOS Por qu´e decidimos usar FreeRTOS: Es de c´odigo abierto C´odigo ampliamente comentado Sencillo de portar (existen m´as de 23 ports)
Ocupa poco espacio en flash (∼5KB) necesita poca RAM (∼5KB + Heap) y el overhead que introduce es m´ınimo (entre 1% y 4% del tiempo de CPU) a cambio de una gran utilidad. Ampliamente documentado Existe una comunidad de usuarios importante Libre de regal´ıas. Puede ser usado en aplicaciones comerciales bajo licencia GNU versi´on 2.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
40 / 114
Conceptos de RTOS
Utilidad
FreeRTOS Por qu´e decidimos usar FreeRTOS: Es de c´odigo abierto C´odigo ampliamente comentado Sencillo de portar (existen m´as de 23 ports)
Ocupa poco espacio en flash (∼5KB) necesita poca RAM (∼5KB + Heap) y el overhead que introduce es m´ınimo (entre 1% y 4% del tiempo de CPU) a cambio de una gran utilidad. Ampliamente documentado Existe una comunidad de usuarios importante Libre de regal´ıas. Puede ser usado en aplicaciones comerciales bajo licencia GNU versi´on 2.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
40 / 114
Conceptos de RTOS
Utilidad
FreeRTOS Por qu´e decidimos usar FreeRTOS: Es de c´odigo abierto C´odigo ampliamente comentado Sencillo de portar (existen m´as de 23 ports)
Ocupa poco espacio en flash (∼5KB) necesita poca RAM (∼5KB + Heap) y el overhead que introduce es m´ınimo (entre 1% y 4% del tiempo de CPU) a cambio de una gran utilidad. Ampliamente documentado Existe una comunidad de usuarios importante Libre de regal´ıas. Puede ser usado en aplicaciones comerciales bajo licencia GNU versi´on 2.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
40 / 114
Conceptos de RTOS
Utilidad
FreeRTOS
Existen tambi´en otras licencias para este RTOS: Existe una licencia comercial con soporte oficial y garant´ıas legales (OpenRTOS). Existe una licencia certificada SIL3 para aplicaciones cr´ıticas (SafeRTOS). La versi´on FreeRTOS 6.0.0 portada a Cortex-M3 soporta MPU (Memory Protection Unit).
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
41 / 114
Conceptos de RTOS
Utilidad
FreeRTOS
Existen tambi´en otras licencias para este RTOS: Existe una licencia comercial con soporte oficial y garant´ıas legales (OpenRTOS). Existe una licencia certificada SIL3 para aplicaciones cr´ıticas (SafeRTOS). La versi´on FreeRTOS 6.0.0 portada a Cortex-M3 soporta MPU (Memory Protection Unit).
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
41 / 114
Conceptos de RTOS
Utilidad
FreeRTOS
Existen tambi´en otras licencias para este RTOS: Existe una licencia comercial con soporte oficial y garant´ıas legales (OpenRTOS). Existe una licencia certificada SIL3 para aplicaciones cr´ıticas (SafeRTOS). La versi´on FreeRTOS 6.0.0 portada a Cortex-M3 soporta MPU (Memory Protection Unit).
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
41 / 114
Conceptos de RTOS
Utilidad
FreeRTOS
Existen tambi´en otras licencias para este RTOS: Existe una licencia comercial con soporte oficial y garant´ıas legales (OpenRTOS). Existe una licencia certificada SIL3 para aplicaciones cr´ıticas (SafeRTOS). La versi´on FreeRTOS 6.0.0 portada a Cortex-M3 soporta MPU (Memory Protection Unit).
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
41 / 114
LPCXpresso + FreeRTOS
Distribuci´ on
Section 3 LPCXpresso + FreeRTOS
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
42 / 114
LPCXpresso + FreeRTOS
Distribuci´ on
Es recomendable tener un workspace para cada proyecto que realicemos. En ´el configuraremos el RTOS. La estructura del workspace podr´a ser: FreeRTOS Library Biblioteca de funciones 1 Biblioteca de funciones 2 Driver DAC ADC MP3 Player
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
43 / 114
LPCXpresso + FreeRTOS
Distribuci´ on
Es recomendable tener un workspace para cada proyecto que realicemos. En ´el configuraremos el RTOS. La estructura del workspace podr´a ser: FreeRTOS Library Biblioteca de funciones 1 Biblioteca de funciones 2 Driver DAC ADC MP3 Player
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
43 / 114
LPCXpresso + FreeRTOS
Distribuci´ on
Es recomendable tener un workspace para cada proyecto que realicemos. En ´el configuraremos el RTOS. La estructura del workspace podr´a ser: FreeRTOS Library Biblioteca de funciones 1 Biblioteca de funciones 2 Driver DAC ADC MP3 Player
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
43 / 114
LPCXpresso + FreeRTOS
Distribuci´ on
Es recomendable tener un workspace para cada proyecto que realicemos. En ´el configuraremos el RTOS. La estructura del workspace podr´a ser: FreeRTOS Library Biblioteca de funciones 1 Biblioteca de funciones 2 Driver DAC ADC MP3 Player
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
43 / 114
LPCXpresso + FreeRTOS
Distribuci´ on
Es recomendable tener un workspace para cada proyecto que realicemos. En ´el configuraremos el RTOS. La estructura del workspace podr´a ser: FreeRTOS Library Biblioteca de funciones 1 Biblioteca de funciones 2 Driver DAC ADC MP3 Player
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
43 / 114
LPCXpresso + FreeRTOS
Distribuci´ on
El FreeRTOS esta compuesto por: list.c queue.c tasks.c Portable heap X.c port.c portmacro.h
Include FreeRTOSConfig.h ...
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
44 / 114
LPCXpresso + FreeRTOS
Distribuci´ on
El FreeRTOS esta compuesto por: list.c queue.c tasks.c Portable heap X.c port.c portmacro.h
Include FreeRTOSConfig.h ...
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
44 / 114
LPCXpresso + FreeRTOS
Distribuci´ on
El FreeRTOS esta compuesto por: list.c queue.c tasks.c Portable heap X.c port.c portmacro.h
Include FreeRTOSConfig.h ...
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
44 / 114
LPCXpresso + FreeRTOS
Configuraci´ on
Antes de ”instalarlo” en nuestro proyecto, debemos configurar el comportamiento del RTOS. Para ello freeRTOS provee un archivo FreeRTOSconfig.h en el que mediante macros podremos confiurarlo.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
45 / 114
LPCXpresso + FreeRTOS
Configuraci´ on
Este archivo tiene la siguiente forma: #d e f i n e #d e f i n e #d e f i n e #d e f i n e #d e f i n e #d e f i n e #d e f i n e
configUSE TICK HOOK 1 configCPU CLOCK HZ ( 100000000UL ) configTICK RATE HZ ( ( p o r t T i c k T y p e ) 1000 ) configMINIMAL STACK SIZE ( ( u n s i g n e d s h o r t ) 100 ) configTOTAL HEAP SIZE ( ( s i z e t ) ( 24 ∗ 1024 ) ) configMAX TASK NAME LEN ( 12 ) configUSE TRACE FACILITY 0
#d e f i n e #d e f i n e #d e f i n e #d e f i n e
INCLUDE INCLUDE INCLUDE INCLUDE
vTaskPrioritySet 1 uxTaskPriorityGet 1 vTaskDelete 1 vTaskCleanUpResources 0
FreeRTOSconfig.h
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
46 / 114
LPCXpresso + FreeRTOS
Configuraci´ on
Los aspectos m´s importantes que debemos configurar son: configUSE PREEMPTION configUSE XXXX HOOK (diferentes hooks) configMAX PRIORITIES configCPU CLOCK HZ configTICK RATE HZ configMINIMAL STACK SIZE configTOTAL HEAP SIZE configUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
47 / 114
LPCXpresso + FreeRTOS
Configuraci´ on
Los aspectos m´s importantes que debemos configurar son: configUSE PREEMPTION configUSE XXXX HOOK (diferentes hooks) configMAX PRIORITIES configCPU CLOCK HZ configTICK RATE HZ configMINIMAL STACK SIZE configTOTAL HEAP SIZE configUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
47 / 114
LPCXpresso + FreeRTOS
Configuraci´ on
Los aspectos m´s importantes que debemos configurar son: configUSE PREEMPTION configUSE XXXX HOOK (diferentes hooks) configMAX PRIORITIES configCPU CLOCK HZ configTICK RATE HZ configMINIMAL STACK SIZE configTOTAL HEAP SIZE configUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
47 / 114
LPCXpresso + FreeRTOS
Configuraci´ on
Los aspectos m´s importantes que debemos configurar son: configUSE PREEMPTION configUSE XXXX HOOK (diferentes hooks) configMAX PRIORITIES configCPU CLOCK HZ configTICK RATE HZ configMINIMAL STACK SIZE configTOTAL HEAP SIZE configUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
47 / 114
LPCXpresso + FreeRTOS
Configuraci´ on
Los aspectos m´s importantes que debemos configurar son: configUSE PREEMPTION configUSE XXXX HOOK (diferentes hooks) configMAX PRIORITIES configCPU CLOCK HZ configTICK RATE HZ configMINIMAL STACK SIZE configTOTAL HEAP SIZE configUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
47 / 114
LPCXpresso + FreeRTOS
Configuraci´ on
Los aspectos m´s importantes que debemos configurar son: configUSE PREEMPTION configUSE XXXX HOOK (diferentes hooks) configMAX PRIORITIES configCPU CLOCK HZ configTICK RATE HZ configMINIMAL STACK SIZE configTOTAL HEAP SIZE configUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
47 / 114
LPCXpresso + FreeRTOS
Configuraci´ on
Los aspectos m´s importantes que debemos configurar son: configUSE PREEMPTION configUSE XXXX HOOK (diferentes hooks) configMAX PRIORITIES configCPU CLOCK HZ configTICK RATE HZ configMINIMAL STACK SIZE configTOTAL HEAP SIZE configUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
47 / 114
LPCXpresso + FreeRTOS
Configuraci´ on
Los aspectos m´s importantes que debemos configurar son: configUSE PREEMPTION configUSE XXXX HOOK (diferentes hooks) configMAX PRIORITIES configCPU CLOCK HZ configTICK RATE HZ configMINIMAL STACK SIZE configTOTAL HEAP SIZE configUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
47 / 114
LPCXpresso + FreeRTOS
Configuraci´ on
Los aspectos m´s importantes que debemos configurar son: configUSE PREEMPTION configUSE XXXX HOOK (diferentes hooks) configMAX PRIORITIES configCPU CLOCK HZ configTICK RATE HZ configMINIMAL STACK SIZE configTOTAL HEAP SIZE configUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
47 / 114
LPCXpresso + FreeRTOS
Configuraci´ on
Total Heap Size El freeRTOS utiliza este HEAP para almacenar el TCB y los diferentes STACKs de las tareas. Tambi´en lo usar´a para guardar en memoria semaforos, mutex, etc.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
48 / 114
LPCXpresso + FreeRTOS
Instalaci´ on
Subsection 3 Instalaci´on
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
49 / 114
LPCXpresso + FreeRTOS
Alan Kharsansky, Mario Azcueta ()
Instalaci´ on
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
50 / 114
LPCXpresso + FreeRTOS
Instalaci´ on
No! es m´as facil. Simplemente tenemos que compilar la biblioteca (CONFIGURADA) de FreeRTOS y linkearla con nuestro proyecto. Luego hay que hacer algunas modificaciones al c´ odigo generado por LPCXpresso.
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
51 / 114
LPCXpresso + FreeRTOS
Instalaci´ on
Tabla de Handlers (IRQ) attribute (( section (” . i s r v e c t o r ” ))) v o i d (∗ c o n s t g p f n V e c t o r s [ ] ) ( v o i d ) = { // C o r e L e v e l − CM3 ( v o i d ∗)& v S t a c k T o p , Reset Handler , NMI Handler , HardFault Handler , MemManage Handler , BusFault Handler , UsageFault Handler , 0, 0, 0, 0, SVCall Handler , DebugMon Handler , 0 PendSV Handler , SysTick Handler ,
attribute (( section (” . i s r v e c t o r ” ))) v o i d (∗ c o n s t g p f n V e c t o r s [ ] ) ( v o i d ) = { // C o r e L e v e l − CM3 ( v o i d ∗)& v S t a c k T o p , Reset Handler , NMI Handler , HardFault Handler , MemManage Handler , BusFault Handler , UsageFault Handler , 0, 0, 0, 0, vPortSVCHandler , DebugMon Handler , 0 xPortPendSVHandler , xPortSysTickHandler ,
// C h i p L e v e l − LPC17 WDT IRQHandler , TIMER0 IRQHandler , TIMER1 IRQHandler , ......
// C h i p L e v e l − LPC17 WDT IRQHandler , TIMER0 IRQHandler , TIMER1 IRQHandler , ......
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
52 / 114
Estructura de una aplicaci´ on
Esquema
Section 4 Estructura de una aplicaci´on
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
53 / 114
Estructura de una aplicaci´ on
Esquema
Luego que ya tenemos instalado el freeRTOS, tenemos que crear tareas e inicializar el Scheduler. Entonces una aplicaci´ on que utilice este RTOS podr´ıa ser de la siguiente manera:
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
54 / 114
Estructura de una aplicaci´ on
Esquema
// FreeRTOS i n c l u d e s #i n c l u d e ”FreeRTOS . h” #i n c l u d e ” t a s k . h” i n t main ( v o i d ) { // C r e o l a s t a r e a s x T a s k C r e a t e ( UART Driver , ”UART” , 2 0 0 , NULL , 3 , NULL ) ; x T a s k C r e a t e ( t e s t 1 , ”TEST” , 2 0 0 , NULL , 1 , NULL ) ; x T a s k C r e a t e (LCD , ”LCD” , 2 0 0 , NULL , 2 , NULL ) ; // I n i c i o e l s c h e d u l e r vTaskStartScheduler ( ) ; // Nunca l l e g o a c a for ( ; ; ); return 0; }
Alan Kharsansky, Mario Azcueta ()
Desarrollo de aplicaciones en LPCXpresso basadas en RTOS 4 - Marzo - 2011
55 / 114
Estructura de una aplicaci´ on
Esquema
¿C´omo es una tarea? v o i d miTarea ( v o i d ∗ p v P a r a m e t e r s ) { int i ; // C o s a s que s e t e n g a n que h a c e r s o l o una v e z // Loop p r i n c i p a l for (;;){ f o r ( i =0; i