Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en...

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 4 - Marzo - 2011 1 / 114

Transcript of Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en...

Page 1: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Laboratorio de

Sistemas Embebidos

Desarrollo de aplicaciones en LPCXpresso basadas enRTOS

Alan Kharsansky Mario Azcueta

4 - Marzo - 2011

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 1 / 114

Page 2: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Introduccion LPCXpresso Introduccion

Section 1

Introduccion LPCXpresso

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 2 / 114

Page 3: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Introduccion LPCXpresso Introduccion

Introduccion

El LPCXpresso es un toolchain completo para evaluacion y desarrollo conmicrocontroladores de NXP.

Esta compuesto por:

LPCXpresso IDE y ”development tools”

IDE basado en EclipseCompiler y linker GNUGDB debugger

LPCXpresso target board (stick)

BaseBoard o hardware adicional (opcional)

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 3 / 114

Page 4: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Introduccion LPCXpresso Introduccion

Introduccion

El LPCXpresso es un toolchain completo para evaluacion y desarrollo conmicrocontroladores de NXP.

Esta compuesto por:

LPCXpresso IDE y ”development tools”

IDE basado en EclipseCompiler y linker GNUGDB debugger

LPCXpresso target board (stick)

BaseBoard o hardware adicional (opcional)

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 3 / 114

Page 5: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Introduccion LPCXpresso Introduccion

Introduccion

El LPCXpresso es un toolchain completo para evaluacion y desarrollo conmicrocontroladores de NXP.

Esta compuesto por:

LPCXpresso IDE y ”development tools”

IDE basado en EclipseCompiler y linker GNUGDB debugger

LPCXpresso target board (stick)

BaseBoard o hardware adicional (opcional)

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 3 / 114

Page 6: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Introduccion LPCXpresso Introduccion

Introduccion

El LPCXpresso es un toolchain completo para evaluacion y desarrollo conmicrocontroladores de NXP.

Esta compuesto por:

LPCXpresso IDE y ”development tools”

IDE basado en EclipseCompiler y linker GNUGDB debugger

LPCXpresso target board (stick)

BaseBoard o hardware adicional (opcional)

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 3 / 114

Page 7: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Introduccion LPCXpresso LPCXpresso Target board

LPCXpresso target board

El target board es un un microcontrolador con todo lo necesario paraencender y tambien una herramienta que incluye un programador ydebugger.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 4 / 114

Page 8: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Introduccion LPCXpresso LPCXpresso Target board

LPCXpresso target board

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 5 / 114

Page 9: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Introduccion LPCXpresso LPCXpresso Target board

LPCXpresso target board

Del lado del target este incluye algunos perifericos basicos y secomercializan con diferentes micrcontroladores. Por el momento seencuentran disponibles:

LPC1114: ARM Cortex-M0, 32KB flash, 4/8KB SRAM

LPC1343: ARM Cortex-M3, 32KB flash, 8K SRAM, USB

LPC1768: ARM Cortex-M3, 512KB flash, 64KB SRAM, Ethernet,USB On the go.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 6 / 114

Page 10: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Introduccion LPCXpresso LPCXpresso Target board

LPCXpresso target board

En este tutorial vamos a utilizar el target que viene con el LPC1768.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 7 / 114

Page 11: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Introduccion LPCXpresso BaseBoard

LPCXpresso BaseBoard

El BeseBoard fue disenado por Embedded Artists Junto con NXP. Permiteconectarle un MBed o un LPCXpresso Target.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 8 / 114

Page 12: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Introduccion LPCXpresso BaseBoard

LPCXpresso BaseBoard

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 9 / 114

Page 13: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Introduccion LPCXpresso BaseBoard

LPCXpresso BaseBoard

La placa contiene perifericos para desarrollo y experimentacion:

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)

Analogicos:

Trimming potentiometer input (analog input)

PWM to analog LP-filtering (PWM output and analoginput)

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 RTOS4 - Marzo - 2011 10 / 114

Page 14: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Introduccion LPCXpresso BaseBoard

LPCXpresso BaseBoard

Continuacion:

Serial - SPI:

Shift register driving 7-segment LED

SD/MMC memory card interface

Dataflash SPI-NOR flash

Serial - I2C:

PCA9532 port expander connected to 16 LEDs

8kbit E2PROM

MMA7455L accelerometer with I2C interface

Light sensor

Serial - I2C/SPI

SC16IS752 - I2C/SPI to 2xUART bridge; connected toRS232 full-modem interface and one expansion UART

96x64 pixel white OLED (alternative I2C/SPI interface)

Extras

CAN bus interface (can be simulated with LPCXpressoLPC1114/LPC1343)

Ethernet RJ45 connector with integrated magnetic

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 11 / 114

Page 15: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Introduccion LPCXpresso BaseBoard

Informacion adicional

Se recomienda revisar los siguientes documentos:

LPC1768 User Manual (datasheet) Ver

LPCXpresso 1768 Target board: Esquematicos Ver

LPCXpresso BaseBoard: Guıa de usuario Ver

LPCXpresso BaseBoard: Esquematicos Ver

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 12 / 114

Page 16: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Introduccion LPCXpresso LPCXpresso IDE

LPCXpresso IDE (Eclipse)

El LPCXpresso IDE fue desarrollado por CodeRed junto a NXP. El mismoincluye un entorno de Eclipse especıficumente adaptado para interactuarcon el target board.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 13 / 114

Page 17: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Introduccion LPCXpresso LPCXpresso IDE

Eclipse - Conceptos basicos

Eclipse utiliza algunos conceptos que no siempre son comunes a otrosentornos de desarrollo por lo que vamos a ver algunos de ellos.

Workspace Es el contenedor de nuestros proyectos. Estos proyectos pueden ser aplicacionesy/o bibliotecas. Tambien almacena todas las configuraciones del entorno por loque se puede mover muy facilmente de computadora en computadora.

Proyecto Este puede ser de dos tipos. Biblioteca estatica o una aplicacion ejecutable.Contiene archivos de codigo fuente (.c), encabezados (.h) y cualquier otro archivoque se desee.

En general utilizaremos el workspace para intercambiar proyectos (en el sentido

convencional de la palabra) ya que el mismo incluıra todas las bibliotecas necesarias.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 14 / 114

Page 18: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Introduccion LPCXpresso LPCXpresso IDE

Tipos de proyectos

Los proyectos pueden ser de dos tipos:

Aplicaciones: Se compilan y se pueden descargar directamente al target.

Bibliotecas estaticas: Se pueden compilar, pero para usarlas, un proyectode tipo aplicacion debe hacer llamadas a las funciones que este contiene. Esdecir, no puede tener un main(). Este tipo de proyectos no se puededescargar por si solo al microcontrolador.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 15 / 114

Page 19: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Introduccion LPCXpresso LPCXpresso IDE

Tipos de proyectos - Ejemplo

Para ejemplificar pensemos en un ejemplo de un sistema embebido: unreproductor de MP3. Este podrıa estar compuesto por una memoria SD,una pantalla tactil y un decodificaro de MP3. Todos estos perifericos estancontrolados por un microcontrolador, por ejemplo un LPC1768.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 16 / 114

Page 20: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Introduccion LPCXpresso LPCXpresso IDE

Tipos de proyectos - Ejemplo

Las bibliotecas estaticas que podrıamos tener son:

Para el manejo de una memoria SD

Para el manejo del display

Para el manejo del touchscreen

Para el manejo del decodificador

Nuestra aplicacion en sı serıa la que tendra el programa principal ydesde donde se ejecutara nuestro programa. Pero las bibliotecas nosproveen funciones para el manejo de estos perifericos. Puede darse elcaso en el que el fabricante nos provea de estas bibliotecas yacompiladas. En ese caso solo debemos conocer los prototipos de lasfunciones.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 17 / 114

Page 21: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Introduccion LPCXpresso LPCXpresso IDE

Tipos de proyectos - Ejemplo

Las bibliotecas estaticas que podrıamos tener son:

Para el manejo de una memoria SD

Para el manejo del display

Para el manejo del touchscreen

Para el manejo del decodificador

Nuestra aplicacion en sı serıa la que tendra el programa principal ydesde donde se ejecutara nuestro programa. Pero las bibliotecas nosproveen funciones para el manejo de estos perifericos. Puede darse elcaso en el que el fabricante nos provea de estas bibliotecas yacompiladas. En ese caso solo debemos conocer los prototipos de lasfunciones.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 17 / 114

Page 22: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Introduccion LPCXpresso LPCXpresso IDE

Tipos de proyectos - Ejemplo

Las bibliotecas estaticas que podrıamos tener son:

Para el manejo de una memoria SD

Para el manejo del display

Para el manejo del touchscreen

Para el manejo del decodificador

Nuestra aplicacion en sı serıa la que tendra el programa principal ydesde donde se ejecutara nuestro programa. Pero las bibliotecas nosproveen funciones para el manejo de estos perifericos. Puede darse elcaso en el que el fabricante nos provea de estas bibliotecas yacompiladas. En ese caso solo debemos conocer los prototipos de lasfunciones.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 17 / 114

Page 23: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Introduccion LPCXpresso LPCXpresso IDE

Tipos de proyectos - Ejemplo

Las bibliotecas estaticas que podrıamos tener son:

Para el manejo de una memoria SD

Para el manejo del display

Para el manejo del touchscreen

Para el manejo del decodificador

Nuestra aplicacion en sı serıa la que tendra el programa principal ydesde donde se ejecutara nuestro programa. Pero las bibliotecas nosproveen funciones para el manejo de estos perifericos. Puede darse elcaso en el que el fabricante nos provea de estas bibliotecas yacompiladas. En ese caso solo debemos conocer los prototipos de lasfunciones.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 17 / 114

Page 24: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Introduccion LPCXpresso LPCXpresso IDE

Tipos de proyectos - Ejemplo

Las bibliotecas estaticas que podrıamos tener son:

Para el manejo de una memoria SD

Para el manejo del display

Para el manejo del touchscreen

Para el manejo del decodificador

Nuestra aplicacion en sı serıa la que tendra el programa principal ydesde donde se ejecutara nuestro programa. Pero las bibliotecas nosproveen funciones para el manejo de estos perifericos. Puede darse elcaso en el que el fabricante nos provea de estas bibliotecas yacompiladas. En ese caso solo debemos conocer los prototipos de lasfunciones.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 17 / 114

