Vous êtes sur la page 1sur 243

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 - Marzo - 2011 4

1 / 114

Introduccin LPCXpresso o

Introduccin o

Section 1 Introduccin LPCXpresso o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS - Marzo - 2011 4

2 / 114

Introduccin LPCXpresso o

Introduccin o

Introduccin o

El LPCXpresso es un toolchain completo para evaluacin y desarrollo con o 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 - Marzo - 2011 4

3 / 114

Introduccin LPCXpresso o

Introduccin o

Introduccin o

El LPCXpresso es un toolchain completo para evaluacin y desarrollo con o 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 - Marzo - 2011 4

3 / 114

Introduccin LPCXpresso o

Introduccin o

Introduccin o

El LPCXpresso es un toolchain completo para evaluacin y desarrollo con o 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 - Marzo - 2011 4

3 / 114

Introduccin LPCXpresso o

Introduccin o

Introduccin o

El LPCXpresso es un toolchain completo para evaluacin y desarrollo con o 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 - Marzo - 2011 4

3 / 114

Introduccin LPCXpresso o

LPCXpresso Target board

LPCXpresso target board

El target board es un un microcontrolador con todo lo necesario para encender y tambin una herramienta que incluye un programador y e debugger.

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS - Marzo - 2011 4

4 / 114

Introduccin LPCXpresso o

LPCXpresso Target board

LPCXpresso target board

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS - Marzo - 2011 4

5 / 114

Introduccin LPCXpresso o

LPCXpresso Target board

LPCXpresso target board

Del lado del target este incluye algunos perifricos bsicos y se e a comercializan con diferentes micrcontroladores. Por el momento se encuentran disponibles: LPC1114: ARM Cortex-M0, 32KB ash, 4/8KB SRAM LPC1343: ARM Cortex-M3, 32KB ash, 8K SRAM, USB LPC1768: ARM Cortex-M3, 512KB ash, 64KB SRAM, Ethernet, USB On the go.

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS - Marzo - 2011 4

6 / 114

Introduccin LPCXpresso o

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 - Marzo - 2011 4

7 / 114

Introduccin LPCXpresso o

BaseBoard

LPCXpresso BaseBoard
El BeseBoard fue diseado por Embedded Artists Junto con NXP. Permite n conectarle un MBed o un LPCXpresso Target.

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS - Marzo - 2011 4

8 / 114

Introduccin LPCXpresso o

BaseBoard

LPCXpresso BaseBoard

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS - Marzo - 2011 4

9 / 114

Introduccin LPCXpresso o

BaseBoard

LPCXpresso BaseBoard

La placa contiene perifricos para desarrollo y experimentacin: e o


Generales: Socket for LPCXpresso and mbed module 50 pin expansion dual row pin/header list connector Battery powering (small coin battery) USB interface Reset pushbutton Digitales: RGB-LED (can be PWM controlled) 5-key joystick switch 2 pushbuttons, one for activating bootloader Rotary switch with quadrature encoding (timer capture) Temperature sensor with PWM output (timer capture) Analgicos: o Trimming potentiometer input (analog input) PWM to analog LP-ltering (PWM output and analog input) Speaker output (PWM output) Oscilloscope probe inout stage Serial - UART: USB-to-serial bridge, with automatic ISP activation RS422/485 interface Interface socket for XBee RF-module

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

10 / 114

Introduccin LPCXpresso o

BaseBoard

LPCXpresso BaseBoard

Continuacin: o
Serial - SPI: Shift register driving 7-segment LED SD/MMC memory card interface Dataash SPI-NOR ash Serial - I2C: PCA9532 port expander connected to 16 LEDs 8kbit E2PROM MMA7455L accelerometer with I2C interface Light sensor Extras CAN bus interface (can be simulated with LPCXpresso LPC1114/LPC1343) Ethernet RJ45 connector with integrated magnetic Serial - I2C/SPI SC16IS752 - I2C/SPI to 2xUART bridge; connected to RS232 full-modem interface and one expansion UART 96x64 pixel white OLED (alternative I2C/SPI interface)

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

11 / 114

Introduccin LPCXpresso o

BaseBoard

Informacin adicional o

Se recomienda revisar los siguientes documentos: LPC1768 User Manual (datasheet)


Ver Ver

LPCXpresso 1768 Target board: Esquemticos a LPCXpresso BaseBoard: Gu de usuario a LPCXpresso BaseBoard: Esquemticos a
Ver Ver

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

12 / 114

Introduccin LPCXpresso o

LPCXpresso IDE

LPCXpresso IDE (Eclipse)


El LPCXpresso IDE fue desarrollado por CodeRed junto a NXP. El mismo incluye un entorno de Eclipse espec cumente adaptado para interactuar con el target board.

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

13 / 114

Introduccin LPCXpresso o

LPCXpresso IDE

Eclipse - Conceptos bsicos a

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. Tambin almacena todas las conguraciones del entorno por lo e que se puede mover muy fcilmente de computadora en computadora. a

royecto Este puede ser de dos tipos. Biblioteca esttica o una aplicacin ejecutable. a o Contiene archivos de cdigo fuente (.c), encabezados (.h) y cualquier otro archivo o que se desee. En general utilizaremos el workspace para intercambiar proyectos (en el sentido convencional de la palabra) ya que el mismo inclu todas las bibliotecas necesarias. ra

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

14 / 114

Introduccin LPCXpresso o

LPCXpresso IDE

Tipos de proyectos

Los proyectos pueden ser de dos tipos:


Aplicaciones: Se compilan y se pueden descargar directamente al target. Bibliotecas estticas: Se pueden compilar, pero para usarlas, un proyecto a de tipo aplicacin debe hacer llamadas a las funciones que este contiene. Es o 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 Marzo - 2011 4-

15 / 114

Introduccin LPCXpresso o

LPCXpresso IDE

Tipos de proyectos - Ejemplo

Para ejemplicar pensemos en un ejemplo de un sistema embebido: un reproductor de MP3. Este podr estar compuesto por una memoria SD, a una pantalla tctil y un decodicaro de MP3. Todos estos perifricos estn a e a controlados por un microcontrolador, por ejemplo un LPC1768.

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

16 / 114

Introduccin LPCXpresso o

LPCXpresso IDE

Tipos de proyectos - Ejemplo


Las bibliotecas estticas que podr a amos tener son: Para el manejo de una memoria SD Para el manejo del display Para el manejo del touchscreen Para el manejo del decodicador Nuestra aplicacin en s ser la que tendr el programa principal y o a a desde donde se ejecutara nuestro programa. Pero las bibliotecas nos proveen funciones para el manejo de estos perifricos. Puede darse el e 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 Marzo - 2011 4-

17 / 114

Introduccin LPCXpresso o

LPCXpresso IDE

Tipos de proyectos - Ejemplo


Las bibliotecas estticas que podr a amos tener son: Para el manejo de una memoria SD Para el manejo del display Para el manejo del touchscreen Para el manejo del decodicador Nuestra aplicacin en s ser la que tendr el programa principal y o a a desde donde se ejecutara nuestro programa. Pero las bibliotecas nos proveen funciones para el manejo de estos perifricos. Puede darse el e 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 Marzo - 2011 4-

17 / 114

Introduccin LPCXpresso o

LPCXpresso IDE

Tipos de proyectos - Ejemplo


Las bibliotecas estticas que podr a amos tener son: Para el manejo de una memoria SD Para el manejo del display Para el manejo del touchscreen Para el manejo del decodicador Nuestra aplicacin en s ser la que tendr el programa principal y o a a desde donde se ejecutara nuestro programa. Pero las bibliotecas nos proveen funciones para el manejo de estos perifricos. Puede darse el e 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 Marzo - 2011 4-

17 / 114

Introduccin LPCXpresso o

LPCXpresso IDE

Tipos de proyectos - Ejemplo


Las bibliotecas estticas que podr a amos tener son: Para el manejo de una memoria SD Para el manejo del display Para el manejo del touchscreen Para el manejo del decodicador Nuestra aplicacin en s ser la que tendr el programa principal y o a a desde donde se ejecutara nuestro programa. Pero las bibliotecas nos proveen funciones para el manejo de estos perifricos. Puede darse el e 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 Marzo - 2011 4-

17 / 114

Introduccin LPCXpresso o

LPCXpresso IDE

Tipos de proyectos - Ejemplo


Las bibliotecas estticas que podr a amos tener son: Para el manejo de una memoria SD Para el manejo del display Para el manejo del touchscreen Para el manejo del decodicador Nuestra aplicacin en s ser la que tendr el programa principal y o a a desde donde se ejecutara nuestro programa. Pero las bibliotecas nos proveen funciones para el manejo de estos perifricos. Puede darse el e 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 Marzo - 2011 4-

17 / 114

Introduccin LPCXpresso o

LPCXpresso IDE

Tipos de proyectos - Ejemplo


Las bibliotecas estticas que podr a amos tener son: Para el manejo de una memoria SD Para el manejo del display Para el manejo del touchscreen Para el manejo del decodicador Nuestra aplicacin en s ser la que tendr el programa principal y o a a desde donde se ejecutara nuestro programa. Pero las bibliotecas nos proveen funciones para el manejo de estos perifricos. Puede darse el e 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 Marzo - 2011 4-

17 / 114

Conceptos de RTOS

Section 2 Conceptos de RTOS

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

18 / 114

Conceptos de RTOS

Qu es? e

RTOS - Qu es? e

Un RTOS (Real Time Operating System) es un programa que se encarga de: Ordenar con precisin el tiempo de ejecucin de las tareas o o Administrar los recursos del sistema como tiempo de uso de procesador, memoria, etc. Proveer una base consistente para el desarrollo del cdigo o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

19 / 114

Conceptos de RTOS

