SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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 SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

Page 1: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

Introduccion LPCXpresso BaseBoard

LPCXpresso BaseBoard

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

Page 13: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

LPCXpresso + FreeRTOS Instalacion

Subsection 3

Instalacion

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

Page 132: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

LPCXpresso + FreeRTOS Instalacion

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

Page 133: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

Drivers Generalidades

Section 5

Drivers

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

Page 145: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

Profiling

Section 6

Profiling

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

Page 160: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

Ejemplo de aplicacion ECG Holter

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

Page 228: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

Ejemplo de aplicacion ECG Holter

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

Page 229: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

Ejemplo de aplicacion ECG Holter

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

Page 230: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

Ejemplo de aplicacion ECG Holter

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

Page 239: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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: SASE2011 Desarrollo Apliaciones RTOS LPCXpresso

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