Page 25: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Introduccion LPCXpresso LPCXpresso IDE

Tipos de proyectos - Ejemplo

Las bibliotecas estaticas que podrıamos tener son:

Para el manejo de una memoria SD

Para el manejo del display

Para el manejo del touchscreen

Para el manejo del decodificador

Nuestra aplicacion en sı serıa la que tendra el programa principal ydesde donde se ejecutara nuestro programa. Pero las bibliotecas nosproveen funciones para el manejo de estos perifericos. Puede darse elcaso en el que el fabricante nos provea de estas bibliotecas yacompiladas. En ese caso solo debemos conocer los prototipos de lasfunciones.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 17 / 114

Page 26: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS

Section 2

Conceptos de RTOS

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 18 / 114

Page 27: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS ¿Que es?

RTOS - ¿Que es?

Un RTOS (Real Time Operating System) es un programa que se encargade:

Ordenar con precision el tiempo de ejecucion de las tareas

Administrar los recursos del sistema como tiempo de uso deprocesador, memoria, etc.

Proveer una base consistente para el desarrollo del codigo

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 19 / 114

Page 28: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS ¿Que es?

RTOS - ¿Que es?

Un RTOS (Real Time Operating System) es un programa que se encargade:

Ordenar con precision el tiempo de ejecucion de las tareas

Administrar los recursos del sistema como tiempo de uso deprocesador, memoria, etc.

Proveer una base consistente para el desarrollo del codigo

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 19 / 114

Page 29: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS ¿Que es?

RTOS - ¿Que es?

Un RTOS (Real Time Operating System) es un programa que se encargade:

Ordenar con precision el tiempo de ejecucion de las tareas

Administrar los recursos del sistema como tiempo de uso deprocesador, memoria, etc.

Proveer una base consistente para el desarrollo del codigo

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 19 / 114

Page 30: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS ¿Que es?

RTOS - ¿Que es?

Un RTOS (Real Time Operating System) es un programa que se encargade:

Ordenar con precision el tiempo de ejecucion de las tareas

Administrar los recursos del sistema como tiempo de uso deprocesador, memoria, etc.

Proveer una base consistente para el desarrollo del codigo

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 19 / 114

Page 31: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS ¿Que es?

RTOS - ¿Que es?

Las aplicaciones que utilizan un RTOS son diversas:

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 20 / 114

Page 32: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS ¿Que es?

RTOS - ¿Que es?

Las aplicaciones que utilizan un RTOS son diversas:

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 20 / 114

Page 33: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS ¿Que es?

RTOS - ¿Que es?

Las aplicaciones que utilizan un RTOS son diversas:

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 20 / 114

Page 34: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS ¿Que es?

RTOS - ¿Que es?

Las aplicaciones que utilizan un RTOS son diversas:

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 20 / 114

Page 35: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS ¿Que es?

RTOS - ¿Que es?

Las aplicaciones que utilizan un RTOS son diversas:

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 20 / 114

Page 36: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS ¿Que es?

RTOS - ¿Que es?

Todas tienen un denominador comun:

TAREAS CONCURRENTES

El RTOS crea la ilusion de multiples tareas ejecutandose en simultaneo.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 21 / 114

Page 37: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS ¿Que es?

RTOS - ¿Que es?

Todas tienen un denominador comun:

TAREAS CONCURRENTES

El RTOS crea la ilusion de multiples tareas ejecutandose en simultaneo.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 21 / 114

Page 38: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS ¿Que es?

RTOS - ¿Que es?

Todas tienen un denominador comun:

TAREAS CONCURRENTES

El RTOS crea la ilusion de multiples tareas ejecutandose en simultaneo.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 21 / 114

Page 39: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS ¿Que es?

RTOS - ¿Que es?

El RTOS se situa entre la capa BSP(Board Support Package, o ”port”) yla capa de aplicacion.

Puede incluir varios modulos(protocolos de red, sistema dearchivos, etc.)

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 22 / 114

Page 40: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS ¿Que es?

RTOS - ¿Que es?

El RTOS se situa entre la capa BSP(Board Support Package, o ”port”) yla capa de aplicacion.

Puede incluir varios modulos(protocolos de red, sistema dearchivos, etc.)

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 22 / 114

Page 41: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Componentes

Los componentes de un RTOSpueden clasificarse ampliamente en 3grupos:

Scheduler: maneja los hilos deejecucion de las tareas.

Objetos: tareas, colas,semaforos, etc.

Servicios: operaciones realizadassobre los objetos (manejo deinterrupciones, de memoria,etc.)

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 23 / 114

Page 42: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Componentes

Los componentes de un RTOSpueden clasificarse ampliamente en 3grupos:

Scheduler: maneja los hilos deejecucion de las tareas.

Objetos: tareas, colas,semaforos, etc.

Servicios: operaciones realizadassobre los objetos (manejo deinterrupciones, de memoria,etc.)

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 23 / 114

Page 43: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Componentes

Los componentes de un RTOSpueden clasificarse ampliamente en 3grupos:

Scheduler: maneja los hilos deejecucion de las tareas.

Objetos: tareas, colas,semaforos, etc.

Servicios: operaciones realizadassobre los objetos (manejo deinterrupciones, de memoria,etc.)

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 23 / 114

Page 44: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Componentes

Los componentes de un RTOSpueden clasificarse ampliamente en 3grupos:

Scheduler: maneja los hilos deejecucion de las tareas.

Objetos: tareas, colas,semaforos, etc.

Servicios: operaciones realizadassobre los objetos (manejo deinterrupciones, de memoria,etc.)

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 23 / 114

Page 45: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Scheduler

El Scheduler determina cuando se ejecutara cada tarea. Existen diferentesesquemas de scheduling:

Cooperativo: La tarea en ejecucion cede el uso de CPU a otravoluntariamente.

Preemptive: La tarea en ejecucion cede el uso de CPU a otra pororden del scheduler.

Priority-Based: Se asignan prioridades a las tareas para acceder al usode CPU.Round-Robin: Se asigna un tiempo fijo de uso de CPU a cada tareaen orden circular. Puede combinarse con el uso de prioridades.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 24 / 114

Page 46: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Scheduler

El Scheduler determina cuando se ejecutara cada tarea. Existen diferentesesquemas de scheduling:

Cooperativo: La tarea en ejecucion cede el uso de CPU a otravoluntariamente.

Preemptive: La tarea en ejecucion cede el uso de CPU a otra pororden del scheduler.

Priority-Based: Se asignan prioridades a las tareas para acceder al usode CPU.Round-Robin: Se asigna un tiempo fijo de uso de CPU a cada tareaen orden circular. Puede combinarse con el uso de prioridades.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 24 / 114

Page 47: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Scheduler

El Scheduler determina cuando se ejecutara cada tarea. Existen diferentesesquemas de scheduling:

Cooperativo: La tarea en ejecucion cede el uso de CPU a otravoluntariamente.

Preemptive: La tarea en ejecucion cede el uso de CPU a otra pororden del scheduler.

Priority-Based: Se asignan prioridades a las tareas para acceder al usode CPU.Round-Robin: Se asigna un tiempo fijo de uso de CPU a cada tareaen orden circular. Puede combinarse con el uso de prioridades.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 24 / 114

Page 48: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Scheduler

El Scheduler determina cuando se ejecutara cada tarea. Existen diferentesesquemas de scheduling:

Cooperativo: La tarea en ejecucion cede el uso de CPU a otravoluntariamente.

Preemptive: La tarea en ejecucion cede el uso de CPU a otra pororden del scheduler.

Priority-Based: Se asignan prioridades a las tareas para acceder al usode CPU.Round-Robin: Se asigna un tiempo fijo de uso de CPU a cada tareaen orden circular. Puede combinarse con el uso de prioridades.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 24 / 114

Page 49: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Scheduler

El Scheduler determina cuando se ejecutara cada tarea. Existen diferentesesquemas de scheduling:

Cooperativo: La tarea en ejecucion cede el uso de CPU a otravoluntariamente.

Preemptive: La tarea en ejecucion cede el uso de CPU a otra pororden del scheduler.

Priority-Based: Se asignan prioridades a las tareas para acceder al usode CPU.Round-Robin: Se asigna un tiempo fijo de uso de CPU a cada tareaen orden circular. Puede combinarse con el uso de prioridades.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 24 / 114

Page 50: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Scheduler

Ejemplo de esquema Priority-Based

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 25 / 114

Page 51: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Scheduler

Ejemplo de esquema Round-Robin con prioridades.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 26 / 114

Page 52: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Tareas

Una tarea es un hilo de ejecucion independiente que puede competircon otras tareas por tiempo de ejecucion.

Pueden ser creadas y eliminadas en tiempo de ejecucion.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 27 / 114

Page 53: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Tareas

Una tarea es un hilo de ejecucion independiente que puede competircon otras tareas por tiempo de ejecucion.

Pueden ser creadas y eliminadas en tiempo de ejecucion.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 27 / 114

Page 54: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Tareas

Se compone de:

Nombre/ID

Prioridad (esquema preemptive)

Stack

Rutina (codigo)

Bloque de control

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 28 / 114

Page 55: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Tareas

Se compone de:

Nombre/ID

Prioridad (esquema preemptive)

Stack

Rutina (codigo)

Bloque de control

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 28 / 114

Page 56: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Tareas

Se compone de:

Nombre/ID

Prioridad (esquema preemptive)

Stack

Rutina (codigo)

Bloque de control

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 28 / 114

Page 57: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Tareas

Se compone de:

Nombre/ID

Prioridad (esquema preemptive)

Stack

Rutina (codigo)

Bloque de control

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 28 / 114

Page 58: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Tareas

Se compone de:

Nombre/ID

Prioridad (esquema preemptive)

Stack

Rutina (codigo)

Bloque de control

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 28 / 114

Page 59: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Tareas

Se compone de:

Nombre/ID

Prioridad (esquema preemptive)

Stack

Rutina (codigo)

Bloque de control

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 28 / 114

Page 60: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Tareas

Algunos ejemplos de tareas:

Inicializacion del sistema (ejecuta solo una vez)

Filtrar una senal (posiblemente periodica)

Mostrar en pantalla (puede activarse ante un evento)

Tarea idle

Las tareas pueden tener diferentes requerimientos de temporizacion.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 29 / 114