Qu es? e

RTOS - Qu es? e

Un RTOS (Real Time Operating System) es un programa que se encarga de: Ordenar con precisin el tiempo de ejecucin de las tareas o o Administrar los recursos del sistema como tiempo de uso de procesador, memoria, etc. Proveer una base consistente para el desarrollo del cdigo o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

19 / 114

Conceptos de RTOS

Qu es? e

RTOS - Qu es? e

Un RTOS (Real Time Operating System) es un programa que se encarga de: Ordenar con precisin el tiempo de ejecucin de las tareas o o Administrar los recursos del sistema como tiempo de uso de procesador, memoria, etc. Proveer una base consistente para el desarrollo del cdigo o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

19 / 114

Conceptos de RTOS

Qu es? e

RTOS - Qu es? e

Un RTOS (Real Time Operating System) es un programa que se encarga de: Ordenar con precisin el tiempo de ejecucin de las tareas o o Administrar los recursos del sistema como tiempo de uso de procesador, memoria, etc. Proveer una base consistente para el desarrollo del cdigo o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

19 / 114

Conceptos de RTOS

Qu es? e

RTOS - Qu es? e
Las aplicaciones que utilizan un RTOS son diversas:

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

20 / 114

Conceptos de RTOS

Qu es? e

RTOS - Qu es? e
Las aplicaciones que utilizan un RTOS son diversas:

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

20 / 114

Conceptos de RTOS

Qu es? e

RTOS - Qu es? e
Las aplicaciones que utilizan un RTOS son diversas:

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

20 / 114

Conceptos de RTOS

Qu es? e

RTOS - Qu es? e
Las aplicaciones que utilizan un RTOS son diversas:

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

20 / 114

Conceptos de RTOS

Qu es? e

RTOS - Qu es? e
Las aplicaciones que utilizan un RTOS son diversas:

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

20 / 114

Conceptos de RTOS

Qu es? e

RTOS - Qu es? e

Todas tienen un denominador comn: u

TAREAS CONCURRENTES
El RTOS crea la ilusin de mltiples tareas ejecutndose en simultneo. o u a a

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

21 / 114

Conceptos de RTOS

Qu es? e

RTOS - Qu es? e

Todas tienen un denominador comn: u

TAREAS CONCURRENTES
El RTOS crea la ilusin de mltiples tareas ejecutndose en simultneo. o u a a

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

21 / 114

Conceptos de RTOS

Qu es? e

RTOS - Qu es? e

Todas tienen un denominador comn: u

TAREAS CONCURRENTES
El RTOS crea la ilusin de mltiples tareas ejecutndose en simultneo. o u a a

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

21 / 114

Conceptos de RTOS

Qu es? e

RTOS - Qu es? e

El RTOS se sita entre la capa BSP u (Board Support Package, o port) y la capa de aplicacin. o Puede incluir varios mdulos o (protocolos de red, sistema de archivos, etc.)

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

22 / 114

Conceptos de RTOS

Qu es? e

RTOS - Qu es? e

El RTOS se sita entre la capa BSP u (Board Support Package, o port) y la capa de aplicacin. o Puede incluir varios mdulos o (protocolos de red, sistema de archivos, etc.)

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

22 / 114

Conceptos de RTOS

Componentes

RTOS - Componentes

Los componentes de un RTOS pueden clasicarse ampliamente en 3 grupos: Scheduler: maneja los hilos de ejecucin de las tareas. o Objetos: tareas, colas, semforos, etc. a Servicios: operaciones realizadas sobre los objetos (manejo de interrupciones, de memoria, etc.)

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

23 / 114

Conceptos de RTOS

Componentes

RTOS - Componentes

Los componentes de un RTOS pueden clasicarse ampliamente en 3 grupos: Scheduler: maneja los hilos de ejecucin de las tareas. o Objetos: tareas, colas, semforos, etc. a Servicios: operaciones realizadas sobre los objetos (manejo de interrupciones, de memoria, etc.)

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

23 / 114

Conceptos de RTOS

Componentes

RTOS - Componentes

Los componentes de un RTOS pueden clasicarse ampliamente en 3 grupos: Scheduler: maneja los hilos de ejecucin de las tareas. o Objetos: tareas, colas, semforos, etc. a Servicios: operaciones realizadas sobre los objetos (manejo de interrupciones, de memoria, etc.)

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

23 / 114

Conceptos de RTOS

Componentes

RTOS - Componentes

Los componentes de un RTOS pueden clasicarse ampliamente en 3 grupos: Scheduler: maneja los hilos de ejecucin de las tareas. o Objetos: tareas, colas, semforos, etc. a Servicios: operaciones realizadas sobre los objetos (manejo de interrupciones, de memoria, etc.)

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

23 / 114

Conceptos de RTOS

Componentes

RTOS - Scheduler

El Scheduler determina cundo se ejecutar cada tarea. Existen diferentes a a esquemas de scheduling: Cooperativo: La tarea en ejecucin cede el uso de CPU a otra o voluntariamente. Preemptive: La tarea en ejecucin cede el uso de CPU a otra por o orden del scheduler.
Priority-Based: Se asignan prioridades a las tareas para acceder al uso de CPU. Round-Robin: Se asigna un tiempo jo 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 Marzo - 2011 4-

24 / 114

Conceptos de RTOS

Componentes

RTOS - Scheduler

El Scheduler determina cundo se ejecutar cada tarea. Existen diferentes a a esquemas de scheduling: Cooperativo: La tarea en ejecucin cede el uso de CPU a otra o voluntariamente. Preemptive: La tarea en ejecucin cede el uso de CPU a otra por o orden del scheduler.
Priority-Based: Se asignan prioridades a las tareas para acceder al uso de CPU. Round-Robin: Se asigna un tiempo jo 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 Marzo - 2011 4-

24 / 114

Conceptos de RTOS

Componentes

RTOS - Scheduler

El Scheduler determina cundo se ejecutar cada tarea. Existen diferentes a a esquemas de scheduling: Cooperativo: La tarea en ejecucin cede el uso de CPU a otra o voluntariamente. Preemptive: La tarea en ejecucin cede el uso de CPU a otra por o orden del scheduler.
Priority-Based: Se asignan prioridades a las tareas para acceder al uso de CPU. Round-Robin: Se asigna un tiempo jo 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 Marzo - 2011 4-

24 / 114

Conceptos de RTOS

Componentes

RTOS - Scheduler

El Scheduler determina cundo se ejecutar cada tarea. Existen diferentes a a esquemas de scheduling: Cooperativo: La tarea en ejecucin cede el uso de CPU a otra o voluntariamente. Preemptive: La tarea en ejecucin cede el uso de CPU a otra por o orden del scheduler.
Priority-Based: Se asignan prioridades a las tareas para acceder al uso de CPU. Round-Robin: Se asigna un tiempo jo 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 Marzo - 2011 4-

24 / 114

Conceptos de RTOS

Componentes

RTOS - Scheduler

El Scheduler determina cundo se ejecutar cada tarea. Existen diferentes a a esquemas de scheduling: Cooperativo: La tarea en ejecucin cede el uso de CPU a otra o voluntariamente. Preemptive: La tarea en ejecucin cede el uso de CPU a otra por o orden del scheduler.
Priority-Based: Se asignan prioridades a las tareas para acceder al uso de CPU. Round-Robin: Se asigna un tiempo jo 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 Marzo - 2011 4-

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 Marzo - 2011 4-

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 Marzo - 2011 4-

26 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Una tarea es un hilo de ejecucin independiente que puede competir o con otras tareas por tiempo de ejecucin. o Pueden ser creadas y eliminadas en tiempo de ejecucin. o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

27 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Una tarea es un hilo de ejecucin independiente que puede competir o con otras tareas por tiempo de ejecucin. o Pueden ser creadas y eliminadas en tiempo de ejecucin. o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

27 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Se compone de: Nombre/ID Prioridad (esquema preemptive) Stack Rutina (cdigo) o Bloque de control

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

28 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Se compone de: Nombre/ID Prioridad (esquema preemptive) Stack Rutina (cdigo) o Bloque de control

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

28 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Se compone de: Nombre/ID Prioridad (esquema preemptive) Stack Rutina (cdigo) o Bloque de control

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

28 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Se compone de: Nombre/ID Prioridad (esquema preemptive) Stack Rutina (cdigo) o Bloque de control

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

28 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Se compone de: Nombre/ID Prioridad (esquema preemptive) Stack Rutina (cdigo) o Bloque de control

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

28 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Se compone de: Nombre/ID Prioridad (esquema preemptive) Stack Rutina (cdigo) o Bloque de control

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

28 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Algunos ejemplos de tareas: Inicializacin del sistema (ejecuta solo una vez) o Filtrar una seal (posiblemente peridica) n o Mostrar en pantalla (puede activarse ante un evento) Tarea idle Las tareas pueden tener diferentes requerimientos de temporizacin. o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

29 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Algunos ejemplos de tareas: Inicializacin del sistema (ejecuta solo una vez) o Filtrar una seal (posiblemente peridica) n o Mostrar en pantalla (puede activarse ante un evento) Tarea idle Las tareas pueden tener diferentes requerimientos de temporizacin. o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

29 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Algunos ejemplos de tareas: Inicializacin del sistema (ejecuta solo una vez) o Filtrar una seal (posiblemente peridica) n o Mostrar en pantalla (puede activarse ante un evento) Tarea idle Las tareas pueden tener diferentes requerimientos de temporizacin. o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

29 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Algunos ejemplos de tareas: Inicializacin del sistema (ejecuta solo una vez) o Filtrar una seal (posiblemente peridica) n o Mostrar en pantalla (puede activarse ante un evento) Tarea idle Las tareas pueden tener diferentes requerimientos de temporizacin. o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