Page 61: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Tareas

Algunos ejemplos de tareas:

Inicializacion del sistema (ejecuta solo una vez)

Filtrar una senal (posiblemente periodica)

Mostrar en pantalla (puede activarse ante un evento)

Tarea idle

Las tareas pueden tener diferentes requerimientos de temporizacion.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 29 / 114

Page 62: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Tareas

Algunos ejemplos de tareas:

Inicializacion del sistema (ejecuta solo una vez)

Filtrar una senal (posiblemente periodica)

Mostrar en pantalla (puede activarse ante un evento)

Tarea idle

Las tareas pueden tener diferentes requerimientos de temporizacion.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 29 / 114

Page 63: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Tareas

Algunos ejemplos de tareas:

Inicializacion del sistema (ejecuta solo una vez)

Filtrar una senal (posiblemente periodica)

Mostrar en pantalla (puede activarse ante un evento)

Tarea idle

Las tareas pueden tener diferentes requerimientos de temporizacion.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 29 / 114

Page 64: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Tareas

Algunos ejemplos de tareas:

Inicializacion del sistema (ejecuta solo una vez)

Filtrar una senal (posiblemente periodica)

Mostrar en pantalla (puede activarse ante un evento)

Tarea idle

Las tareas pueden tener diferentes requerimientos de temporizacion.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 29 / 114

Page 65: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Tareas

Algunos ejemplos de tareas:

Inicializacion del sistema (ejecuta solo una vez)

Filtrar una senal (posiblemente periodica)

Mostrar en pantalla (puede activarse ante un evento)

Tarea idle

Las tareas pueden tener diferentes requerimientos de temporizacion.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 29 / 114

Page 66: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Tareas

Los estados posibles de una tareason:

Ready: compite por tiempo deejecucion

Running: tarea activa

Blocked: esperando pasar aReady (podra activarse ante unevento o cuando pase ciertotiempo)

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 30 / 114

Page 67: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Tareas

Los estados posibles de una tareason:

Ready: compite por tiempo deejecucion

Running: tarea activa

Blocked: esperando pasar aReady (podra activarse ante unevento o cuando pase ciertotiempo)

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 30 / 114

Page 68: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Tareas

Los estados posibles de una tareason:

Ready: compite por tiempo deejecucion

Running: tarea activa

Blocked: esperando pasar aReady (podra activarse ante unevento o cuando pase ciertotiempo)

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 30 / 114

Page 69: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Tareas

Los estados posibles de una tareason:

Ready: compite por tiempo deejecucion

Running: tarea activa

Blocked: esperando pasar aReady (podra activarse ante unevento o cuando pase ciertotiempo)

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 30 / 114

Page 70: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Tareas

Estructura tıpica de una tarea:

v o i d t a r e a t i p i c a ( ){

/∗ Codigo de i n i c i a l i z a c i o n ∗/f o r ( ; ; ){

/∗ Cuerpo p r i n c i p a l ∗//∗ Llama a b l oquea r ∗/

}/∗ La t a r e a NUNCA debe l l e g a r aqu i ∗/

}

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 31 / 114

Page 71: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Colas

Su funcion principal es proveer un mecanismo de intercambio de datosentre tareas. Son FIFO.

Se compone de:

Nombre/ID

Tamano y tipo de datos aalmacenar

Bloque de control

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 32 / 114

Page 72: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Colas

Su funcion principal es proveer un mecanismo de intercambio de datosentre tareas. Son FIFO.

Se compone de:

Nombre/ID

Tamano y tipo de datos aalmacenar

Bloque de control

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 32 / 114

Page 73: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Colas

Su funcion principal es proveer un mecanismo de intercambio de datosentre tareas. Son FIFO.

Se compone de:

Nombre/ID

Tamano y tipo de datos aalmacenar

Bloque de control

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 32 / 114

Page 74: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Colas

Su funcion principal es proveer un mecanismo de intercambio de datosentre tareas. Son FIFO.

Se compone de:

Nombre/ID

Tamano y tipo de datos aalmacenar

Bloque de control

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 32 / 114

Page 75: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Colas

Varias tareas pueden acceder a una misma cola.

Una tarea puede elegir bloquearse si su cola esta vacıa. Al llegar unelemento, automaticamente pasa a Ready.

Cuidado! Cargar datos en una cola causa una copia de los datos enmemoria. Puede ser conveniente pasar un puntero.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 33 / 114

Page 76: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Colas

Varias tareas pueden acceder a una misma cola.

Una tarea puede elegir bloquearse si su cola esta vacıa. Al llegar unelemento, automaticamente pasa a Ready.

Cuidado! Cargar datos en una cola causa una copia de los datos enmemoria. Puede ser conveniente pasar un puntero.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 33 / 114

Page 77: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Colas

Varias tareas pueden acceder a una misma cola.

Una tarea puede elegir bloquearse si su cola esta vacıa. Al llegar unelemento, automaticamente pasa a Ready.

Cuidado! Cargar datos en una cola causa una copia de los datos enmemoria. Puede ser conveniente pasar un puntero.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 33 / 114

Page 78: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Semaforos

Son objetos como las colas. Pueden ser creados y destruidos. Su funcionprincipal es proveer un mecanismo de sincronizacion entre tareas.

Ejemplo: acceder a un recurso (como escribir en una pantalla):

Para acceder al recurso la tarea pide el semaforo

Si esta disponible, toma el semaforo y realiza la operacion.

Al terminar, lo libera para que otros puedan acceder.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 34 / 114

Page 79: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Semaforos

Son objetos como las colas. Pueden ser creados y destruidos. Su funcionprincipal es proveer un mecanismo de sincronizacion entre tareas.

Ejemplo: acceder a un recurso (como escribir en una pantalla):

Para acceder al recurso la tarea pide el semaforo

Si esta disponible, toma el semaforo y realiza la operacion.

Al terminar, lo libera para que otros puedan acceder.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 34 / 114

Page 80: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Semaforos

Tambien pueden utilizarse para disparar un handler ante una interrupcion

La Tarea 1 esta activa hasta queen t2 ocurre una interrupcion.

El ISR se ejecuta y cede unsemaforo asociado al Handler ent3.

El Handler se desbloquea ytoma el semaforo, de la mismamanera que si le llegara un datopor una cola.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 35 / 114

Page 81: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Semaforos

El Handler ejecuta su rutinadentro de un for( ;;) y cuandotermina quiere volver a tomar elsemaforo.

Como no hubo otra interrupcionque cediera un semaforo, elHandler se bloquea y vuelve elcontrol a la Tarea 1 en t4.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 36 / 114

Page 82: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Semaforos

Los recien descriptos se conocen como semaforos binarios (tienen 2estados). Existen otros metodos de sincronizacion:

Semaforos de conteo: pueden tomarse o liberarse mas de una vez.

Mutex: similares a los semaforos binarios pero con funcionesadicionales (como herencia de prioridades).

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 37 / 114

Page 83: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Semaforos

Los recien descriptos se conocen como semaforos binarios (tienen 2estados). Existen otros metodos de sincronizacion:

Semaforos de conteo: pueden tomarse o liberarse mas de una vez.

Mutex: similares a los semaforos binarios pero con funcionesadicionales (como herencia de prioridades).

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 37 / 114

Page 84: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Componentes

RTOS - Semaforos

Los recien descriptos se conocen como semaforos binarios (tienen 2estados). Existen otros metodos de sincronizacion:

Semaforos de conteo: pueden tomarse o liberarse mas de una vez.

Mutex: similares a los semaforos binarios pero con funcionesadicionales (como herencia de prioridades).

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 37 / 114

Page 85: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Utilidad

RTOS - ¿Por que usarlo?

Existen varias razones por las cuales usar un RTOS:

Abstraccion de la implementacion del scheduling

Mayor modularidad

Facilita el desarrollo en grupos

Mayor facilidad al debuggear

Mayor reusabilidad del codigo

Posibilidad de realizar profiling (tarea idle)

Reducen el tiempo de desarrollo

y la lista sigue ...

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 38 / 114

Page 86: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Utilidad

RTOS - ¿Por que usarlo?

Existen varias razones por las cuales usar un RTOS:

Abstraccion de la implementacion del scheduling

Mayor modularidad

Facilita el desarrollo en grupos

Mayor facilidad al debuggear

Mayor reusabilidad del codigo

Posibilidad de realizar profiling (tarea idle)

Reducen el tiempo de desarrollo

y la lista sigue ...

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 38 / 114

Page 87: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Utilidad

RTOS - ¿Por que usarlo?

Existen varias razones por las cuales usar un RTOS:

Abstraccion de la implementacion del scheduling

Mayor modularidad

Facilita el desarrollo en grupos

Mayor facilidad al debuggear

Mayor reusabilidad del codigo

Posibilidad de realizar profiling (tarea idle)

Reducen el tiempo de desarrollo

y la lista sigue ...

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 38 / 114

Page 88: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Utilidad

RTOS - ¿Por que usarlo?

Existen varias razones por las cuales usar un RTOS:

Abstraccion de la implementacion del scheduling

Mayor modularidad

Facilita el desarrollo en grupos

Mayor facilidad al debuggear

Mayor reusabilidad del codigo

Posibilidad de realizar profiling (tarea idle)

Reducen el tiempo de desarrollo

y la lista sigue ...

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 38 / 114

Page 89: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Utilidad

RTOS - ¿Por que usarlo?

Existen varias razones por las cuales usar un RTOS:

Abstraccion de la implementacion del scheduling

Mayor modularidad

Facilita el desarrollo en grupos

Mayor facilidad al debuggear

Mayor reusabilidad del codigo

Posibilidad de realizar profiling (tarea idle)

Reducen el tiempo de desarrollo

y la lista sigue ...

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 38 / 114

Page 90: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Utilidad

RTOS - ¿Por que usarlo?

Existen varias razones por las cuales usar un RTOS:

Abstraccion de la implementacion del scheduling

Mayor modularidad

Facilita el desarrollo en grupos

Mayor facilidad al debuggear

Mayor reusabilidad del codigo

Posibilidad de realizar profiling (tarea idle)

Reducen el tiempo de desarrollo

y la lista sigue ...

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 38 / 114

Page 91: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Utilidad

RTOS - ¿Por que usarlo?

Existen varias razones por las cuales usar un RTOS:

Abstraccion de la implementacion del scheduling

Mayor modularidad

Facilita el desarrollo en grupos

Mayor facilidad al debuggear

Mayor reusabilidad del codigo

Posibilidad de realizar profiling (tarea idle)

Reducen el tiempo de desarrollo

y la lista sigue ...

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 38 / 114

Page 92: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Utilidad

RTOS - ¿Por que usarlo?

Existen varias razones por las cuales usar un RTOS:

Abstraccion de la implementacion del scheduling

Mayor modularidad

Facilita el desarrollo en grupos

Mayor facilidad al debuggear

Mayor reusabilidad del codigo

Posibilidad de realizar profiling (tarea idle)

Reducen el tiempo de desarrollo

y la lista sigue ...

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 38 / 114

Page 93: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Utilidad

RTOS - ¿Por que usarlo?

Existen varias razones por las cuales usar un RTOS:

Abstraccion de la implementacion del scheduling

Mayor modularidad

Facilita el desarrollo en grupos

Mayor facilidad al debuggear

Mayor reusabilidad del codigo

Posibilidad de realizar profiling (tarea idle)

Reducen el tiempo de desarrollo

y la lista sigue ...

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 38 / 114

Page 94: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Utilidad

RTOS - ¿Por que usarlo?

Existen varias razones por las cuales usar un RTOS:

Mejoran la escalabilidad

Facilitan la portabilidad

Mejoran la mantenibilidad

Reducen la incertidumbre

etc...

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 39 / 114

Page 95: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Utilidad

RTOS - ¿Por que usarlo?

Existen varias razones por las cuales usar un RTOS:

Mejoran la escalabilidad

Facilitan la portabilidad

Mejoran la mantenibilidad

Reducen la incertidumbre

etc...

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 39 / 114

Page 96: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Utilidad

RTOS - ¿Por que usarlo?

Existen varias razones por las cuales usar un RTOS:

Mejoran la escalabilidad

Facilitan la portabilidad

Mejoran la mantenibilidad

Reducen la incertidumbre

etc...

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 39 / 114

Page 97: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Utilidad

RTOS - ¿Por que usarlo?

Existen varias razones por las cuales usar un RTOS:

Mejoran la escalabilidad

Facilitan la portabilidad

Mejoran la mantenibilidad

Reducen la incertidumbre

etc...

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 39 / 114

Page 98: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Utilidad

FreeRTOS

Por que decidimos usar FreeRTOS:

Es de codigo abierto

Codigo ampliamente comentadoSencillo de portar (existen mas de 23 ports)

Ocupa poco espacio en flash (∼5KB) necesita poca RAM (∼5KB +Heap) y el overhead que introduce es mınimo (entre 1% y 4% deltiempo de CPU) a cambio de una gran utilidad.

Ampliamente documentado

Existe una comunidad de usuarios importante

Libre de regalıas. Puede ser usado en aplicaciones comerciales bajolicencia GNU version 2.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 40 / 114

Page 99: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Utilidad

FreeRTOS

Por que decidimos usar FreeRTOS:

Es de codigo abierto

Codigo ampliamente comentadoSencillo de portar (existen mas de 23 ports)

Ocupa poco espacio en flash (∼5KB) necesita poca RAM (∼5KB +Heap) y el overhead que introduce es mınimo (entre 1% y 4% deltiempo de CPU) a cambio de una gran utilidad.

Ampliamente documentado

Existe una comunidad de usuarios importante

Libre de regalıas. Puede ser usado en aplicaciones comerciales bajolicencia GNU version 2.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 40 / 114

Page 100: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Utilidad

FreeRTOS

Por que decidimos usar FreeRTOS:

Es de codigo abierto

Codigo ampliamente comentadoSencillo de portar (existen mas de 23 ports)

Ocupa poco espacio en flash (∼5KB) necesita poca RAM (∼5KB +Heap) y el overhead que introduce es mınimo (entre 1% y 4% deltiempo de CPU) a cambio de una gran utilidad.

Ampliamente documentado

Existe una comunidad de usuarios importante

Libre de regalıas. Puede ser usado en aplicaciones comerciales bajolicencia GNU version 2.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 40 / 114

Page 101: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Utilidad

FreeRTOS

Por que decidimos usar FreeRTOS:

Es de codigo abierto

Codigo ampliamente comentadoSencillo de portar (existen mas de 23 ports)

Ocupa poco espacio en flash (∼5KB) necesita poca RAM (∼5KB +Heap) y el overhead que introduce es mınimo (entre 1% y 4% deltiempo de CPU) a cambio de una gran utilidad.

Ampliamente documentado

Existe una comunidad de usuarios importante

Libre de regalıas. Puede ser usado en aplicaciones comerciales bajolicencia GNU version 2.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 40 / 114

Page 102: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Utilidad

FreeRTOS

Por que decidimos usar FreeRTOS:

Es de codigo abierto

Codigo ampliamente comentadoSencillo de portar (existen mas de 23 ports)

Ocupa poco espacio en flash (∼5KB) necesita poca RAM (∼5KB +Heap) y el overhead que introduce es mınimo (entre 1% y 4% deltiempo de CPU) a cambio de una gran utilidad.

Ampliamente documentado

Existe una comunidad de usuarios importante

Libre de regalıas. Puede ser usado en aplicaciones comerciales bajolicencia GNU version 2.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 40 / 114

Page 103: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Utilidad

FreeRTOS

Por que decidimos usar FreeRTOS:

Es de codigo abierto

Codigo ampliamente comentadoSencillo de portar (existen mas de 23 ports)

Ocupa poco espacio en flash (∼5KB) necesita poca RAM (∼5KB +Heap) y el overhead que introduce es mınimo (entre 1% y 4% deltiempo de CPU) a cambio de una gran utilidad.

Ampliamente documentado

Existe una comunidad de usuarios importante

Libre de regalıas. Puede ser usado en aplicaciones comerciales bajolicencia GNU version 2.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 40 / 114

Page 104: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Utilidad

FreeRTOS

Por que decidimos usar FreeRTOS:

Es de codigo abierto

Codigo ampliamente comentadoSencillo de portar (existen mas de 23 ports)

Ocupa poco espacio en flash (∼5KB) necesita poca RAM (∼5KB +Heap) y el overhead que introduce es mınimo (entre 1% y 4% deltiempo de CPU) a cambio de una gran utilidad.

Ampliamente documentado

Existe una comunidad de usuarios importante

Libre de regalıas. Puede ser usado en aplicaciones comerciales bajolicencia GNU version 2.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 40 / 114

Page 105: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Utilidad

FreeRTOS

Por que decidimos usar FreeRTOS:

Es de codigo abierto

Codigo ampliamente comentadoSencillo de portar (existen mas de 23 ports)

Ocupa poco espacio en flash (∼5KB) necesita poca RAM (∼5KB +Heap) y el overhead que introduce es mınimo (entre 1% y 4% deltiempo de CPU) a cambio de una gran utilidad.

Ampliamente documentado

Existe una comunidad de usuarios importante

Libre de regalıas. Puede ser usado en aplicaciones comerciales bajolicencia GNU version 2.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 40 / 114

Page 106: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Utilidad

FreeRTOS

Existen tambien otras licencias para este RTOS:

Existe una licencia comercial con soporte oficial y garantıas legales(OpenRTOS).

Existe una licencia certificada SIL3 para aplicaciones crıticas(SafeRTOS).

La version FreeRTOS 6.0.0 portada a Cortex-M3 soporta MPU(Memory Protection Unit).

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 41 / 114

Page 107: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Utilidad

FreeRTOS

Existen tambien otras licencias para este RTOS:

Existe una licencia comercial con soporte oficial y garantıas legales(OpenRTOS).

Existe una licencia certificada SIL3 para aplicaciones crıticas(SafeRTOS).

La version FreeRTOS 6.0.0 portada a Cortex-M3 soporta MPU(Memory Protection Unit).

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 41 / 114

Page 108: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Utilidad

FreeRTOS

Existen tambien otras licencias para este RTOS:

Existe una licencia comercial con soporte oficial y garantıas legales(OpenRTOS).

Existe una licencia certificada SIL3 para aplicaciones crıticas(SafeRTOS).

La version FreeRTOS 6.0.0 portada a Cortex-M3 soporta MPU(Memory Protection Unit).

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 41 / 114

Page 109: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Conceptos de RTOS Utilidad

FreeRTOS

Existen tambien otras licencias para este RTOS:

Existe una licencia comercial con soporte oficial y garantıas legales(OpenRTOS).

Existe una licencia certificada SIL3 para aplicaciones crıticas(SafeRTOS).

La version FreeRTOS 6.0.0 portada a Cortex-M3 soporta MPU(Memory Protection Unit).

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 41 / 114

Page 110: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

LPCXpresso + FreeRTOS Distribucion

Section 3

LPCXpresso + FreeRTOS

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 42 / 114

Page 111: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

LPCXpresso + FreeRTOS Distribucion

Es recomendable tener un workspace para cada proyecto que realicemos.En el configuraremos el RTOS. La estructura del workspace podra ser:

FreeRTOS Library

Biblioteca de funciones 1

Biblioteca de funciones 2

Driver DAC ADC

MP3 Player

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 43 / 114

Page 112: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

LPCXpresso + FreeRTOS Distribucion

Es recomendable tener un workspace para cada proyecto que realicemos.En el configuraremos el RTOS. La estructura del workspace podra ser:

FreeRTOS Library

Biblioteca de funciones 1

Biblioteca de funciones 2

Driver DAC ADC

MP3 Player

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 43 / 114

Page 113: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

LPCXpresso + FreeRTOS Distribucion

Es recomendable tener un workspace para cada proyecto que realicemos.En el configuraremos el RTOS. La estructura del workspace podra ser:

FreeRTOS Library

Biblioteca de funciones 1

Biblioteca de funciones 2

Driver DAC ADC

MP3 Player

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 43 / 114

Page 114: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

LPCXpresso + FreeRTOS Distribucion

Es recomendable tener un workspace para cada proyecto que realicemos.En el configuraremos el RTOS. La estructura del workspace podra ser:

FreeRTOS Library

Biblioteca de funciones 1

Biblioteca de funciones 2

Driver DAC ADC

MP3 Player

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 43 / 114

Page 115: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

LPCXpresso + FreeRTOS Distribucion

Es recomendable tener un workspace para cada proyecto que realicemos.En el configuraremos el RTOS. La estructura del workspace podra ser:

FreeRTOS Library

Biblioteca de funciones 1

Biblioteca de funciones 2

Driver DAC ADC

MP3 Player

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 43 / 114

Page 116: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

LPCXpresso + FreeRTOS Distribucion

El FreeRTOS esta compuesto por:

list.c

queue.c

tasks.c

Portableheap X.cport.cportmacro.h

IncludeFreeRTOSConfig.h. . .

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 44 / 114

Page 117: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

LPCXpresso + FreeRTOS Distribucion

El FreeRTOS esta compuesto por:

list.c

queue.c

tasks.c

Portableheap X.cport.cportmacro.h

IncludeFreeRTOSConfig.h. . .

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 44 / 114

Page 118: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

LPCXpresso + FreeRTOS Distribucion

El FreeRTOS esta compuesto por:

list.c

queue.c

tasks.c

Portableheap X.cport.cportmacro.h

IncludeFreeRTOSConfig.h. . .

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 44 / 114

Page 119: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

LPCXpresso + FreeRTOS Configuracion

Antes de ”instalarlo” en nuestro proyecto, debemos configurar elcomportamiento del RTOS. Para ello freeRTOS provee un archivoFreeRTOSconfig.h en el que mediante macros podremos confiurarlo.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 45 / 114

Page 120: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

LPCXpresso + FreeRTOS Configuracion

Este archivo tiene la siguiente forma:

#d e f i n e configUSE TICK HOOK 1#d e f i n e configCPU CLOCK HZ ( 100000000UL )#d e f i n e configTICK RATE HZ ( ( por tT ickType ) 1000 )#d e f i n e configMINIMAL STACK SIZE ( ( uns igned s h o r t ) 100 )#d e f i n e configTOTAL HEAP SIZE ( ( s i z e t ) ( 24 ∗ 1024 ) )#d e f i n e configMAX TASK NAME LEN ( 12 )#d e f i n e configUSE TRACE FACILITY 0

#d e f i n e INCLUDE vTaskPr io r i tySet 1#d e f i n e INCLUDE uxTaskPr ior i tyGet 1#d e f i n e INCLUDE vTaskDelete 1#d e f i n e INCLUDE vTaskCleanUpResources 0

FreeRTOSconfig.h

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 46 / 114

Page 121: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

LPCXpresso + FreeRTOS Configuracion

Los aspectos ms importantes que debemos configurar son:

configUSE PREEMPTION

configUSE XXXX HOOK (diferentes hooks)

configMAX PRIORITIES

configCPU CLOCK HZ

configTICK RATE HZ

configMINIMAL STACK SIZE

configTOTAL HEAP SIZE

configUSE XXXX (recursos: mutex, semaphoros)

INCLUDE XXXXX (funciones especiales)

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 47 / 114

Page 122: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

LPCXpresso + FreeRTOS Configuracion

Los aspectos ms importantes que debemos configurar son:

configUSE PREEMPTION

configUSE XXXX HOOK (diferentes hooks)

configMAX PRIORITIES

configCPU CLOCK HZ

configTICK RATE HZ

configMINIMAL STACK SIZE

configTOTAL HEAP SIZE

configUSE XXXX (recursos: mutex, semaphoros)

INCLUDE XXXXX (funciones especiales)

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 47 / 114

Page 123: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

LPCXpresso + FreeRTOS Configuracion

Los aspectos ms importantes que debemos configurar son:

configUSE PREEMPTION

configUSE XXXX HOOK (diferentes hooks)

configMAX PRIORITIES

configCPU CLOCK HZ

configTICK RATE HZ

configMINIMAL STACK SIZE

configTOTAL HEAP SIZE

configUSE XXXX (recursos: mutex, semaphoros)

INCLUDE XXXXX (funciones especiales)

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 47 / 114

Page 124: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

LPCXpresso + FreeRTOS Configuracion

Los aspectos ms importantes que debemos configurar son:

configUSE PREEMPTION

configUSE XXXX HOOK (diferentes hooks)

configMAX PRIORITIES

configCPU CLOCK HZ

configTICK RATE HZ

configMINIMAL STACK SIZE

configTOTAL HEAP SIZE

configUSE XXXX (recursos: mutex, semaphoros)

INCLUDE XXXXX (funciones especiales)

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 47 / 114

Page 125: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

LPCXpresso + FreeRTOS Configuracion

Los aspectos ms importantes que debemos configurar son:

configUSE PREEMPTION

configUSE XXXX HOOK (diferentes hooks)

configMAX PRIORITIES

configCPU CLOCK HZ

configTICK RATE HZ

configMINIMAL STACK SIZE

configTOTAL HEAP SIZE

configUSE XXXX (recursos: mutex, semaphoros)

INCLUDE XXXXX (funciones especiales)

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 47 / 114

Page 126: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

LPCXpresso + FreeRTOS Configuracion

Los aspectos ms importantes que debemos configurar son:

configUSE PREEMPTION

configUSE XXXX HOOK (diferentes hooks)

configMAX PRIORITIES

configCPU CLOCK HZ

configTICK RATE HZ

configMINIMAL STACK SIZE

configTOTAL HEAP SIZE

configUSE XXXX (recursos: mutex, semaphoros)

INCLUDE XXXXX (funciones especiales)

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 47 / 114

Page 127: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

LPCXpresso + FreeRTOS Configuracion

Los aspectos ms importantes que debemos configurar son:

configUSE PREEMPTION

configUSE XXXX HOOK (diferentes hooks)

configMAX PRIORITIES

configCPU CLOCK HZ

configTICK RATE HZ

configMINIMAL STACK SIZE

configTOTAL HEAP SIZE

configUSE XXXX (recursos: mutex, semaphoros)

INCLUDE XXXXX (funciones especiales)

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 47 / 114

Page 128: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

LPCXpresso + FreeRTOS Configuracion

Los aspectos ms importantes que debemos configurar son:

configUSE PREEMPTION

configUSE XXXX HOOK (diferentes hooks)

configMAX PRIORITIES

configCPU CLOCK HZ

configTICK RATE HZ

configMINIMAL STACK SIZE

configTOTAL HEAP SIZE

configUSE XXXX (recursos: mutex, semaphoros)

INCLUDE XXXXX (funciones especiales)

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 47 / 114

Page 129: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

LPCXpresso + FreeRTOS Configuracion

Los aspectos ms importantes que debemos configurar son:

configUSE PREEMPTION

configUSE XXXX HOOK (diferentes hooks)

configMAX PRIORITIES

configCPU CLOCK HZ

configTICK RATE HZ

configMINIMAL STACK SIZE

configTOTAL HEAP SIZE

configUSE XXXX (recursos: mutex, semaphoros)

INCLUDE XXXXX (funciones especiales)

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 47 / 114

Page 130: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

LPCXpresso + FreeRTOS Configuracion

Total Heap Size

El freeRTOS utiliza este HEAP paraalmacenar el TCB y los diferentesSTACKs de las tareas. Tambien lo usarapara guardar en memoria semaforos,mutex, etc.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 48 / 114

Page 131: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

LPCXpresso + FreeRTOS Instalacion

Subsection 3

Instalacion

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 49 / 114

Page 132: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

LPCXpresso + FreeRTOS Instalacion

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 50 / 114

Page 133: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

LPCXpresso + FreeRTOS Instalacion

No! es mas facil. Simplemente tenemos que compilar la biblioteca(CONFIGURADA) de FreeRTOS y linkearla con nuestro proyecto. Luegohay que hacer algunas modificaciones al codigo generado por LPCXpresso.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 51 / 114

Page 134: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

LPCXpresso + FreeRTOS Instalacion

Tabla de Handlers (IRQ)

a t t r i b u t e ( ( s e c t i o n ( ” . i s r v e c t o r ” ) ) )v o i d (∗ const g p f n V e c t o r s [ ] ) ( v o i d ) ={// Core L e v e l − CM3( v o i d ∗)& vStackTop ,R e s e t H a n d l e r ,NMI Handler ,H a r d F a u l t H a n d l e r ,MemManage Handler ,B u s F a u l t H a n d l e r ,U s a g e F a u l t H a n d l e r ,0 ,0 ,0 ,0 ,S V C a l l H a n d l e r ,DebugMon Handler ,0PendSV Handler ,S y s T i c k H a n d l e r ,

// Chip L e v e l − LPC17WDT IRQHandler ,TIMER0 IRQHandler ,TIMER1 IRQHandler ,. . . . . .

a t t r i b u t e ( ( s e c t i o n ( ” . i s r v e c t o r ” ) ) )v o i d (∗ const g p f n V e c t o r s [ ] ) ( v o i d ) ={// Core L e v e l − CM3( v o i d ∗)& vStackTop ,R e s e t H a n d l e r ,NMI Handler ,H a r d F a u l t H a n d l e r ,MemManage Handler ,B u s F a u l t H a n d l e r ,U s a g e F a u l t H a n d l e r ,0 ,0 ,0 ,0 ,vPortSVCHandler ,DebugMon Handler ,0xPortPendSVHandler ,xPortSysTickHandler ,

// Chip L e v e l − LPC17WDT IRQHandler ,TIMER0 IRQHandler ,TIMER1 IRQHandler ,. . . . . .

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 52 / 114

Page 135: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Estructura de una aplicacion Esquema

Section 4

Estructura de una aplicacion

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 53 / 114

Page 136: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Estructura de una aplicacion Esquema

Luego que ya tenemos instalado el freeRTOS, tenemos que crear tareas einicializar el Scheduler. Entonces una aplicacion que utilice este RTOSpodrıa ser de la siguiente manera:

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 54 / 114

Page 137: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Estructura de una aplicacion 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 ){

// Creo l a s t a r e a sxTaskCreate ( UART Driver , ”UART” ,200 , NULL , 3 , NULL ) ;xTaskCreate ( t e s t 1 , ”TEST” ,200 ,NULL , 1 , NULL ) ;xTaskCreate (LCD , ”LCD” ,200 ,NULL , 2 , NULL ) ;

// I n i c i o e l s c h e d u l e rv T a s k S t a r t S c h e d u l e r ( ) ;

// Nunca l l e g o acaf o r ( ; ; ) ;

r e t u r n 0 ;}

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 55 / 114

Page 138: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Estructura de una aplicacion Esquema

¿Como es una tarea?

v o i d miTarea ( v o i d ∗ pvParameter s ){

i n t i ;// Cosas que se tengan que hace r s o l o una vez

// Loop p r i n c i p a lf o r ( ; ; ) {

f o r ( i =0; i <1000000; i ++);vTaskDelay (500/ portTICK RATE MS ) ;

}

}

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 56 / 114