29 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Algunos ejemplos de tareas: Inicializacin del sistema (ejecuta solo una vez) o Filtrar una seal (posiblemente peridica) n o Mostrar en pantalla (puede activarse ante un evento) Tarea idle Las tareas pueden tener diferentes requerimientos de temporizacin. o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

29 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Algunos ejemplos de tareas: Inicializacin del sistema (ejecuta solo una vez) o Filtrar una seal (posiblemente peridica) n o Mostrar en pantalla (puede activarse ante un evento) Tarea idle Las tareas pueden tener diferentes requerimientos de temporizacin. o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

29 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Los estados posibles de una tarea son: Ready: compite por tiempo de ejecucin o Running: tarea activa Blocked: esperando pasar a Ready (podr activarse ante un a evento o cuando pase cierto tiempo)

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

30 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Los estados posibles de una tarea son: Ready: compite por tiempo de ejecucin o Running: tarea activa Blocked: esperando pasar a Ready (podr activarse ante un a evento o cuando pase cierto tiempo)

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

30 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Los estados posibles de una tarea son: Ready: compite por tiempo de ejecucin o Running: tarea activa Blocked: esperando pasar a Ready (podr activarse ante un a evento o cuando pase cierto tiempo)

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

30 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Los estados posibles de una tarea son: Ready: compite por tiempo de ejecucin o Running: tarea activa Blocked: esperando pasar a Ready (podr activarse ante un a evento o cuando pase cierto tiempo)

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

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 Marzo - 2011 4-

31 / 114

Conceptos de RTOS

Componentes

RTOS - Colas

Su funcin principal es proveer un mecanismo de intercambio de datos o entre tareas. Son FIFO.

Se compone de: Nombre/ID Tamao y tipo de datos a n almacenar Bloque de control

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

32 / 114

Conceptos de RTOS

Componentes

RTOS - Colas

Su funcin principal es proveer un mecanismo de intercambio de datos o entre tareas. Son FIFO.

Se compone de: Nombre/ID Tamao y tipo de datos a n almacenar Bloque de control

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

32 / 114

Conceptos de RTOS

Componentes

RTOS - Colas

Su funcin principal es proveer un mecanismo de intercambio de datos o entre tareas. Son FIFO.

Se compone de: Nombre/ID Tamao y tipo de datos a n almacenar Bloque de control

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

32 / 114

Conceptos de RTOS

Componentes

RTOS - Colas

Su funcin principal es proveer un mecanismo de intercambio de datos o entre tareas. Son FIFO.

Se compone de: Nombre/ID Tamao y tipo de datos a n almacenar Bloque de control

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

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 Marzo - 2011 4-

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 vac Al llegar un a a. elemento, automticamente pasa a Ready. a

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

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 vac Al llegar un a a. elemento, automticamente pasa a Ready. a 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 Marzo - 2011 4-

33 / 114

Conceptos de RTOS

Componentes

RTOS - Semforos a
Son objetos como las colas. Pueden ser creados y destruidos. Su funcin o principal es proveer un mecanismo de sincronizacin entre tareas. o

Ejemplo: acceder a un recurso (como escribir en una pantalla): Para acceder al recurso la tarea pide el semforo a Si est disponible, toma el semforo y realiza la operacin. a a o Al terminar, lo libera para que otros puedan acceder.
Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 434 / 114

Conceptos de RTOS

Componentes

RTOS - Semforos a
Son objetos como las colas. Pueden ser creados y destruidos. Su funcin o principal es proveer un mecanismo de sincronizacin entre tareas. o

Ejemplo: acceder a un recurso (como escribir en una pantalla): Para acceder al recurso la tarea pide el semforo a Si est disponible, toma el semforo y realiza la operacin. a a o Al terminar, lo libera para que otros puedan acceder.
Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 434 / 114

Conceptos de RTOS

Componentes

RTOS - Semforos a

Tambin pueden utilizarse para disparar un handler ante una interrupcin e o La Tarea 1 est activa hasta que a en t2 ocurre una interrupcin. o El ISR se ejecuta y cede un semforo asociado al Handler en a t3. El Handler se desbloquea y toma el semforo, de la misma a manera que si le llegara un dato por una cola.

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

35 / 114

Conceptos de RTOS

Componentes

RTOS - Semforos a

El Handler ejecuta su rutina dentro de un for( ;;) y cuando termina quiere volver a tomar el semforo. a Como no hubo otra interrupcin o que cediera un semforo, el a 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 Marzo - 2011 4-

36 / 114

Conceptos de RTOS

Componentes

RTOS - Semforos a

Los recin descriptos se conocen como semforos binarios (tienen 2 e a estados). Existen otros mtodos de sincronizacin: e o Semforos de conteo: pueden tomarse o liberarse ms de una vez. a a Mutex: similares a los semforos binarios pero con funciones a adicionales (como herencia de prioridades).

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

37 / 114

Conceptos de RTOS

Componentes

RTOS - Semforos a

Los recin descriptos se conocen como semforos binarios (tienen 2 e a estados). Existen otros mtodos de sincronizacin: e o Semforos de conteo: pueden tomarse o liberarse ms de una vez. a a Mutex: similares a los semforos binarios pero con funciones a adicionales (como herencia de prioridades).

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

37 / 114

Conceptos de RTOS

Componentes

RTOS - Semforos a

Los recin descriptos se conocen como semforos binarios (tienen 2 e a estados). Existen otros mtodos de sincronizacin: e o Semforos de conteo: pueden tomarse o liberarse ms de una vez. a a Mutex: similares a los semforos binarios pero con funciones a adicionales (como herencia de prioridades).

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

37 / 114

Conceptos de RTOS

Utilidad

RTOS - Por qu usarlo? e


Existen varias razones por las cuales usar un RTOS: Abstraccin de la implementacin del scheduling o o Mayor modularidad Facilita el desarrollo en grupos Mayor facilidad al debuggear Mayor reusabilidad del cdigo o Posibilidad de realizar proling (tarea idle) Reducen el tiempo de desarrollo y la lista sigue ...

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

38 / 114

Conceptos de RTOS

Utilidad

RTOS - Por qu usarlo? e


Existen varias razones por las cuales usar un RTOS: Abstraccin de la implementacin del scheduling o o Mayor modularidad Facilita el desarrollo en grupos Mayor facilidad al debuggear Mayor reusabilidad del cdigo o Posibilidad de realizar proling (tarea idle) Reducen el tiempo de desarrollo y la lista sigue ...

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

38 / 114

Conceptos de RTOS

Utilidad

RTOS - Por qu usarlo? e


Existen varias razones por las cuales usar un RTOS: Abstraccin de la implementacin del scheduling o o Mayor modularidad Facilita el desarrollo en grupos Mayor facilidad al debuggear Mayor reusabilidad del cdigo o Posibilidad de realizar proling (tarea idle) Reducen el tiempo de desarrollo y la lista sigue ...

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

38 / 114

Conceptos de RTOS

Utilidad

RTOS - Por qu usarlo? e


Existen varias razones por las cuales usar un RTOS: Abstraccin de la implementacin del scheduling o o Mayor modularidad Facilita el desarrollo en grupos Mayor facilidad al debuggear Mayor reusabilidad del cdigo o Posibilidad de realizar proling (tarea idle) Reducen el tiempo de desarrollo y la lista sigue ...

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

38 / 114

Conceptos de RTOS

Utilidad

RTOS - Por qu usarlo? e


Existen varias razones por las cuales usar un RTOS: Abstraccin de la implementacin del scheduling o o Mayor modularidad Facilita el desarrollo en grupos Mayor facilidad al debuggear Mayor reusabilidad del cdigo o Posibilidad de realizar proling (tarea idle) Reducen el tiempo de desarrollo y la lista sigue ...

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

38 / 114

Conceptos de RTOS

Utilidad

RTOS - Por qu usarlo? e


Existen varias razones por las cuales usar un RTOS: Abstraccin de la implementacin del scheduling o o Mayor modularidad Facilita el desarrollo en grupos Mayor facilidad al debuggear Mayor reusabilidad del cdigo o Posibilidad de realizar proling (tarea idle) Reducen el tiempo de desarrollo y la lista sigue ...

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

38 / 114

Conceptos de RTOS

Utilidad

RTOS - Por qu usarlo? e


Existen varias razones por las cuales usar un RTOS: Abstraccin de la implementacin del scheduling o o Mayor modularidad Facilita el desarrollo en grupos Mayor facilidad al debuggear Mayor reusabilidad del cdigo o Posibilidad de realizar proling (tarea idle) Reducen el tiempo de desarrollo y la lista sigue ...

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

38 / 114

Conceptos de RTOS

Utilidad

RTOS - Por qu usarlo? e


Existen varias razones por las cuales usar un RTOS: Abstraccin de la implementacin del scheduling o o Mayor modularidad Facilita el desarrollo en grupos Mayor facilidad al debuggear Mayor reusabilidad del cdigo o Posibilidad de realizar proling (tarea idle) Reducen el tiempo de desarrollo y la lista sigue ...

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

38 / 114

Conceptos de RTOS

Utilidad

RTOS - Por qu usarlo? e


Existen varias razones por las cuales usar un RTOS: Abstraccin de la implementacin del scheduling o o Mayor modularidad Facilita el desarrollo en grupos Mayor facilidad al debuggear Mayor reusabilidad del cdigo o Posibilidad de realizar proling (tarea idle) Reducen el tiempo de desarrollo y la lista sigue ...

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

38 / 114

Conceptos de RTOS

Utilidad

RTOS - Por qu usarlo? e

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 Marzo - 2011 4-

39 / 114

Conceptos de RTOS

Utilidad

RTOS - Por qu usarlo? e

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 Marzo - 2011 4-