Page 139: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Estructura de una aplicacion Esquema

Nuestra tarea como disenadores ahora es determinar que cosas de nuestrasaplicaciones seran tareas del sistema, que recursos de comunicacion ysincronizacion entre tareas tendremos que crear y cuales seran lasprioridades de las mismas.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 57 / 114

Page 140: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Estructura de una aplicacion 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 RTOS4 - Marzo - 2011 58 / 114

Page 141: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Estructura de una aplicacion 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 RTOS4 - Marzo - 2011 58 / 114

Page 142: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Estructura de una aplicacion 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 RTOS4 - Marzo - 2011 58 / 114

Page 143: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Estructura de una aplicacion 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 RTOS4 - Marzo - 2011 58 / 114

Page 144: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Drivers Generalidades

Section 5

Drivers

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 59 / 114

Page 145: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Drivers Generalidades

¿Que es un driver?Segun Wikipedia: es un programa informatico que permite alsistema operativo interactuar con un periferico, haciendo unaabstraccion del hardware y proporcionando una interfaz -posiblementeestandarizada- para usarlo.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 60 / 114

Page 146: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Drivers Generalidades

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

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 61 / 114

Page 147: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Drivers Generalidades

¿Que es un driver?

Segun Windows: KARMA

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 62 / 114

Page 148: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Drivers Generalidades

¿Que es un driver?Segun freeRTOS: una tarea como cualquier otra pero con unproposito especıfico. (El de wikipedia)

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 63 / 114

Page 149: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Drivers Justificacion

¿ Por que deberıamos usar un driver?Provee abstraccion

Brinda control de acceso al hardware (MUTEX?)

Esta optimizado para ocupar poco tiempo de CPU

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 64 / 114

Page 150: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Drivers Ejemplo - UART

Si queremos utilizar la UART para mandar informacion desde nuestrastareas podemos hacerlo de dos maneras:

Sin drivers

Con drivers

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 65 / 114

Page 151: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Drivers Ejemplo - UART

Una implementacion SIN drivers podrıa ser la siguiente:

// 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 ){

//—————————————//Configuro los pines y la UARTUARTConfigStruct.Baud rate = 115200UARTConfigStruct.Databits = UART DATABIT 8;UART Init(LPC UART3, &UARTConfigStruct);UART TxCmd(LPC UART3, ENABLE);//—————————————// Creo l a s t a r e a s

xTaskCreate ( p r i n t e r T a s k 1 , ” Task 1” ,200 , NULL , 1 , NULL ) ;xTaskCreate ( p r i n t e r T a s k 2 , ” Task 2” ,200 ,NULL , 1 , NULL ) ;

// I n i c i o e l s c h e d u l e rv T a s k S t a r t S c h e d u l e r ( ) ;

// Nunca l l e g o acaf o r ( ; ; ) ;

r e t u r n 0 ;}

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 66 / 114

Page 152: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Drivers Ejemplo - UART

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

// 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”

v o i d p r i n t e r T a s k 1 ( v o i d ∗ pvParameters )

char myMsg[ ]= ” Hola e s t o e s una prueba ” ;

f o r ( ; ; ){UART Send (LPC UART3 , myMsg , s t r l e n (myMsg ) ,BLOCKING ) ;vTaskDelay (500/ portTICK RATE MS ) ;

}}

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

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 67 / 114

Page 153: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Drivers Ejemplo - UART

¿Cual serıa el resultado?

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 68 / 114

Page 154: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Drivers Ejemplo - UART

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

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 69 / 114

Page 155: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Drivers Ejemplo - UART

Una impementacion CON drivers podrıa ser la siguiente:

// 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 ){

// Creo l a s t a r e a sxTaskCreate ( UART Driver , ”UART” ,200 , NULL , 3 , NULL ) ;xTaskCreate ( p r i n t e r T a s k 1 , ” Task 1” ,200 , NULL , 1 , NULL ) ;xTaskCreate ( p r i n t e r T a s k 2 , ” Task 2” ,200 ,NULL , 1 , NULL ) ;

// I n i c i o e l s c h e d u l e rv T a s k S t a r t S c h e d u l e r ( ) ;

// Nunca l l e g o acaf o r ( ; ; ) ;

r e t u r n 0 ;}

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 70 / 114

Page 156: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Drivers Ejemplo - UART

En donde el driver podrıa tener una implementacion de la siguiente forma:

xQueueHandle stdoutQueue ;

v o i d UART Driver ( v o i d ∗pvParameters ){// Conf iguramos l a UARTUARTConfigStruct . B a u d r a t e = 115200;UARTConfigStruct . D a t a b i t s = UART DATABIT 8 ;UARTConfigStruct . P a r i t y = UART PARITY NONE ;UARTConfigStruct . S t o p b i t s = UART STOPBIT 1 ;

// I n i c i a l i z am o s l a UARTUART Init (LPC UART3 , &UARTConfigStruct ) ;UART TxCmd(LPC UART3 , ENABLE ) ;

stdoutQueue = xQueueCreate ( 1 0 , s i z e o f ( char ∗ ) ) ;

f o r ( ; ; ){char ∗ p t r ;xQueueRece ive ( stdoutQueue ,& ptr , portMAX DELAY ) ;UART Send (LPC UART3 , pt r , s t r l e n ( p t r ) ,BLOCKING ) ;

}}

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 71 / 114

Page 157: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Drivers Ejemplo - UART

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

v o i d p r i n t e r T a s k 1 ( v o i d ∗ pvParameters )

char myMsg[ ]= ” Hola e s t o e s una prueba ” ;

f o r ( ; ; ){char ∗ p t r = &myMsg ;xQueueSendToBack ( stdoutQueue ,& ptr , 0 ) ;vTaskDelay (500/ portTICK RATE MS ) ;

}}

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 72 / 114

Page 158: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

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 essecuencial, y hasta no terminar un mensaje, el driver no vuelve a pedir otroelemento.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 73 / 114

Page 159: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Profiling

Section 6

Profiling

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 74 / 114

Page 160: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Profiling

El freeRTOS provee algunas herramientas que permiten realizarmediciones del desempeo del sistema en tiempo real. Esto generalmente esllamado Profiling y las herramientas son:

Tracing

RuntimeStats

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 75 / 114

Page 161: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Profiling 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 RTOS4 - Marzo - 2011 76 / 114

Page 162: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Profiling Tracing

Para utilizar las funciones de tracing, simplemente hay que habilitar elmacro el el archivo FreeRTOSConfig.h y luego definir las macros comopor 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 unanalizador logico por ejemplo.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 77 / 114

Page 163: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Profiling Run Time Stats

La herramienta de Run Time stats nos permite ver cuanto tiempo de CPUesta utilizando cada tarea. Se la configura en el archivoFreeRTOSConfig.h y al llamarla devuelve en un buffer un reporte tipotexto.Notar que es necesario proveer al RTOS de un timer para llevar el paso deltiempo con mayor resolucion que el System Tick.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 78 / 114

Page 164: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Profiling Run Time Stats

La salida generada es:

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

Donde los numeros representan la cantidad de tiempo utilizado en laresolucion del timer que se le haya configurado. Por ejemplo si se produceun incremento cada 1uS entonces la salida es en microsegundos.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 79 / 114

Page 165: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Section 7

Ejemplo de aplicacion

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 80 / 114

Page 166: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Ejemplo de aplicacion - Holter cardıaco

Un Holter cardıaco es un dispositivo medico para grabar la senal deECG durante 24 o 48 horas.

Debe portarlo un paciente sin que afecte su vida diaria

Dimensiones reducidasLivianoBajo consumo

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 81 / 114

Page 167: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Ejemplo de aplicacion - Holter cardıaco

Un Holter cardıaco es un dispositivo medico para grabar la senal deECG durante 24 o 48 horas.

Debe portarlo un paciente sin que afecte su vida diaria

Dimensiones reducidasLivianoBajo consumo

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 81 / 114

Page 168: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Ejemplo de aplicacion - Holter cardıaco

Un Holter cardıaco es un dispositivo medico para grabar la senal deECG durante 24 o 48 horas.

Debe portarlo un paciente sin que afecte su vida diaria

Dimensiones reducidasLivianoBajo consumo

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 81 / 114

Page 169: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Ejemplo de aplicacion - Holter cardıaco

Un Holter cardıaco es un dispositivo medico para grabar la senal deECG durante 24 o 48 horas.

Debe portarlo un paciente sin que afecte su vida diaria

Dimensiones reducidasLivianoBajo consumo

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 81 / 114

Page 170: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Ejemplo de aplicacion - Holter cardıaco

Un Holter cardıaco es un dispositivo medico para grabar la senal deECG durante 24 o 48 horas.

Debe portarlo un paciente sin que afecte su vida diaria

Dimensiones reducidasLivianoBajo consumo

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 81 / 114

Page 171: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Ejemplo de aplicacion - Holter cardıaco

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 82 / 114

Page 172: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Ejemplo de aplicacion - Holter cardıaco

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 82 / 114

Page 173: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Ejemplo de aplicacion - Holter cardıaco

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 82 / 114

Page 174: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Holter - especificaciones tecnicas

Basicamente el Holter consta de:

Display GLCD

Touchscreen

Interfaz analogica (ampli de instrumentacion y filtro LP)

Tarjeta de memoria SD

Microcontrolador LPC1768

Conversor A/DUARTFuncionalidades para manejar los items anteriores

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 83 / 114

Page 175: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Holter - especificaciones tecnicas

Basicamente el Holter consta de:

Display GLCD

Touchscreen

Interfaz analogica (ampli de instrumentacion y filtro LP)

Tarjeta de memoria SD

Microcontrolador LPC1768

Conversor A/DUARTFuncionalidades para manejar los items anteriores

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 83 / 114

Page 176: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Holter - especificaciones tecnicas

Basicamente el Holter consta de:

Display GLCD

Touchscreen

Interfaz analogica (ampli de instrumentacion y filtro LP)

Tarjeta de memoria SD

Microcontrolador LPC1768

Conversor A/DUARTFuncionalidades para manejar los items anteriores

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 83 / 114

Page 177: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Holter - especificaciones tecnicas

Basicamente el Holter consta de:

Display GLCD

Touchscreen

Interfaz analogica (ampli de instrumentacion y filtro LP)

Tarjeta de memoria SD

Microcontrolador LPC1768

Conversor A/DUARTFuncionalidades para manejar los items anteriores

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 83 / 114

Page 178: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Holter - especificaciones tecnicas

Basicamente el Holter consta de:

Display GLCD

Touchscreen

Interfaz analogica (ampli de instrumentacion y filtro LP)

Tarjeta de memoria SD

Microcontrolador LPC1768

Conversor A/DUARTFuncionalidades para manejar los items anteriores

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 83 / 114

Page 179: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Holter - especificaciones tecnicas

Basicamente el Holter consta de:

Display GLCD

Touchscreen

Interfaz analogica (ampli de instrumentacion y filtro LP)

Tarjeta de memoria SD

Microcontrolador LPC1768

Conversor A/DUARTFuncionalidades para manejar los items anteriores

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 83 / 114

Page 180: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Holter - especificaciones tecnicas

Basicamente el Holter consta de:

Display GLCD

Touchscreen

Interfaz analogica (ampli de instrumentacion y filtro LP)

Tarjeta de memoria SD

Microcontrolador LPC1768

Conversor A/DUARTFuncionalidades para manejar los items anteriores

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 83 / 114

Page 181: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Holter - especificaciones tecnicas

Basicamente el Holter consta de:

Display GLCD

Touchscreen

Interfaz analogica (ampli de instrumentacion y filtro LP)

Tarjeta de memoria SD

Microcontrolador LPC1768

Conversor A/DUARTFuncionalidades para manejar los items anteriores

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 83 / 114

Page 182: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Holter - Diagrama de estados

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 84 / 114

Page 183: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Holter - Diagrama de estados

A continuacion veremos como implementar estas funcionalidades conFreeRTOS ...

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 85 / 114

Page 184: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Holter - GLCD

Primero veamos como controlar al GLCD...

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 86 / 114

Page 185: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Holter - GLCD

El refresco del GLCD lo realiza una tarea periodica cada 10 Hz.Se basa en actualizar la RAM del controlador con el contenido de unframebuffer.

Un framebuffer es un bloque de memoria reservado en la RAM delmicro.

Posee tantos bits como pixels el tenga el display

Es un espejo de la imagen que se esta mostrando...mejor dicho, loque se esta mostrando es un espejo del framebuffer.

Como funciona?

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 87 / 114

Page 186: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Holter - GLCD

El refresco del GLCD lo realiza una tarea periodica cada 10 Hz.Se basa en actualizar la RAM del controlador con el contenido de unframebuffer.

Un framebuffer es un bloque de memoria reservado en la RAM delmicro.

Posee tantos bits como pixels el tenga el display

Es un espejo de la imagen que se esta mostrando...mejor dicho, loque se esta mostrando es un espejo del framebuffer.

Como funciona?

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 87 / 114

Page 187: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Holter - GLCD

El refresco del GLCD lo realiza una tarea periodica cada 10 Hz.Se basa en actualizar la RAM del controlador con el contenido de unframebuffer.

Un framebuffer es un bloque de memoria reservado en la RAM delmicro.

Posee tantos bits como pixels el tenga el display

Es un espejo de la imagen que se esta mostrando...mejor dicho, loque se esta mostrando es un espejo del framebuffer.

Como funciona?

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 87 / 114

Page 188: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Holter - GLCD

El refresco del GLCD lo realiza una tarea periodica cada 10 Hz.Se basa en actualizar la RAM del controlador con el contenido de unframebuffer.

Un framebuffer es un bloque de memoria reservado en la RAM delmicro.

Posee tantos bits como pixels el tenga el display

Es un espejo de la imagen que se esta mostrando...mejor dicho, loque se esta mostrando es un espejo del framebuffer.

Como funciona?

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 87 / 114

Page 189: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Holter - GLCD

El refresco del GLCD lo realiza una tarea periodica cada 10 Hz.Se basa en actualizar la RAM del controlador con el contenido de unframebuffer.

Un framebuffer es un bloque de memoria reservado en la RAM delmicro.

Posee tantos bits como pixels el tenga el display

Es un espejo de la imagen que se esta mostrando...mejor dicho, loque se esta mostrando es un espejo del framebuffer.

Como funciona?

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 87 / 114

Page 190: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Holter - GLCD

El micro escribe directamente en el framebuffer. Es una operacionmuy rapida.

Periodicamente, la tarea refresca el GLCD con el contenido delframbuffer.Pasa a estado activo, realiza su accion y luego se bloqueapor 100ms.

Esto nos ahorra varios problemas:

Asignando una prioridad baja a la tarea de refresco, aseguramos quese 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 abstraemos100% del hardware.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 88 / 114

Page 191: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Holter - GLCD

El micro escribe directamente en el framebuffer. Es una operacionmuy rapida.

Periodicamente, la tarea refresca el GLCD con el contenido delframbuffer.Pasa a estado activo, realiza su accion y luego se bloqueapor 100ms.

Esto nos ahorra varios problemas:

Asignando una prioridad baja a la tarea de refresco, aseguramos quese 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 abstraemos100% del hardware.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 88 / 114

Page 192: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Holter - GLCD

El micro escribe directamente en el framebuffer. Es una operacionmuy rapida.

Periodicamente, la tarea refresca el GLCD con el contenido delframbuffer.Pasa a estado activo, realiza su accion y luego se bloqueapor 100ms.

Esto nos ahorra varios problemas:

Asignando una prioridad baja a la tarea de refresco, aseguramos quese 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 abstraemos100% del hardware.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 88 / 114

Page 193: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Holter - GLCD

El micro escribe directamente en el framebuffer. Es una operacionmuy rapida.

Periodicamente, la tarea refresca el GLCD con el contenido delframbuffer.Pasa a estado activo, realiza su accion y luego se bloqueapor 100ms.

Esto nos ahorra varios problemas:

Asignando una prioridad baja a la tarea de refresco, aseguramos quese 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 abstraemos100% del hardware.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 88 / 114

Page 194: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Holter - GLCD

El micro escribe directamente en el framebuffer. Es una operacionmuy rapida.

Periodicamente, la tarea refresca el GLCD con el contenido delframbuffer.Pasa a estado activo, realiza su accion y luego se bloqueapor 100ms.

Esto nos ahorra varios problemas:

Asignando una prioridad baja a la tarea de refresco, aseguramos quese 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 abstraemos100% del hardware.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 88 / 114

Page 195: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Holter - GLCD

El micro escribe directamente en el framebuffer. Es una operacionmuy rapida.

Periodicamente, la tarea refresca el GLCD con el contenido delframbuffer.Pasa a estado activo, realiza su accion y luego se bloqueapor 100ms.

Esto nos ahorra varios problemas:

Asignando una prioridad baja a la tarea de refresco, aseguramos quese 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 abstraemos100% del hardware.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 88 / 114

Page 196: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Holter - Touchscreen

Un touchscreen resistivo esta compuesto de 2 capas conductoras quese tocan al aplicar presion en un punto especıfico.

Se lee su estado utilizando un A/D.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 89 / 114

Page 197: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Holter - Touchscreen

Para leer la coordenada X, se aplica tension sobre la X y se lee la Y.

En uno de los contactos del Y esta la entrada del A/D y el otro enHi-Z.

Los mismo para leer la Y. Las funciones de los pins cambianiterativamente.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 90 / 114

Page 198: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Holter - Touchscreen

Esta funcionalidad la implementamos con una tarea periodica. Se lee elestado del touch cada 50ms.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 91 / 114

Page 199: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Holter - Touchscreen

Existe otra tarea que recibe el nuevo estado en su cola, se desbloquea, yrealiza el cambio de estado. Se explica mas adelante.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 92 / 114

Page 200: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Tareas - Adquisicion de datos

Esta tarea es claramente la tarea mas importante de todo el sistema.Tiene un requerimiento de tiempo duro, y no pueden presentarcorriemiento temporal. Caracteristicas de la misma:

Tiene que ejecutarse a 200 Hz, SIEMPRE ⇒ Tarea Periodica

Tiene que ser corta (ya que se ejecuta muy seguido)

Tiene la mas alta prioridad del sistema

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 93 / 114

Page 201: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Tareas - Adquisicion de datos

Esta tarea es claramente la tarea mas importante de todo el sistema.Tiene un requerimiento de tiempo duro, y no pueden presentarcorriemiento temporal. Caracteristicas de la misma:

Tiene que ejecutarse a 200 Hz, SIEMPRE ⇒ Tarea Periodica

Tiene que ser corta (ya que se ejecuta muy seguido)

Tiene la mas alta prioridad del sistema

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 93 / 114

Page 202: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Tareas - Adquisicion de datos

Esta tarea es claramente la tarea mas importante de todo el sistema.Tiene un requerimiento de tiempo duro, y no pueden presentarcorriemiento temporal. Caracteristicas de la misma:

Tiene que ejecutarse a 200 Hz, SIEMPRE ⇒ Tarea Periodica

Tiene que ser corta (ya que se ejecuta muy seguido)

Tiene la mas alta prioridad del sistema

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 93 / 114

Page 203: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Tareas - Adquisicion de datos

Esta tarea es claramente la tarea mas importante de todo el sistema.Tiene un requerimiento de tiempo duro, y no pueden presentarcorriemiento temporal. Caracteristicas de la misma:

Tiene que ejecutarse a 200 Hz, SIEMPRE ⇒ Tarea Periodica

Tiene que ser corta (ya que se ejecuta muy seguido)

Tiene la mas alta prioridad del sistema

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 93 / 114

Page 204: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Tareas - Adquisicion de datos

Esta tarea es claramente la tarea mas importante de todo el sistema.Tiene un requerimiento de tiempo duro, y no pueden presentarcorriemiento temporal. Caracteristicas de la misma:

Tiene que ejecutarse a 200 Hz, SIEMPRE ⇒ Tarea Periodica

Tiene que ser corta (ya que se ejecuta muy seguido)