39 / 114

Conceptos de RTOS

Utilidad

RTOS - Por qu usarlo? e

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 Marzo - 2011 4-

39 / 114

Conceptos de RTOS

Utilidad

RTOS - Por qu usarlo? e

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 Marzo - 2011 4-

39 / 114

Conceptos de RTOS

Utilidad

FreeRTOS
Por qu decidimos usar FreeRTOS: e Es de cdigo abierto o
Cdigo ampliamente comentado o Sencillo de portar (existen ms de 23 ports) a

Ocupa poco espacio en ash (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 Puede ser usado en aplicaciones comerciales bajo as. licencia GNU versin 2. o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

40 / 114

Conceptos de RTOS

Utilidad

FreeRTOS
Por qu decidimos usar FreeRTOS: e Es de cdigo abierto o
Cdigo ampliamente comentado o Sencillo de portar (existen ms de 23 ports) a

Ocupa poco espacio en ash (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 Puede ser usado en aplicaciones comerciales bajo as. licencia GNU versin 2. o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

40 / 114

Conceptos de RTOS

Utilidad

FreeRTOS
Por qu decidimos usar FreeRTOS: e Es de cdigo abierto o
Cdigo ampliamente comentado o Sencillo de portar (existen ms de 23 ports) a

Ocupa poco espacio en ash (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 Puede ser usado en aplicaciones comerciales bajo as. licencia GNU versin 2. o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

40 / 114

Conceptos de RTOS

Utilidad

FreeRTOS
Por qu decidimos usar FreeRTOS: e Es de cdigo abierto o
Cdigo ampliamente comentado o Sencillo de portar (existen ms de 23 ports) a

Ocupa poco espacio en ash (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 Puede ser usado en aplicaciones comerciales bajo as. licencia GNU versin 2. o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

40 / 114

Conceptos de RTOS

Utilidad

FreeRTOS
Por qu decidimos usar FreeRTOS: e Es de cdigo abierto o
Cdigo ampliamente comentado o Sencillo de portar (existen ms de 23 ports) a

Ocupa poco espacio en ash (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 Puede ser usado en aplicaciones comerciales bajo as. licencia GNU versin 2. o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

40 / 114

Conceptos de RTOS

Utilidad

FreeRTOS
Por qu decidimos usar FreeRTOS: e Es de cdigo abierto o
Cdigo ampliamente comentado o Sencillo de portar (existen ms de 23 ports) a

Ocupa poco espacio en ash (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 Puede ser usado en aplicaciones comerciales bajo as. licencia GNU versin 2. o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

40 / 114

Conceptos de RTOS

Utilidad

FreeRTOS
Por qu decidimos usar FreeRTOS: e Es de cdigo abierto o
Cdigo ampliamente comentado o Sencillo de portar (existen ms de 23 ports) a

Ocupa poco espacio en ash (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 Puede ser usado en aplicaciones comerciales bajo as. licencia GNU versin 2. o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

40 / 114

Conceptos de RTOS

Utilidad

FreeRTOS
Por qu decidimos usar FreeRTOS: e Es de cdigo abierto o
Cdigo ampliamente comentado o Sencillo de portar (existen ms de 23 ports) a

Ocupa poco espacio en ash (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 Puede ser usado en aplicaciones comerciales bajo as. licencia GNU versin 2. o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

40 / 114

Conceptos de RTOS

Utilidad

FreeRTOS

Existen tambin otras licencias para este RTOS: e Existe una licencia comercial con soporte ocial y garant legales as (OpenRTOS). Existe una licencia certicada SIL3 para aplicaciones cr ticas (SafeRTOS). La versin FreeRTOS 6.0.0 portada a Cortex-M3 soporta MPU o (Memory Protection Unit).

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

41 / 114

Conceptos de RTOS

Utilidad

FreeRTOS

Existen tambin otras licencias para este RTOS: e Existe una licencia comercial con soporte ocial y garant legales as (OpenRTOS). Existe una licencia certicada SIL3 para aplicaciones cr ticas (SafeRTOS). La versin FreeRTOS 6.0.0 portada a Cortex-M3 soporta MPU o (Memory Protection Unit).

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

41 / 114

Conceptos de RTOS

Utilidad

FreeRTOS

Existen tambin otras licencias para este RTOS: e Existe una licencia comercial con soporte ocial y garant legales as (OpenRTOS). Existe una licencia certicada SIL3 para aplicaciones cr ticas (SafeRTOS). La versin FreeRTOS 6.0.0 portada a Cortex-M3 soporta MPU o (Memory Protection Unit).

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

41 / 114

Conceptos de RTOS

Utilidad

FreeRTOS

Existen tambin otras licencias para este RTOS: e Existe una licencia comercial con soporte ocial y garant legales as (OpenRTOS). Existe una licencia certicada SIL3 para aplicaciones cr ticas (SafeRTOS). La versin FreeRTOS 6.0.0 portada a Cortex-M3 soporta MPU o (Memory Protection Unit).

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

41 / 114

LPCXpresso + FreeRTOS

Distribucin o

Section 3 LPCXpresso + FreeRTOS

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

42 / 114

LPCXpresso + FreeRTOS

Distribucin o

Es recomendable tener un workspace para cada proyecto que realicemos. En l conguraremos el RTOS. La estructura del workspace podr ser: e a 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 Marzo - 2011 4-

43 / 114

LPCXpresso + FreeRTOS

Distribucin o

Es recomendable tener un workspace para cada proyecto que realicemos. En l conguraremos el RTOS. La estructura del workspace podr ser: e a 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 Marzo - 2011 4-

43 / 114

LPCXpresso + FreeRTOS

Distribucin o

Es recomendable tener un workspace para cada proyecto que realicemos. En l conguraremos el RTOS. La estructura del workspace podr ser: e a 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 Marzo - 2011 4-

43 / 114

LPCXpresso + FreeRTOS

Distribucin o

Es recomendable tener un workspace para cada proyecto que realicemos. En l conguraremos el RTOS. La estructura del workspace podr ser: e a 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 Marzo - 2011 4-

43 / 114

LPCXpresso + FreeRTOS

Distribucin o

Es recomendable tener un workspace para cada proyecto que realicemos. En l conguraremos el RTOS. La estructura del workspace podr ser: e a 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 Marzo - 2011 4-

43 / 114

LPCXpresso + FreeRTOS

Distribucin o

El FreeRTOS esta compuesto por: list.c queue.c tasks.c Portable


heap X.c port.c portmacro.h

Include
FreeRTOSCong.h ...

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

44 / 114

LPCXpresso + FreeRTOS

Distribucin o

El FreeRTOS esta compuesto por: list.c queue.c tasks.c Portable


heap X.c port.c portmacro.h

Include
FreeRTOSCong.h ...

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

44 / 114

LPCXpresso + FreeRTOS

Distribucin o

El FreeRTOS esta compuesto por: list.c queue.c tasks.c Portable


heap X.c port.c portmacro.h

Include
FreeRTOSCong.h ...

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

44 / 114

LPCXpresso + FreeRTOS

Conguracin o

Antes de instalarlo en nuestro proyecto, debemos congurar el comportamiento del RTOS. Para ello freeRTOS provee un archivo FreeRTOScong.h en el que mediante macros podremos conurarlo.

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

45 / 114

LPCXpresso + FreeRTOS

Conguracin o

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 #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 INCLUDE INCLUDE INCLUDE INCLUDE vTaskPrioritySet 1 uxTaskPriorityGet 1 vTaskDelete 1 vTaskCleanUpResources 0

FreeRTOScong.h

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

46 / 114

LPCXpresso + FreeRTOS

Conguracin o

Los aspectos m importantes que debemos congurar son: s congUSE PREEMPTION congUSE XXXX HOOK (diferentes hooks) congMAX PRIORITIES congCPU CLOCK HZ congTICK RATE HZ congMINIMAL STACK SIZE congTOTAL HEAP SIZE congUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

47 / 114

LPCXpresso + FreeRTOS

Conguracin o

Los aspectos m importantes que debemos congurar son: s congUSE PREEMPTION congUSE XXXX HOOK (diferentes hooks) congMAX PRIORITIES congCPU CLOCK HZ congTICK RATE HZ congMINIMAL STACK SIZE congTOTAL HEAP SIZE congUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

47 / 114

LPCXpresso + FreeRTOS

Conguracin o

Los aspectos m importantes que debemos congurar son: s congUSE PREEMPTION congUSE XXXX HOOK (diferentes hooks) congMAX PRIORITIES congCPU CLOCK HZ congTICK RATE HZ congMINIMAL STACK SIZE congTOTAL HEAP SIZE congUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

47 / 114

LPCXpresso + FreeRTOS

Conguracin o

Los aspectos m importantes que debemos congurar son: s congUSE PREEMPTION congUSE XXXX HOOK (diferentes hooks) congMAX PRIORITIES congCPU CLOCK HZ congTICK RATE HZ congMINIMAL STACK SIZE congTOTAL HEAP SIZE congUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

47 / 114

LPCXpresso + FreeRTOS

Conguracin o

Los aspectos m importantes que debemos congurar son: s congUSE PREEMPTION congUSE XXXX HOOK (diferentes hooks) congMAX PRIORITIES congCPU CLOCK HZ congTICK RATE HZ congMINIMAL STACK SIZE congTOTAL HEAP SIZE congUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

47 / 114

LPCXpresso + FreeRTOS

Conguracin o

Los aspectos m importantes que debemos congurar son: s congUSE PREEMPTION congUSE XXXX HOOK (diferentes hooks) congMAX PRIORITIES congCPU CLOCK HZ congTICK RATE HZ congMINIMAL STACK SIZE congTOTAL HEAP SIZE congUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

47 / 114

LPCXpresso + FreeRTOS

Conguracin o

Los aspectos m importantes que debemos congurar son: s congUSE PREEMPTION congUSE XXXX HOOK (diferentes hooks) congMAX PRIORITIES congCPU CLOCK HZ congTICK RATE HZ congMINIMAL STACK SIZE congTOTAL HEAP SIZE congUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

47 / 114

LPCXpresso + FreeRTOS

Conguracin o

Los aspectos m importantes que debemos congurar son: s congUSE PREEMPTION congUSE XXXX HOOK (diferentes hooks) congMAX PRIORITIES congCPU CLOCK HZ congTICK RATE HZ congMINIMAL STACK SIZE congTOTAL HEAP SIZE congUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

47 / 114

LPCXpresso + FreeRTOS

Conguracin o

Los aspectos m importantes que debemos congurar son: s congUSE PREEMPTION congUSE XXXX HOOK (diferentes hooks) congMAX PRIORITIES congCPU CLOCK HZ congTICK RATE HZ congMINIMAL STACK SIZE congTOTAL HEAP SIZE congUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

47 / 114

LPCXpresso + FreeRTOS

Conguracin o

Total Heap Size


El freeRTOS utiliza este HEAP para almacenar el TCB y los diferentes STACKs de las tareas. Tambin lo usar e a para guardar en memoria semaforos, mutex, etc.

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

48 / 114

LPCXpresso + FreeRTOS

Instalacin o

Subsection 3 Instalacin o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

49 / 114

LPCXpresso + FreeRTOS

Instalacin o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

50 / 114

LPCXpresso + FreeRTOS

Instalacin o

No! es ms facil. Simplemente tenemos que compilar la biblioteca a (CONFIGURADA) de FreeRTOS y linkearla con nuestro proyecto. Luego hay que hacer algunas modicaciones al cdigo generado por LPCXpresso. o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

51 / 114

LPCXpresso + FreeRTOS

Instalacin o

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 , // C h i p L e v e l LPC17 WDT IRQHandler , TIMER0 IRQHandler , TIMER1 IRQHandler , ...... 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 , ......

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

52 / 114

Estructura de una aplicacin o

Esquema

Section 4 Estructura de una aplicacin o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

53 / 114

Estructura de una aplicacin o

Esquema

Luego que ya tenemos instalado el freeRTOS, tenemos que crear tareas e inicializar el Scheduler. Entonces una aplicacin que utilice este RTOS o podr ser de la siguiente manera: a

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

54 / 114

Estructura de una aplicacin o

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 Marzo - 2011 4-

55 / 114

Estructura de una aplicacin o

Esquema

Cmo es una tarea? o


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 <1000000; i ++); v T a s k D e l a y ( 5 0 0 / portTICK RATE MS ) ; } }

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

56 / 114

Estructura de una aplicacin o

Esquema

Nuestra tarea como diseadores ahora es determinar que cosas de nuestras n aplicaciones sern tareas del sistema, que recursos de comunicacin y a o sincronizacin entre tareas tendremos que crear y cuales seran las o prioridades de las mismas.

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

57 / 114

Estructura de una aplicacin o

Tareas

Algunas caracteristicas que deben tener las tareas: Son funciones de C estandar Tiene una prioridad determinada Se pueden crear multiples instancias

NO RETORNAN NUNCA

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

58 / 114

Estructura de una aplicacin o

Tareas

Algunas caracteristicas que deben tener las tareas: Son funciones de C estandar Tiene una prioridad determinada Se pueden crear multiples instancias

NO RETORNAN NUNCA

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

58 / 114

Estructura de una aplicacin o

Tareas

Algunas caracteristicas que deben tener las tareas: Son funciones de C estandar Tiene una prioridad determinada Se pueden crear multiples instancias

NO RETORNAN NUNCA

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

58 / 114

Estructura de una aplicacin o

Tareas

Algunas caracteristicas que deben tener las tareas: Son funciones de C estandar Tiene una prioridad determinada Se pueden crear multiples instancias

NO RETORNAN NUNCA

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

58 / 114

Drivers

Generalidades

Section 5 Drivers

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

59 / 114

Drivers

Generalidades

Qu es un driver? e
Segun Wikipedia: es un programa informtico que permite al a sistema operativo interactuar con un perifrico, haciendo una e abstraccin del hardware y proporcionando una interfaz -posiblemente o estandarizada- para usarlo.

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

60 / 114

Drivers

Generalidades

Qu es un driver? e
Segun Linux: algo muy dif de instalar si no nos sirve el que viene. cil

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

61 / 114

Drivers

Generalidades

Qu es un driver? e Segun Windows: KARMA

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

62 / 114

Drivers

Generalidades

Qu es un driver? e
Segun freeRTOS: una tarea como cualquier otra pero con un

propsito espec o co. (El de wikipedia)

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

63 / 114

Drivers

Justicacin o

Por qu deber e amos usar un driver?


Provee abstraccin o Brinda control de acceso al hardware (MUTEX?) Est optimizado para ocupar poco tiempo de CPU a

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

64 / 114

Drivers

Ejemplo - UART

Si queremos utilizar la UART para mandar informacin desde nuestras o tareas podemos hacerlo de dos maneras: Sin drivers Con drivers

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

65 / 114

Drivers

Ejemplo - UART

Una implementacin SIN drivers podr ser la siguiente: o a


// 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 l p c 1 7 x x u a r t . h #i n c l u d e t a s k . h i n t main ( v o i d ) { // //Conguro los pines y la UART UARTCongStruct.Baud rate = 115200 UARTCongStruct.Databits = UART DATABIT 8; UART Init(LPC UART3, &UARTCongStruct); UART TxCmd(LPC UART3, ENABLE); // // C r e o l a s t a r e a s x T a s k C r e a t e ( p r i n t e r T a s k 1 , Task 1 , 2 0 0 , NULL , 1 , NULL ) ; x T a s k C r e a t e ( p r i n t e r T a s k 2 , Task 2 , 2 0 0 , NULL , 1 , 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 Marzo - 2011 4-

66 / 114

Drivers

Ejemplo - UART

En donde cada task ser implementado de la siguiente manera: a


// 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 l p c 1 7 x x u a r t . h #i n c l u d e t a s k . h void printerTask1 ( void pvParameters ) c h a r myMsg [ ] = H o l a e s t o e s una p r u e b a ; for (;;){ UART Send ( LPC UART3 , myMsg , s t r l e n ( myMsg ) , BLOCKING ) ; v T a s k D e l a y ( 5 0 0 / portTICK RATE MS ) ; } }

En donde el delay podr ser diferente para el task1 y para el task2 a

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

67 / 114

Drivers

Ejemplo - UART

Cul ser el resultado? a a

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

68 / 114

Drivers

Ejemplo - UART

\\ Hola estHola esto es una pruebao es una prueba \\

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

69 / 114

Drivers

Ejemplo - UART

Una impementacin CON drivers podr ser la siguiente: o a


// 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 u a r t d r i v e r . 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 ( p r i n t e r T a s k 1 , Task 1 , 2 0 0 , NULL , 1 , NULL ) ; x T a s k C r e a t e ( p r i n t e r T a s k 2 , Task 2 , 2 0 0 , NULL , 1 , 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 Marzo - 2011 4-

70 / 114

Drivers

Ejemplo - UART

En donde el driver podr tener una implementacin de la siguiente forma: a o


xQueueHandle s t d o u t Q u e u e ; v o i d UART Driver ( v o i d p v P a r a m e t e r s ){ // C o n f i g u r a m o s l a UART UARTConfigStruct . Baud rate = 115200; U A R T C o n f i g S t r u c t . D a t a b i t s = UART DATABIT 8 ; U A R T C o n f i g S t r u c t . P a r i t y = UART PARITY NONE ; U A R T C o n f i g S t r u c t . S t o p b i t s = UART STOPBIT 1 ; // I n i c i a l i z a m o s l a UART U A R T I n i t ( LPC UART3 , &U A R T C o n f i g S t r u c t ) ; UART TxCmd( LPC UART3 , ENABLE ) ; stdoutQueue = xQueueCreate (10 , s i z e o f ( char ) ) ; for (;;){ char ptr ; x Q u e u e R e c e i v e ( s t d o u t Q u e u e ,& p t r , portMAX DELAY ) ; UART Send ( LPC UART3 , p t r , s t r l e n ( p t r ) , BLOCKING ) ; } }

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

71 / 114

Drivers

Ejemplo - UART

Y ahora, cada task ser implementado de la siguiente manera: a


void printerTask1 ( void pvParameters ) c h a r myMsg [ ] = H o l a e s t o e s una p r u e b a ; for (;;){ c h a r p t r = &myMsg ; xQueueSendToBack ( s t d o u t Q u e u e ,& p t r , 0 ) ; v T a s k D e l a y ( 5 0 0 / portTICK RATE MS ) ; } }

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

72 / 114

Drivers

Ejemplo - UART

Y el resultado ser a:

\\ Hola esto es una pruebaHola esto es una prueba \\


Ya que no hay posibilidad de que uno corte al otro por que la cola es secuencial, y hasta no terminar un mensaje, el driver no vuelve a pedir otro elemento.

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

73 / 114

Proling

Section 6 Proling

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

74 / 114

Proling

El freeRTOS provee algunas herramientas que permiten realizar mediciones del desempeo del sistema en tiempo real. Esto generalmente es llamado Proling y las herramientas son: Tracing RuntimeStats

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

75 / 114

Proling

Tracing

El freeRTOS nos permite rastrear que es lo que hace el Sistema Operativo. Por ejemplo: Cuando entra a una tarea Cuando sale de una tarea Cuando se produce un cambio de contexto

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

76 / 114

Proling

Tracing

Para utilizar las funciones de tracing, simplemente hay que habilitar el macro el el archivo FreeRTOSCong.h y luego denir las macros como por ejemplo:
#d e f i n e traceTASK SWITCHED OUT ( ) l o g e v e n t ( pxCurrentTCB ) ;

Podemos loggear estas acciones o sacarla por pines y verlas con un analizador lgico por ejemplo. o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

77 / 114

Proling

Run Time Stats

La herramienta de Run Time stats nos permite ver cuanto tiempo de CPU est utilizando cada tarea. Se la congura en el archivo a FreeRTOSCong.h y al llamarla devuelve en un buer un reporte tipo texto. Notar que es necesario proveer al RTOS de un timer para llevar el paso del tiempo con mayor resolucion que el System Tick.

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

78 / 114

Proling

Run Time Stats

La salida generada es:


IDLE Touchscreen LCD ... 10200 50 450 80% <1% 3%

Donde los numeros representan la cantidad de tiempo utilizado en la resolucin del timer que se le haya congurado. Por ejemplo si se produce o un incremento cada 1uS entonces la salida es en microsegundos.

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

79 / 114

Ejemplo de aplicacin o

ECG Holter

Section 7 Ejemplo de aplicacin o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

80 / 114

Ejemplo de aplicacin o

ECG Holter

Ejemplo de aplicacin - Holter card o aco

Un Holter card aco es un dispositivo mdico para grabar la seal de e n ECG durante 24 o 48 horas. Debe portarlo un paciente sin que afecte su vida diaria
Dimensiones reducidas Liviano Bajo consumo

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

81 / 114

Ejemplo de aplicacin o

ECG Holter

Ejemplo de aplicacin - Holter card o aco

Un Holter card aco es un dispositivo mdico para grabar la seal de e n ECG durante 24 o 48 horas. Debe portarlo un paciente sin que afecte su vida diaria
Dimensiones reducidas Liviano Bajo consumo

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

81 / 114

Ejemplo de aplicacin o

ECG Holter

Ejemplo de aplicacin - Holter card o aco

Un Holter card aco es un dispositivo mdico para grabar la seal de e n ECG durante 24 o 48 horas. Debe portarlo un paciente sin que afecte su vida diaria
Dimensiones reducidas Liviano Bajo consumo

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

81 / 114

Ejemplo de aplicacin o

ECG Holter

Ejemplo de aplicacin - Holter card o aco

Un Holter card aco es un dispositivo mdico para grabar la seal de e n ECG durante 24 o 48 horas. Debe portarlo un paciente sin que afecte su vida diaria
Dimensiones reducidas Liviano Bajo consumo

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

81 / 114

Ejemplo de aplicacin o

ECG Holter

Ejemplo de aplicacin - Holter card o aco

Un Holter card aco es un dispositivo mdico para grabar la seal de e n ECG durante 24 o 48 horas. Debe portarlo un paciente sin que afecte su vida diaria
Dimensiones reducidas Liviano Bajo consumo

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

81 / 114

Ejemplo de aplicacin o

ECG Holter

Ejemplo de aplicacin - Holter card o aco

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

82 / 114

Ejemplo de aplicacin o

ECG Holter

Ejemplo de aplicacin - Holter card o aco

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

82 / 114

Ejemplo de aplicacin o

ECG Holter

Ejemplo de aplicacin - Holter card o aco

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

82 / 114

Ejemplo de aplicacin o

ECG Holter

Holter - especicaciones tcnicas e

Bsicamente el Holter consta de: a Display GLCD Touchscreen Interfaz analgica (ampli de instrumentacin y ltro LP) o o Tarjeta de memoria SD Microcontrolador LPC1768
Conversor A/D UART Funcionalidades para manejar los items anteriores

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

83 / 114

Ejemplo de aplicacin o

ECG Holter

Holter - especicaciones tcnicas e

Bsicamente el Holter consta de: a Display GLCD Touchscreen Interfaz analgica (ampli de instrumentacin y ltro LP) o o Tarjeta de memoria SD Microcontrolador LPC1768
Conversor A/D UART Funcionalidades para manejar los items anteriores

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

83 / 114

Ejemplo de aplicacin o

ECG Holter

Holter - especicaciones tcnicas e

Bsicamente el Holter consta de: a Display GLCD Touchscreen Interfaz analgica (ampli de instrumentacin y ltro LP) o o Tarjeta de memoria SD Microcontrolador LPC1768
Conversor A/D UART Funcionalidades para manejar los items anteriores

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

83 / 114

Ejemplo de aplicacin o

ECG Holter

Holter - especicaciones tcnicas e

Bsicamente el Holter consta de: a Display GLCD Touchscreen Interfaz analgica (ampli de instrumentacin y ltro LP) o o Tarjeta de memoria SD Microcontrolador LPC1768
Conversor A/D UART Funcionalidades para manejar los items anteriores

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

83 / 114

Ejemplo de aplicacin o

ECG Holter

Holter - especicaciones tcnicas e

Bsicamente el Holter consta de: a Display GLCD Touchscreen Interfaz analgica (ampli de instrumentacin y ltro LP) o o Tarjeta de memoria SD Microcontrolador LPC1768
Conversor A/D UART Funcionalidades para manejar los items anteriores

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

83 / 114

Ejemplo de aplicacin o

ECG Holter

Holter - especicaciones tcnicas e

Bsicamente el Holter consta de: a Display GLCD Touchscreen Interfaz analgica (ampli de instrumentacin y ltro LP) o o Tarjeta de memoria SD Microcontrolador LPC1768
Conversor A/D UART Funcionalidades para manejar los items anteriores

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

83 / 114

Ejemplo de aplicacin o

ECG Holter

Holter - especicaciones tcnicas e

Bsicamente el Holter consta de: a Display GLCD Touchscreen Interfaz analgica (ampli de instrumentacin y ltro LP) o o Tarjeta de memoria SD Microcontrolador LPC1768
Conversor A/D UART Funcionalidades para manejar los items anteriores

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

83 / 114

Ejemplo de aplicacin o

ECG Holter

Holter - especicaciones tcnicas e

Bsicamente el Holter consta de: a Display GLCD Touchscreen Interfaz analgica (ampli de instrumentacin y ltro LP) o o Tarjeta de memoria SD Microcontrolador LPC1768
Conversor A/D UART Funcionalidades para manejar los items anteriores

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

83 / 114

Ejemplo de aplicacin o

ECG Holter

Holter - Diagrama de estados

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

84 / 114

Ejemplo de aplicacin o

ECG Holter

Holter - Diagrama de estados

A continuacin veremos como implementar estas funcionalidades con o FreeRTOS ...

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

85 / 114

Ejemplo de aplicacin o

ECG Holter

Holter - GLCD

Primero veamos como controlar al GLCD...

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

86 / 114

Ejemplo de aplicacin o

ECG Holter

Holter - GLCD

El refresco del GLCD lo realiza una tarea peridica cada 10 Hz. o Se basa en actualizar la RAM del controlador con el contenido de un framebuer. Un framebuer es un bloque de memoria reservado en la RAM del micro. Posee tantos bits como pixels el tenga el display Es un espejo de la imagen que se est mostrando...mejor dicho, lo a que se est mostrando es un espejo del framebuer. a

Cmo funciona? o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

87 / 114

Ejemplo de aplicacin o

ECG Holter

Holter - GLCD

El refresco del GLCD lo realiza una tarea peridica cada 10 Hz. o Se basa en actualizar la RAM del controlador con el contenido de un framebuer. Un framebuer es un bloque de memoria reservado en la RAM del micro. Posee tantos bits como pixels el tenga el display Es un espejo de la imagen que se est mostrando...mejor dicho, lo a que se est mostrando es un espejo del framebuer. a

Cmo funciona? o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

87 / 114

Ejemplo de aplicacin o

ECG Holter

Holter - GLCD

El refresco del GLCD lo realiza una tarea peridica cada 10 Hz. o Se basa en actualizar la RAM del controlador con el contenido de un framebuer. Un framebuer es un bloque de memoria reservado en la RAM del micro. Posee tantos bits como pixels el tenga el display Es un espejo de la imagen que se est mostrando...mejor dicho, lo a que se est mostrando es un espejo del framebuer. a

Cmo funciona? o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

87 / 114

Ejemplo de aplicacin o

ECG Holter

Holter - GLCD

El refresco del GLCD lo realiza una tarea peridica cada 10 Hz. o Se basa en actualizar la RAM del controlador con el contenido de un framebuer. Un framebuer es un bloque de memoria reservado en la RAM del micro. Posee tantos bits como pixels el tenga el display Es un espejo de la imagen que se est mostrando...mejor dicho, lo a que se est mostrando es un espejo del framebuer. a

Cmo funciona? o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

87 / 114

Ejemplo de aplicacin o

ECG Holter

Holter - GLCD

El refresco del GLCD lo realiza una tarea peridica cada 10 Hz. o Se basa en actualizar la RAM del controlador con el contenido de un framebuer. Un framebuer es un bloque de memoria reservado en la RAM del micro. Posee tantos bits como pixels el tenga el display Es un espejo de la imagen que se est mostrando...mejor dicho, lo a que se est mostrando es un espejo del framebuer. a

Cmo funciona? o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

87 / 114

Ejemplo de aplicacin o

ECG Holter

Holter - GLCD

El micro escribe directamente en el framebuer. Es una operacin o muy rpida. a Peridicamente, la tarea refresca el GLCD con el contenido del o frambuer.Pasa a estado activo, realiza su accin y luego se bloquea o por 100ms. Esto nos ahorra varios problemas: Asignando una prioridad baja a la tarea de refresco, aseguramos que se ejecuten otras tareas cr ticas. No dependemos de la latencia que tenga el display para escribir Si a esto le sumamos usar un driver para el display, nos abstraemos 100% del hardware.

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

88 / 114

Ejemplo de aplicacin o

ECG Holter

Holter - GLCD

El micro escribe directamente en el framebuer. Es una operacin o muy rpida. a Peridicamente, la tarea refresca el GLCD con el contenido del o o frambuer.Pasa a estado activo, realiza su accin y luego se bloquea por 100ms. Esto nos ahorra varios problemas: Asignando una prioridad baja a la tarea de refresco, aseguramos que se ejecuten otras tareas cr ticas. No dependemos de la latencia que tenga el display para escribir Si a esto le sumamos usar un driver para el display, nos abstraemos 100% del hardware.

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

88 / 114

Ejemplo de aplicacin o

ECG Holter

Holter - GLCD

El micro escribe directamente en el framebuer. Es una operacin o muy rpida. a Peridicamente, la tarea refresca el GLCD con el contenido del o o frambuer.Pasa a estado activo, realiza su accin y luego se bloquea por 100ms. Esto nos ahorra varios problemas: Asignando una prioridad baja a la tarea de refresco, aseguramos que se ejecuten otras tareas cr ticas. No dependemos de la latencia que tenga el display para escribir Si a esto le sumamos usar un driver para el display, nos abstraemos 100% del hardware.

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

88 / 114

Ejemplo de aplicacin o

ECG Holter

Holter - GLCD

El micro escribe directamente en el framebuer. Es una operacin o muy rpida. a Peridicamente, la tarea refresca el GLCD con el contenido del o o frambuer.Pasa a estado activo, realiza su accin y luego se bloquea por 100ms. Esto nos ahorra varios problemas: Asignando una prioridad baja a la tarea de refresco, aseguramos que se ejecuten otras tareas cr ticas. No dependemos de la latencia que tenga el display para escribir Si a esto le sumamos usar un driver para el display, nos abstraemos 100% del hardware.

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

88 / 114

Ejemplo de aplicacin o

ECG Holter

Holter - GLCD

El micro escribe directamente en el framebuer. Es una operacin o muy rpida. a Peridicamente, la tarea refresca el GLCD con el contenido del o o frambuer.Pasa a estado activo, realiza su accin y luego se bloquea por 100ms. Esto nos ahorra varios problemas: Asignando una prioridad baja a la tarea de refresco, aseguramos que se ejecuten otras tareas cr ticas. No dependemos de la latencia que tenga el display para escribir Si a esto le sumamos usar un driver para el display, nos abstraemos 100% del hardware.

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

88 / 114

Ejemplo de aplicacin o

ECG Holter

Holter - GLCD

El micro escribe directamente en el framebuer. Es una operacin o muy rpida. a Peridicamente, la tarea refresca el GLCD con el contenido del o o frambuer.Pasa a estado activo, realiza su accin y luego se bloquea por 100ms. Esto nos ahorra varios problemas: Asignando una prioridad baja a la tarea de refresco, aseguramos que se ejecuten otras tareas cr ticas. No dependemos de la latencia que tenga el display para escribir Si a esto le sumamos usar un driver para el display, nos abstraemos 100% del hardware.

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

88 / 114

Ejemplo de aplicacin o

ECG Holter

Holter - Touchscreen

Un touchscreen resistivo est compuesto de 2 capas conductoras que a se tocan al aplicar presin en un punto espec o co. Se lee su estado utilizando un A/D.
Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 489 / 114

Ejemplo de aplicacin o

ECG Holter

Holter - Touchscreen

Para leer la coordenada X, se aplica tensin sobre la X y se lee la Y. o En uno de los contactos del Y est la entrada del A/D y el otro en a Hi-Z. Los mismo para leer la Y. Las funciones de los pins cambian iterativamente.

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

90 / 114

Ejemplo de aplicacin o

ECG Holter

Holter - Touchscreen
Esta funcionalidad la implementamos con una tarea peridica. Se lee el o estado del touch cada 50ms.

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

91 / 114

Ejemplo de aplicacin o

ECG Holter

Holter - Touchscreen

Existe otra tarea que recibe el nuevo estado en su cola, se desbloquea, y realiza el cambio de estado. Se explica ms adelante. a

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

92 / 114

Ejemplo de aplicacin o

ECG Holter

Tareas - Adquisicin de datos o

Esta tarea es claramente la tarea ms importante de todo el sistema. a Tiene un requerimiento de tiempo duro, y no pueden presentar corriemiento temporal. Caracteristicas de la misma: Tiene que ejecutarse a 200 Hz, SIEMPRE Tarea Peridica o Tiene que ser corta (ya que se ejecuta muy seguido) Tiene la ms alta prioridad del sistema a

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

93 / 114

Ejemplo de aplicacin o

ECG Holter

Tareas - Adquisicin de datos o

Esta tarea es claramente la tarea ms importante de todo el sistema. a Tiene un requerimiento de tiempo duro, y no pueden presentar corriemiento temporal. Caracteristicas de la misma: Tiene que ejecutarse a 200 Hz, SIEMPRE Tarea Peridica o Tiene que ser corta (ya que se ejecuta muy seguido) Tiene la ms alta prioridad del sistema a

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

93 / 114

Ejemplo de aplicacin o

ECG Holter

Tareas - Adquisicin de datos o

Esta tarea es claramente la tarea ms importante de todo el sistema. a Tiene un requerimiento de tiempo duro, y no pueden presentar corriemiento temporal. Caracteristicas de la misma: Tiene que ejecutarse a 200 Hz, SIEMPRE Tarea Peridica o Tiene que ser corta (ya que se ejecuta muy seguido) Tiene la ms alta prioridad del sistema a

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

93 / 114

Ejemplo de aplicacin o

ECG Holter

Tareas - Adquisicin de datos o

Esta tarea es claramente la tarea ms importante de todo el sistema. a Tiene un requerimiento de tiempo duro, y no pueden presentar corriemiento temporal. Caracteristicas de la misma: Tiene que ejecutarse a 200 Hz, SIEMPRE Tarea Peridica o Tiene que ser corta (ya que se ejecuta muy seguido) Tiene la ms alta prioridad del sistema a

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

93 / 114

Ejemplo de aplicacin o

ECG Holter

Tareas - Adquisicin de datos o

Esta tarea es claramente la tarea ms importante de todo el sistema. a Tiene un requerimiento de tiempo duro, y no pueden presentar corriemiento temporal. Caracteristicas de la misma: Tiene que ejecutarse a 200 Hz, SIEMPRE Tarea Peridica o Tiene que ser corta (ya que se ejecuta muy seguido) Tiene la ms alta prioridad del sistema a

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

93 / 114

Ejemplo de aplicacin o

ECG Holter

Tareas - Adquisicin de datos o

Que tiene que hacer esta tarea?


Tomar un dato del ADC Filtrar el dato de los 50Hz de linea (operacin sobre el array muy o simple) Distribuir el dato a las tareas que lo necesiten
Memoria SD Dibujar en pantalla Detector de QRS Comunicacin con PC - UART o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

94 / 114

Ejemplo de aplicacin o

ECG Holter

Tareas - Adquisicin de datos o

Que tiene que hacer esta tarea?


Tomar un dato del ADC Filtrar el dato de los 50Hz de linea (operacin sobre el array muy o simple) Distribuir el dato a las tareas que lo necesiten
Memoria SD Dibujar en pantalla Detector de QRS Comunicacin con PC - UART o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

94 / 114

Ejemplo de aplicacin o

ECG Holter

Tareas - Adquisicin de datos o

Que tiene que hacer esta tarea?


Tomar un dato del ADC Filtrar el dato de los 50Hz de linea (operacin sobre el array muy o simple) Distribuir el dato a las tareas que lo necesiten
Memoria SD Dibujar en pantalla Detector de QRS Comunicacin con PC - UART o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

94 / 114

Ejemplo de aplicacin o

ECG Holter

Tareas - Adquisicin de datos o

Que tiene que hacer esta tarea?


Tomar un dato del ADC Filtrar el dato de los 50Hz de linea (operacin sobre el array muy o simple) Distribuir el dato a las tareas que lo necesiten
Memoria SD Dibujar en pantalla Detector de QRS Comunicacin con PC - UART o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

94 / 114

Ejemplo de aplicacin o

ECG Holter

Tareas - Adquisicin de datos o

Que tiene que hacer esta tarea?


Tomar un dato del ADC Filtrar el dato de los 50Hz de linea (operacin sobre el array muy o simple) Distribuir el dato a las tareas que lo necesiten
Memoria SD Dibujar en pantalla Detector de QRS Comunicacin con PC - UART o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

94 / 114

Ejemplo de aplicacin o

ECG Holter

Tareas - Adquisicin de datos o

Que tiene que hacer esta tarea?


Tomar un dato del ADC Filtrar el dato de los 50Hz de linea (operacin sobre el array muy o simple) Distribuir el dato a las tareas que lo necesiten
Memoria SD Dibujar en pantalla Detector de QRS Comunicacin con PC - UART o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

94 / 114

Ejemplo de aplicacin o

ECG Holter

Tareas - Adquisicin de datos o

Que tiene que hacer esta tarea?


Tomar un dato del ADC Filtrar el dato de los 50Hz de linea (operacin sobre el array muy o simple) Distribuir el dato a las tareas que lo necesiten
Memoria SD Dibujar en pantalla Detector de QRS Comunicacin con PC - UART o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

94 / 114

Ejemplo de aplicacin o

ECG Holter

Tareas - Adquisicin de datos o

Que tiene que hacer esta tarea?


Tomar un dato del ADC Filtrar el dato de los 50Hz de linea (operacin sobre el array muy o simple) Distribuir el dato a las tareas que lo necesiten
Memoria SD Dibujar en pantalla Detector de QRS Comunicacin con PC - UART o

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

94 / 114

Ejemplo de aplicacin o

ECG Holter

Tareas - Adquisicin de datos o

Cmo lo distribuyo? o
Exacto! usando COLAS. Estas colas, desbloquaran tareas por lo que las tareas que veremos a continuacin sern tareas que estarn bloqueadas hasta recibir datos en o a a sus colas Recuerdan el driver de UART?

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

95 / 114

Ejemplo de aplicacin o

ECG Holter

Tareas - Adquisicin de datos o

Cmo lo distribuyo? o
Exacto! usando COLAS. Estas colas, desbloquaran tareas por lo que las tareas que veremos a continuacin sern tareas que estarn bloqueadas hasta recibir datos en o a a sus colas Recuerdan el driver de UART?

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

95 / 114

Ejemplo de aplicacin o

ECG Holter

Tareas - Grabacin en memoria SD o

Esta tarea deber tener un buer que se ira a completando a medida que lleguen datos. Cuando estos lleguen, los grabaremos en la memoria. Esto se debe hay que hay un minimo de bloque que se puede grabar y si no lo utilizamos completo desperdiciar amos demasiado tiempo. (El grabado es un proceso lento)

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

96 / 114

Ejemplo de aplicacin o

ECG Holter

Tareas - Dibujar en pantalla


Esta tarea se encarga de dibujar la seal adquirida interpolando con n puntos. Tambin deber mostrar el tiempo del estudio y los latidos por e a minutos calculados.

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

97 / 114

Ejemplo de aplicacin o

ECG Holter

Tareas - Dibujar en pantalla

Pero, dnde dibuja? o


En la memoria de video, Exacto!

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

98 / 114

Ejemplo de aplicacin o

ECG Holter

Tareas - Dibujar en pantalla

Pero, dnde dibuja? o


En la memoria de video, Exacto!

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

98 / 114

Ejemplo de aplicacin o

ECG Holter

Tareas - Deteccin del QRS o


La seal de ECG puede ser muy variable y detectar los complejos no es un n proces tan sencillo...

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 4-

99 / 114

Ejemplo de aplicacin o

ECG Holter

Tareas - Deteccin del QRS o

Para detectarlos se utiliza una implementacin del algoritmo de o Hamilton. Est pensado para implementarlo en a micros. Usa aritmtica entera. e Va almacenando la seal en un buer. n Al llegar una nueva muestra, revisa las anteriores y detecta si hubo o no un QRS. Si lo detecta, devuelve cuntas a muestras atrs se detect. Tiene una a o latencia de aprox. 200ms.

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOSMarzo - 2011 4-

100 / 114

Ejemplo de aplicacin o

ECG Holter

Tareas - Comunicacin con PC o

Si recordamos el driver de la UART que usaba colas, esta tarea lo unico que debe hacer es adaptar el dato que recibe por la cola para ser enviado por la UART y enviarlo a la cola del driver.

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOSMarzo - 2011 4-

101 / 114

Ejemplo de aplicacin o

ECG Holter

Sincronizacin y control de estados o

Una buena manera de organizar todo esto es con una tarea que funcione como una mquina de estados. La misma funcionara con colas que le a diran a que estado cambiar. Cada vez que se deba cambiar de estados, algunas tareas se destruirn y otras se crearn. a a Estos cambios de estado los pueden producir: Eventos del touchscreen (botones) Alarmas de n de estudio Errores

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOSMarzo - 2011 4-

102 / 114

Ejemplo de aplicacin o

ECG Holter

Sincronizacin y control de estados o

Una buena manera de organizar todo esto es con una tarea que funcione como una mquina de estados. La misma funcionara con colas que le a diran a que estado cambiar. Cada vez que se deba cambiar de estados, algunas tareas se destruirn y otras se crearn. a a Estos cambios de estado los pueden producir: Eventos del touchscreen (botones) Alarmas de n de estudio Errores

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOSMarzo - 2011 4-

102 / 114

Ejemplo de aplicacin o

ECG Holter

Sincronizacin y control de estados o

Una buena manera de organizar todo esto es con una tarea que funcione como una mquina de estados. La misma funcionara con colas que le a diran a que estado cambiar. Cada vez que se deba cambiar de estados, algunas tareas se destruirn y otras se crearn. a a Estos cambios de estado los pueden producir: Eventos del touchscreen (botones) Alarmas de n de estudio Errores

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOSMarzo - 2011 4-

102 / 114

Ejemplo de aplicacin o

ECG Holter

Sincronizacin y control de estados o

Una buena manera de organizar todo esto es con una tarea que funcione como una mquina de estados. La misma funcionara con colas que le a diran a que estado cambiar. Cada vez que se deba cambiar de estados, algunas tareas se destruirn y otras se crearn. a a Estos cambios de estado los pueden producir: Eventos del touchscreen (botones) Alarmas de n de estudio Errores

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOSMarzo - 2011 4-

102 / 114

Ejemplo de aplicacin o

ECG Holter

Conclusin o

Y todo esto funciona?

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOSMarzo - 2011 4-

103 / 114

Ejemplo de aplicacin o

ECG Holter

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOSMarzo - 2011 4-

104 / 114

Ejemplo de aplicacin o

ECG Holter

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOSMarzo - 2011 4-

105 / 114

Ejemplo de aplicacin o

ECG Holter

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOSMarzo - 2011 4-

106 / 114

Ejemplo de aplicacin o

ECG Holter

Conclusin o

Cmo implementarin el sistema para que cada vez que se detecte o a un segmento QRS se muestre un corazon por 2 segundos y luego desaparezca?

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOSMarzo - 2011 4-

107 / 114

Ejemplo de aplicacin o

ECG Holter

Conclusin o

Si tenemos un RTOS entonces creamos una tarea que haga lo siguiente: Dibuje un corazn en pantalla (o en memoria?) o Espere 2 segundos (bloqueado, por supuesto) Borre el corazn que dibuj o o Y despus? e

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOSMarzo - 2011 4-

108 / 114

Ejemplo de aplicacin o

ECG Holter

Conclusin o

Si tenemos un RTOS entonces creamos una tarea que haga lo siguiente: Dibuje un corazn en pantalla (o en memoria?) o Espere 2 segundos (bloqueado, por supuesto) Borre el corazn que dibuj o o Y despus? e

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOSMarzo - 2011 4-

108 / 114

Ejemplo de aplicacin o

ECG Holter

Conclusin o

Si tenemos un RTOS entonces creamos una tarea que haga lo siguiente: Dibuje un corazn en pantalla (o en memoria?) o Espere 2 segundos (bloqueado, por supuesto) Borre el corazn que dibuj o o Y despus? e

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOSMarzo - 2011 4-

108 / 114

Ejemplo de aplicacin o

ECG Holter

Conclusin o

Si tenemos un RTOS entonces creamos una tarea que haga lo siguiente: Dibuje un corazn en pantalla (o en memoria?) o Espere 2 segundos (bloqueado, por supuesto) Borre el corazn que dibuj o o Y despus? e

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOSMarzo - 2011 4-

108 / 114

Ejemplo de aplicacin o

ECG Holter

Conclusin o

Si tenemos un RTOS entonces creamos una tarea que haga lo siguiente: Dibuje un corazn en pantalla (o en memoria?) o Espere 2 segundos (bloqueado, por supuesto) Borre el corazn que dibuj o o Y despus? e

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOSMarzo - 2011 4-

108 / 114

Ejemplo de aplicacin o

ECG Holter

Conclusin o

Si tenemos un RTOS entonces creamos una tarea que haga lo siguiente: Dibuje un corazn en pantalla (o en memoria?) o Espere 2 segundos (bloqueado, por supuesto) Borre el corazn que dibuj o o Y despus? e

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOSMarzo - 2011 4-

108 / 114

Ejemplo de aplicacin o

ECG Holter

Conclusin o

Si tenemos un RTOS entonces creamos una tarea que haga lo siguiente: Dibuje un corazn en pantalla (o en memoria?) o Espere 2 segundos (bloqueado, por supuesto) Borre el corazn que dibuj o o Y despus? e

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOSMarzo - 2011 4-

108 / 114

Ejemplo de aplicacin o

ECG Holter

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOSMarzo - 2011 4-

109 / 114

Ejemplo de aplicacin o

ECG Holter

Y si no ten amos un RTOS?

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOSMarzo - 2011 4-

110 / 114

Ejemplo de aplicacin o

ECG Holter

Malabarismo con TIMERS!


Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOSMarzo - 2011 4111 / 114

Ejemplo de aplicacin o

ECG Holter

Dudas?

Dudas? Consultas?

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOSMarzo - 2011 4-

112 / 114

Ejemplo de aplicacin o

ECG Holter

Gracias

Muchas gracias!

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOSMarzo - 2011 4-

113 / 114

Ejemplo de aplicacin o

ECG Holter

Referencias
Barry R. Using the FreeRTOS Real Time Kernel. NXP LPC17xx Edition. Qing L, Yao C. Real-Time Concepts for Embedded Systems. CMP Books 2003. Free RTOS ocial web. http://www.freertos.org/ E.P. Limiteds Open Source ECG Analysis Software. http://www.eplimited.com/ Hamilton PS, Tompkins WJ. Quantitative investigation of QRS detection rules using the MIT/BIH arrhythmia database. IEEE Trans. Biomed. Eng., BME-33(12):1157-1165, 1986. MIT/BIH arrhythmia database. http://www.physionet.org/physiobank/database/mitdb/

Alan Kharsansky, Mario Azcueta ()

Desarrollo de aplicaciones en LPCXpresso basadas en RTOSMarzo - 2011 4-

114 / 114

Vous aimerez peut-être aussi