Tiene la mas alta prioridad del sistema

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 93 / 114

Page 205: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Tareas - Adquisicion de datos

¿Que tiene que hacer esta tarea?

Tomar un dato del ADC

Filtrar el dato de los 50Hz de linea (operacion sobre el array muysimple)

Distribuir el dato a las tareas que lo necesiten

Memoria SDDibujar en pantallaDetector de QRSComunicacion con PC - UART

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 94 / 114

Page 206: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Tareas - Adquisicion de datos

¿Que tiene que hacer esta tarea?

Tomar un dato del ADC

Filtrar el dato de los 50Hz de linea (operacion sobre el array muysimple)

Distribuir el dato a las tareas que lo necesiten

Memoria SDDibujar en pantallaDetector de QRSComunicacion con PC - UART

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 94 / 114

Page 207: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Tareas - Adquisicion de datos

¿Que tiene que hacer esta tarea?

Tomar un dato del ADC

Filtrar el dato de los 50Hz de linea (operacion sobre el array muysimple)

Distribuir el dato a las tareas que lo necesiten

Memoria SDDibujar en pantallaDetector de QRSComunicacion con PC - UART

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 94 / 114

Page 208: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Tareas - Adquisicion de datos

¿Que tiene que hacer esta tarea?

Tomar un dato del ADC

Filtrar el dato de los 50Hz de linea (operacion sobre el array muysimple)

Distribuir el dato a las tareas que lo necesiten

Memoria SDDibujar en pantallaDetector de QRSComunicacion con PC - UART

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 94 / 114

Page 209: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Tareas - Adquisicion de datos

¿Que tiene que hacer esta tarea?

Tomar un dato del ADC

Filtrar el dato de los 50Hz de linea (operacion sobre el array muysimple)

Distribuir el dato a las tareas que lo necesiten

Memoria SDDibujar en pantallaDetector de QRSComunicacion con PC - UART

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 94 / 114

Page 210: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Tareas - Adquisicion de datos

¿Que tiene que hacer esta tarea?

Tomar un dato del ADC

Filtrar el dato de los 50Hz de linea (operacion sobre el array muysimple)

Distribuir el dato a las tareas que lo necesiten

Memoria SDDibujar en pantallaDetector de QRSComunicacion con PC - UART

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 94 / 114

Page 211: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Tareas - Adquisicion de datos

¿Que tiene que hacer esta tarea?

Tomar un dato del ADC

Filtrar el dato de los 50Hz de linea (operacion sobre el array muysimple)

Distribuir el dato a las tareas que lo necesiten

Memoria SDDibujar en pantallaDetector de QRSComunicacion con PC - UART

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 94 / 114

Page 212: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Tareas - Adquisicion de datos

¿Que tiene que hacer esta tarea?

Tomar un dato del ADC

Filtrar el dato de los 50Hz de linea (operacion sobre el array muysimple)

Distribuir el dato a las tareas que lo necesiten

Memoria SDDibujar en pantallaDetector de QRSComunicacion con PC - UART

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 94 / 114

Page 213: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Tareas - Adquisicion de datos

¿Como lo distribuyo?Exacto! usando COLAS.Estas colas, desbloquaran tareas por lo que las tareas que veremos acontinuacion seran tareas que estaran bloqueadas hasta recibir datos ensus colas ¿Recuerdan el driver de UART?

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 95 / 114

Page 214: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Tareas - Adquisicion de datos

¿Como lo distribuyo?Exacto! usando COLAS.Estas colas, desbloquaran tareas por lo que las tareas que veremos acontinuacion seran tareas que estaran bloqueadas hasta recibir datos ensus colas ¿Recuerdan el driver de UART?

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 95 / 114

Page 215: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Tareas - Grabacion en memoria SD

Esta tarea debera tener un buffer que se iracompletando a medida que lleguen datos.Cuando estos lleguen, los grabaremos en lamemoria. Esto se debe hay que hay un minimode bloque que se puede grabar y si no loutilizamos completo desperdiciarıamosdemasiado tiempo. (El grabado es un procesolento)

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 96 / 114

Page 216: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Tareas - Dibujar en pantalla

Esta tarea se encarga de dibujar la senal adquirida interpolando conpuntos. Tambien debera mostrar el tiempo del estudio y los latidos porminutos calculados.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 97 / 114

Page 217: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Tareas - Dibujar en pantalla

Pero, ¿donde dibuja?En la memoria de video, Exacto!

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 98 / 114

Page 218: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Tareas - Dibujar en pantalla

Pero, ¿donde dibuja?En la memoria de video, Exacto!

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 98 / 114

Page 219: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Tareas - Deteccion del QRS

La senal de ECG puede ser muy variable y detectar los complejos no es unproces tan sencillo...

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 99 / 114

Page 220: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Tareas - Deteccion del QRS

Para detectarlos se utiliza unaimplementacion del algoritmo deHamilton.

Esta pensado para implementarlo enmicros. Usa aritmetica entera.

Va almacenando la senal en un buffer.Al llegar una nueva muestra, revisa lasanteriores y detecta si hubo o no unQRS.

Si lo detecta, devuelve cuantasmuestras atras se detecto. Tiene unalatencia de aprox. 200ms.

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 100 / 114

Page 221: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Tareas - Comunicacion con PC

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

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 101 / 114

Page 222: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Sincronizacion y control de estados

Una buena manera de organizar todo esto es con una tarea que funcionecomo una maquina de estados. La misma funcionara con colas que lediran a que estado cambiar. Cada vez que se deba cambiar de estados,algunas tareas se destruiran y otras se crearan.

Estos cambios de estado los pueden producir:

Eventos del touchscreen (botones)

Alarmas de fin de estudio

Errores

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 102 / 114

Page 223: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Sincronizacion y control de estados

Una buena manera de organizar todo esto es con una tarea que funcionecomo una maquina de estados. La misma funcionara con colas que lediran a que estado cambiar. Cada vez que se deba cambiar de estados,algunas tareas se destruiran y otras se crearan.

Estos cambios de estado los pueden producir:

Eventos del touchscreen (botones)

Alarmas de fin de estudio

Errores

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 102 / 114

Page 224: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Sincronizacion y control de estados

Una buena manera de organizar todo esto es con una tarea que funcionecomo una maquina de estados. La misma funcionara con colas que lediran a que estado cambiar. Cada vez que se deba cambiar de estados,algunas tareas se destruiran y otras se crearan.

Estos cambios de estado los pueden producir:

Eventos del touchscreen (botones)

Alarmas de fin de estudio

Errores

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 102 / 114

Page 225: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Sincronizacion y control de estados

Una buena manera de organizar todo esto es con una tarea que funcionecomo una maquina de estados. La misma funcionara con colas que lediran a que estado cambiar. Cada vez que se deba cambiar de estados,algunas tareas se destruiran y otras se crearan.

Estos cambios de estado los pueden producir:

Eventos del touchscreen (botones)

Alarmas de fin de estudio

Errores

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 102 / 114

Page 226: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Conclusion

¿Y todo esto funciona?

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 103 / 114

Page 227: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 104 / 114

Page 228: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 105 / 114

Page 229: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 106 / 114

Page 230: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Conclusion

¿Como implementarian el sistema para que cada vez que se detecteun segmento QRS se muestre un corazon por 2 segundos y luego

desaparezca?

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 107 / 114

Page 231: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Conclusion

Si tenemos un RTOS entonces creamos una tarea que haga lo siguiente:

Dibuje un corazon en pantalla (o en memoria?)

Espere 2 segundos (bloqueado, por supuesto)

Borre el corazon que dibujo

Y despues?

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 108 / 114

Page 232: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Conclusion

Si tenemos un RTOS entonces creamos una tarea que haga lo siguiente:

Dibuje un corazon en pantalla (o en memoria?)

Espere 2 segundos (bloqueado, por supuesto)

Borre el corazon que dibujo

Y despues?

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 108 / 114

Page 233: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Conclusion

Si tenemos un RTOS entonces creamos una tarea que haga lo siguiente:

Dibuje un corazon en pantalla (o en memoria?)

Espere 2 segundos (bloqueado, por supuesto)

Borre el corazon que dibujo

Y despues?

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 108 / 114

Page 234: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Conclusion

Si tenemos un RTOS entonces creamos una tarea que haga lo siguiente:

Dibuje un corazon en pantalla (o en memoria?)

Espere 2 segundos (bloqueado, por supuesto)

Borre el corazon que dibujo

Y despues?

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 108 / 114

Page 235: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Conclusion

Si tenemos un RTOS entonces creamos una tarea que haga lo siguiente:

Dibuje un corazon en pantalla (o en memoria?)

Espere 2 segundos (bloqueado, por supuesto)

Borre el corazon que dibujo

Y despues?

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 108 / 114

Page 236: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Conclusion

Si tenemos un RTOS entonces creamos una tarea que haga lo siguiente:

Dibuje un corazon en pantalla (o en memoria?)

Espere 2 segundos (bloqueado, por supuesto)

Borre el corazon que dibujo

Y despues?

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 108 / 114

Page 237: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Conclusion

Si tenemos un RTOS entonces creamos una tarea que haga lo siguiente:

Dibuje un corazon en pantalla (o en memoria?)

Espere 2 segundos (bloqueado, por supuesto)

Borre el corazon que dibujo

Y despues?

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 108 / 114

Page 238: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 109 / 114

Page 239: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

¿Y si no tenıamos un RTOS?

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 110 / 114

Page 240: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Malabarismo con TIMERS!Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 111 / 114

Page 241: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

¿Dudas?

¿Dudas? ¿Consultas?

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 112 / 114

Page 242: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Gracias

Muchas gracias!

Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS4 - Marzo - 2011 113 / 114

Page 243: Laboratorio de Sistemas Embebidos...Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Kharsansky,

Ejemplo de aplicacion ECG Holter

Referencias

Barry R. Using the FreeRTOS Real Time Kernel. NXP LPC17xxEdition.

Qing L, Yao C. Real-Time Concepts for Embedded Systems. CMPBooks 2003.

Free RTOS official web. http://www.freertos.org/

E.P. Limiteds Open Source ECG Analysis Software.http://www.eplimited.com/

Hamilton PS, Tompkins WJ. Quantitative investigation of QRSdetection 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 RTOS4 - Marzo - 2011 114 / 114