Laboratorio de Sistemas Embebidos

Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky Mario Azcueta 4 - Marzo - 2011 Alan Khar

2 downloads 153 Views 8MB Size

Story Transcript

Laboratorio de Sistemas Embebidos Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Alan Kharsansky

Mario Azcueta

4 - Marzo - 2011

Alan Kharsansky, Mario Azcueta ()

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

1 / 114

Introducci´ on LPCXpresso

Introducci´ on

Section 1 Introducci´on LPCXpresso

Alan Kharsansky, Mario Azcueta ()

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

2 / 114

Introducci´ on LPCXpresso

Introducci´ on

Introducci´on

El LPCXpresso es un toolchain completo para evaluaci´on y desarrollo con microcontroladores de NXP. Esta compuesto por: LPCXpresso IDE y ”development tools” IDE basado en Eclipse Compiler y linker GNU GDB debugger

LPCXpresso target board (stick) BaseBoard o hardware adicional (opcional)

Alan Kharsansky, Mario Azcueta ()

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

3 / 114

Introducci´ on LPCXpresso

Introducci´ on

Introducci´on

El LPCXpresso es un toolchain completo para evaluaci´on y desarrollo con microcontroladores de NXP. Esta compuesto por: LPCXpresso IDE y ”development tools” IDE basado en Eclipse Compiler y linker GNU GDB debugger

LPCXpresso target board (stick) BaseBoard o hardware adicional (opcional)

Alan Kharsansky, Mario Azcueta ()

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

3 / 114

Introducci´ on LPCXpresso

Introducci´ on

Introducci´on

El LPCXpresso es un toolchain completo para evaluaci´on y desarrollo con microcontroladores de NXP. Esta compuesto por: LPCXpresso IDE y ”development tools” IDE basado en Eclipse Compiler y linker GNU GDB debugger

LPCXpresso target board (stick) BaseBoard o hardware adicional (opcional)

Alan Kharsansky, Mario Azcueta ()

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

3 / 114

Introducci´ on LPCXpresso

Introducci´ on

Introducci´on

El LPCXpresso es un toolchain completo para evaluaci´on y desarrollo con microcontroladores de NXP. Esta compuesto por: LPCXpresso IDE y ”development tools” IDE basado en Eclipse Compiler y linker GNU GDB debugger

LPCXpresso target board (stick) BaseBoard o hardware adicional (opcional)

Alan Kharsansky, Mario Azcueta ()

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

3 / 114

Introducci´ on LPCXpresso

LPCXpresso Target board

LPCXpresso target board

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

Alan Kharsansky, Mario Azcueta ()

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

4 / 114

Introducci´ on LPCXpresso

LPCXpresso Target board

LPCXpresso target board

Alan Kharsansky, Mario Azcueta ()

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

5 / 114

Introducci´ on LPCXpresso

LPCXpresso Target board

LPCXpresso target board

Del lado del target este incluye algunos perif´ericos b´asicos y se comercializan con diferentes micrcontroladores. Por el momento se encuentran disponibles: LPC1114: ARM Cortex-M0, 32KB flash, 4/8KB SRAM LPC1343: ARM Cortex-M3, 32KB flash, 8K SRAM, USB LPC1768: ARM Cortex-M3, 512KB flash, 64KB SRAM, Ethernet, USB On the go.

Alan Kharsansky, Mario Azcueta ()

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

6 / 114

Introducci´ on LPCXpresso

LPCXpresso Target board

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

Alan Kharsansky, Mario Azcueta ()

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

7 / 114

Introducci´ on LPCXpresso

BaseBoard

LPCXpresso BaseBoard El BeseBoard fue dise˜ nado por Embedded Artists Junto con NXP. Permite conectarle un MBed o un LPCXpresso Target.

Alan Kharsansky, Mario Azcueta ()

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

8 / 114

Introducci´ on LPCXpresso

BaseBoard

LPCXpresso BaseBoard

Alan Kharsansky, Mario Azcueta ()

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

9 / 114

Introducci´ on LPCXpresso

BaseBoard

LPCXpresso BaseBoard

La placa contiene perif´ericos para desarrollo y experimentaci´on: Generales: Socket for LPCXpresso and mbed module

Anal´ ogicos:

50 pin expansion dual row pin/header list connector

Trimming potentiometer input (analog input)

Battery powering (small coin battery) USB interface

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

Reset pushbutton

Speaker output (PWM output) Oscilloscope probe inout stage

Digitales: RGB-LED (can be PWM controlled)

Serial - UART:

5-key joystick switch

USB-to-serial bridge, with automatic ISP activation

2 pushbuttons, one for activating bootloader

RS422/485 interface

Rotary switch with quadrature encoding (timer capture)

Interface socket for XBee RF-module

Temperature sensor with PWM output (timer capture)

Alan Kharsansky, Mario Azcueta ()

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

10 / 114

Introducci´ on LPCXpresso

BaseBoard

LPCXpresso BaseBoard

Continuaci´ on: Serial - SPI: Shift register driving 7-segment LED

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

SD/MMC memory card interface Dataflash SPI-NOR flash

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

Serial - I2C: PCA9532 port expander connected to 16 LEDs

Extras

8kbit E2PROM

CAN bus interface (can be simulated with LPCXpresso LPC1114/LPC1343)

MMA7455L accelerometer with I2C interface

Ethernet RJ45 connector with integrated magnetic

Light sensor

Alan Kharsansky, Mario Azcueta ()

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

11 / 114

Introducci´ on LPCXpresso

BaseBoard

Informaci´on adicional

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

Ver

LPCXpresso 1768 Target board: Esquem´aticos LPCXpresso BaseBoard: Gu´ıa de usuario LPCXpresso BaseBoard: Esquem´aticos

Alan Kharsansky, Mario Azcueta ()

Ver

Ver Ver

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

12 / 114

Introducci´ on LPCXpresso

LPCXpresso IDE

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

Alan Kharsansky, Mario Azcueta ()

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

13 / 114

Introducci´ on LPCXpresso

LPCXpresso IDE

Eclipse - Conceptos b´asicos

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

rkspace Es el contenedor de nuestros proyectos. Estos proyectos pueden ser aplicaciones y/o bibliotecas. Tambi´en almacena todas las configuraciones del entorno por lo que se puede mover muy f´ acilmente de computadora en computadora.

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

Alan Kharsansky, Mario Azcueta ()

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

14 / 114

Introducci´ on LPCXpresso

LPCXpresso IDE

Tipos de proyectos

Los proyectos pueden ser de dos tipos: Aplicaciones: Se compilan y se pueden descargar directamente al target. Bibliotecas est´ aticas: Se pueden compilar, pero para usarlas, un proyecto de tipo aplicaci´ on debe hacer llamadas a las funciones que este contiene. Es decir, no puede tener un main(). Este tipo de proyectos no se puede descargar por si solo al microcontrolador.

Alan Kharsansky, Mario Azcueta ()

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

15 / 114

Introducci´ on LPCXpresso

LPCXpresso IDE

Tipos de proyectos - Ejemplo

Para ejemplificar pensemos en un ejemplo de un sistema embebido: un reproductor de MP3. Este podr´ıa estar compuesto por una memoria SD, una pantalla t´actil y un decodificaro de MP3. Todos estos perif´ericos est´an controlados por un microcontrolador, por ejemplo un LPC1768.

Alan Kharsansky, Mario Azcueta ()

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

16 / 114

Introducci´ on LPCXpresso

LPCXpresso IDE

Tipos de proyectos - Ejemplo Las bibliotecas est´aticas que podr´ıamos tener son: Para el manejo de una memoria SD Para el manejo del display Para el manejo del touchscreen Para el manejo del decodificador Nuestra aplicaci´on en s´ı ser´ıa la que tendr´a el programa principal y desde donde se ejecutara nuestro programa. Pero las bibliotecas nos proveen funciones para el manejo de estos perif´ericos. Puede darse el caso en el que el fabricante nos provea de estas bibliotecas ya compiladas. En ese caso solo debemos conocer los prototipos de las funciones.

Alan Kharsansky, Mario Azcueta ()

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

17 / 114

Introducci´ on LPCXpresso

LPCXpresso IDE

Tipos de proyectos - Ejemplo Las bibliotecas est´aticas que podr´ıamos tener son: Para el manejo de una memoria SD Para el manejo del display Para el manejo del touchscreen Para el manejo del decodificador Nuestra aplicaci´on en s´ı ser´ıa la que tendr´a el programa principal y desde donde se ejecutara nuestro programa. Pero las bibliotecas nos proveen funciones para el manejo de estos perif´ericos. Puede darse el caso en el que el fabricante nos provea de estas bibliotecas ya compiladas. En ese caso solo debemos conocer los prototipos de las funciones.

Alan Kharsansky, Mario Azcueta ()

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

17 / 114

Introducci´ on LPCXpresso

LPCXpresso IDE

Tipos de proyectos - Ejemplo Las bibliotecas est´aticas que podr´ıamos tener son: Para el manejo de una memoria SD Para el manejo del display Para el manejo del touchscreen Para el manejo del decodificador Nuestra aplicaci´on en s´ı ser´ıa la que tendr´a el programa principal y desde donde se ejecutara nuestro programa. Pero las bibliotecas nos proveen funciones para el manejo de estos perif´ericos. Puede darse el caso en el que el fabricante nos provea de estas bibliotecas ya compiladas. En ese caso solo debemos conocer los prototipos de las funciones.

Alan Kharsansky, Mario Azcueta ()

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

17 / 114

Introducci´ on LPCXpresso

LPCXpresso IDE

Tipos de proyectos - Ejemplo Las bibliotecas est´aticas que podr´ıamos tener son: Para el manejo de una memoria SD Para el manejo del display Para el manejo del touchscreen Para el manejo del decodificador Nuestra aplicaci´on en s´ı ser´ıa la que tendr´a el programa principal y desde donde se ejecutara nuestro programa. Pero las bibliotecas nos proveen funciones para el manejo de estos perif´ericos. Puede darse el caso en el que el fabricante nos provea de estas bibliotecas ya compiladas. En ese caso solo debemos conocer los prototipos de las funciones.

Alan Kharsansky, Mario Azcueta ()

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

17 / 114

Introducci´ on LPCXpresso

LPCXpresso IDE

Tipos de proyectos - Ejemplo Las bibliotecas est´aticas que podr´ıamos tener son: Para el manejo de una memoria SD Para el manejo del display Para el manejo del touchscreen Para el manejo del decodificador Nuestra aplicaci´on en s´ı ser´ıa la que tendr´a el programa principal y desde donde se ejecutara nuestro programa. Pero las bibliotecas nos proveen funciones para el manejo de estos perif´ericos. Puede darse el caso en el que el fabricante nos provea de estas bibliotecas ya compiladas. En ese caso solo debemos conocer los prototipos de las funciones.

Alan Kharsansky, Mario Azcueta ()

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

17 / 114

Introducci´ on LPCXpresso

LPCXpresso IDE

Tipos de proyectos - Ejemplo Las bibliotecas est´aticas que podr´ıamos tener son: Para el manejo de una memoria SD Para el manejo del display Para el manejo del touchscreen Para el manejo del decodificador Nuestra aplicaci´on en s´ı ser´ıa la que tendr´a el programa principal y desde donde se ejecutara nuestro programa. Pero las bibliotecas nos proveen funciones para el manejo de estos perif´ericos. Puede darse el caso en el que el fabricante nos provea de estas bibliotecas ya compiladas. En ese caso solo debemos conocer los prototipos de las funciones.

Alan Kharsansky, Mario Azcueta ()

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

17 / 114

Conceptos de RTOS

Section 2 Conceptos de RTOS

Alan Kharsansky, Mario Azcueta ()

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

18 / 114

Conceptos de RTOS

¿Qu´ e es?

RTOS - ¿Qu´e es?

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

Alan Kharsansky, Mario Azcueta ()

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

19 / 114

Conceptos de RTOS

¿Qu´ e es?

RTOS - ¿Qu´e es?

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

Alan Kharsansky, Mario Azcueta ()

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

19 / 114

Conceptos de RTOS

¿Qu´ e es?

RTOS - ¿Qu´e es?

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

Alan Kharsansky, Mario Azcueta ()

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

19 / 114

Conceptos de RTOS

¿Qu´ e es?

RTOS - ¿Qu´e es?

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

Alan Kharsansky, Mario Azcueta ()

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

19 / 114

Conceptos de RTOS

¿Qu´ e es?

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

Alan Kharsansky, Mario Azcueta ()

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

20 / 114

Conceptos de RTOS

¿Qu´ e es?

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

Alan Kharsansky, Mario Azcueta ()

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

20 / 114

Conceptos de RTOS

¿Qu´ e es?

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

Alan Kharsansky, Mario Azcueta ()

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

20 / 114

Conceptos de RTOS

¿Qu´ e es?

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

Alan Kharsansky, Mario Azcueta ()

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

20 / 114

Conceptos de RTOS

¿Qu´ e es?

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

Alan Kharsansky, Mario Azcueta ()

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

20 / 114

Conceptos de RTOS

¿Qu´ e es?

RTOS - ¿Qu´e es?

Todas tienen un denominador com´ un:

TAREAS CONCURRENTES El RTOS crea la ilusi´on de m´ ultiples tareas ejecut´andose en simult´aneo.

Alan Kharsansky, Mario Azcueta ()

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

21 / 114

Conceptos de RTOS

¿Qu´ e es?

RTOS - ¿Qu´e es?

Todas tienen un denominador com´ un:

TAREAS CONCURRENTES El RTOS crea la ilusi´on de m´ ultiples tareas ejecut´andose en simult´aneo.

Alan Kharsansky, Mario Azcueta ()

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

21 / 114

Conceptos de RTOS

¿Qu´ e es?

RTOS - ¿Qu´e es?

Todas tienen un denominador com´ un:

TAREAS CONCURRENTES El RTOS crea la ilusi´on de m´ ultiples tareas ejecut´andose en simult´aneo.

Alan Kharsansky, Mario Azcueta ()

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

21 / 114

Conceptos de RTOS

¿Qu´ e es?

RTOS - ¿Qu´e es?

El RTOS se sit´ ua entre la capa BSP (Board Support Package, o ”port”) y la capa de aplicaci´on. Puede incluir varios m´odulos (protocolos de red, sistema de archivos, etc.)

Alan Kharsansky, Mario Azcueta ()

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

22 / 114

Conceptos de RTOS

¿Qu´ e es?

RTOS - ¿Qu´e es?

El RTOS se sit´ ua entre la capa BSP (Board Support Package, o ”port”) y la capa de aplicaci´on. Puede incluir varios m´odulos (protocolos de red, sistema de archivos, etc.)

Alan Kharsansky, Mario Azcueta ()

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

22 / 114

Conceptos de RTOS

Componentes

RTOS - Componentes

Los componentes de un RTOS pueden clasificarse ampliamente en 3 grupos: Scheduler: maneja los hilos de ejecuci´ on de las tareas. Objetos: tareas, colas, sem´aforos, etc. Servicios: operaciones realizadas sobre los objetos (manejo de interrupciones, de memoria, etc.)

Alan Kharsansky, Mario Azcueta ()

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

23 / 114

Conceptos de RTOS

Componentes

RTOS - Componentes

Los componentes de un RTOS pueden clasificarse ampliamente en 3 grupos: Scheduler: maneja los hilos de ejecuci´ on de las tareas. Objetos: tareas, colas, sem´aforos, etc. Servicios: operaciones realizadas sobre los objetos (manejo de interrupciones, de memoria, etc.)

Alan Kharsansky, Mario Azcueta ()

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

23 / 114

Conceptos de RTOS

Componentes

RTOS - Componentes

Los componentes de un RTOS pueden clasificarse ampliamente en 3 grupos: Scheduler: maneja los hilos de ejecuci´ on de las tareas. Objetos: tareas, colas, sem´aforos, etc. Servicios: operaciones realizadas sobre los objetos (manejo de interrupciones, de memoria, etc.)

Alan Kharsansky, Mario Azcueta ()

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

23 / 114

Conceptos de RTOS

Componentes

RTOS - Componentes

Los componentes de un RTOS pueden clasificarse ampliamente en 3 grupos: Scheduler: maneja los hilos de ejecuci´ on de las tareas. Objetos: tareas, colas, sem´aforos, etc. Servicios: operaciones realizadas sobre los objetos (manejo de interrupciones, de memoria, etc.)

Alan Kharsansky, Mario Azcueta ()

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

23 / 114

Conceptos de RTOS

Componentes

RTOS - Scheduler

El Scheduler determina cu´ando se ejecutar´a cada tarea. Existen diferentes esquemas de scheduling: Cooperativo: La tarea en ejecuci´ on cede el uso de CPU a otra voluntariamente. Preemptive: La tarea en ejecuci´ on cede el uso de CPU a otra por orden del scheduler. Priority-Based: Se asignan prioridades a las tareas para acceder al uso de CPU. Round-Robin: Se asigna un tiempo fijo de uso de CPU a cada tarea en orden circular. Puede combinarse con el uso de prioridades.

Alan Kharsansky, Mario Azcueta ()

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

24 / 114

Conceptos de RTOS

Componentes

RTOS - Scheduler

El Scheduler determina cu´ando se ejecutar´a cada tarea. Existen diferentes esquemas de scheduling: Cooperativo: La tarea en ejecuci´ on cede el uso de CPU a otra voluntariamente. Preemptive: La tarea en ejecuci´ on cede el uso de CPU a otra por orden del scheduler. Priority-Based: Se asignan prioridades a las tareas para acceder al uso de CPU. Round-Robin: Se asigna un tiempo fijo de uso de CPU a cada tarea en orden circular. Puede combinarse con el uso de prioridades.

Alan Kharsansky, Mario Azcueta ()

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

24 / 114

Conceptos de RTOS

Componentes

RTOS - Scheduler

El Scheduler determina cu´ando se ejecutar´a cada tarea. Existen diferentes esquemas de scheduling: Cooperativo: La tarea en ejecuci´ on cede el uso de CPU a otra voluntariamente. Preemptive: La tarea en ejecuci´ on cede el uso de CPU a otra por orden del scheduler. Priority-Based: Se asignan prioridades a las tareas para acceder al uso de CPU. Round-Robin: Se asigna un tiempo fijo de uso de CPU a cada tarea en orden circular. Puede combinarse con el uso de prioridades.

Alan Kharsansky, Mario Azcueta ()

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

24 / 114

Conceptos de RTOS

Componentes

RTOS - Scheduler

El Scheduler determina cu´ando se ejecutar´a cada tarea. Existen diferentes esquemas de scheduling: Cooperativo: La tarea en ejecuci´ on cede el uso de CPU a otra voluntariamente. Preemptive: La tarea en ejecuci´ on cede el uso de CPU a otra por orden del scheduler. Priority-Based: Se asignan prioridades a las tareas para acceder al uso de CPU. Round-Robin: Se asigna un tiempo fijo de uso de CPU a cada tarea en orden circular. Puede combinarse con el uso de prioridades.

Alan Kharsansky, Mario Azcueta ()

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

24 / 114

Conceptos de RTOS

Componentes

RTOS - Scheduler

El Scheduler determina cu´ando se ejecutar´a cada tarea. Existen diferentes esquemas de scheduling: Cooperativo: La tarea en ejecuci´ on cede el uso de CPU a otra voluntariamente. Preemptive: La tarea en ejecuci´ on cede el uso de CPU a otra por orden del scheduler. Priority-Based: Se asignan prioridades a las tareas para acceder al uso de CPU. Round-Robin: Se asigna un tiempo fijo de uso de CPU a cada tarea en orden circular. Puede combinarse con el uso de prioridades.

Alan Kharsansky, Mario Azcueta ()

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

24 / 114

Conceptos de RTOS

Componentes

RTOS - Scheduler

Ejemplo de esquema Priority-Based

Alan Kharsansky, Mario Azcueta ()

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

25 / 114

Conceptos de RTOS

Componentes

RTOS - Scheduler

Ejemplo de esquema Round-Robin con prioridades.

Alan Kharsansky, Mario Azcueta ()

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

26 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

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

Alan Kharsansky, Mario Azcueta ()

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

27 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

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

Alan Kharsansky, Mario Azcueta ()

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

27 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Se compone de: Nombre/ID Prioridad (esquema preemptive) Stack Rutina (c´ odigo) Bloque de control

Alan Kharsansky, Mario Azcueta ()

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

28 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Se compone de: Nombre/ID Prioridad (esquema preemptive) Stack Rutina (c´ odigo) Bloque de control

Alan Kharsansky, Mario Azcueta ()

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

28 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Se compone de: Nombre/ID Prioridad (esquema preemptive) Stack Rutina (c´ odigo) Bloque de control

Alan Kharsansky, Mario Azcueta ()

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

28 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Se compone de: Nombre/ID Prioridad (esquema preemptive) Stack Rutina (c´ odigo) Bloque de control

Alan Kharsansky, Mario Azcueta ()

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

28 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Se compone de: Nombre/ID Prioridad (esquema preemptive) Stack Rutina (c´ odigo) Bloque de control

Alan Kharsansky, Mario Azcueta ()

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

28 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Se compone de: Nombre/ID Prioridad (esquema preemptive) Stack Rutina (c´ odigo) Bloque de control

Alan Kharsansky, Mario Azcueta ()

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

28 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Algunos ejemplos de tareas: Inicializaci´on del sistema (ejecuta solo una vez) Filtrar una se˜ nal (posiblemente peri´ odica) Mostrar en pantalla (puede activarse ante un evento) Tarea idle Las tareas pueden tener diferentes requerimientos de temporizaci´on.

Alan Kharsansky, Mario Azcueta ()

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

29 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Algunos ejemplos de tareas: Inicializaci´on del sistema (ejecuta solo una vez) Filtrar una se˜ nal (posiblemente peri´ odica) Mostrar en pantalla (puede activarse ante un evento) Tarea idle Las tareas pueden tener diferentes requerimientos de temporizaci´on.

Alan Kharsansky, Mario Azcueta ()

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

29 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Algunos ejemplos de tareas: Inicializaci´on del sistema (ejecuta solo una vez) Filtrar una se˜ nal (posiblemente peri´ odica) Mostrar en pantalla (puede activarse ante un evento) Tarea idle Las tareas pueden tener diferentes requerimientos de temporizaci´on.

Alan Kharsansky, Mario Azcueta ()

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

29 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Algunos ejemplos de tareas: Inicializaci´on del sistema (ejecuta solo una vez) Filtrar una se˜ nal (posiblemente peri´ odica) Mostrar en pantalla (puede activarse ante un evento) Tarea idle Las tareas pueden tener diferentes requerimientos de temporizaci´on.

Alan Kharsansky, Mario Azcueta ()

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

29 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Algunos ejemplos de tareas: Inicializaci´on del sistema (ejecuta solo una vez) Filtrar una se˜ nal (posiblemente peri´ odica) Mostrar en pantalla (puede activarse ante un evento) Tarea idle Las tareas pueden tener diferentes requerimientos de temporizaci´on.

Alan Kharsansky, Mario Azcueta ()

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

29 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Algunos ejemplos de tareas: Inicializaci´on del sistema (ejecuta solo una vez) Filtrar una se˜ nal (posiblemente peri´ odica) Mostrar en pantalla (puede activarse ante un evento) Tarea idle Las tareas pueden tener diferentes requerimientos de temporizaci´on.

Alan Kharsansky, Mario Azcueta ()

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

29 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

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

Alan Kharsansky, Mario Azcueta ()

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

30 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

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

Alan Kharsansky, Mario Azcueta ()

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

30 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

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

Alan Kharsansky, Mario Azcueta ()

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

30 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

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

Alan Kharsansky, Mario Azcueta ()

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

30 / 114

Conceptos de RTOS

Componentes

RTOS - Tareas

Estructura t´ıpica de una tarea: void t a r e a t i p i c a () { /∗ C o d i g o de i n i c i a l i z a c i o n ∗/ for ( ; ; ) { /∗ Cuerpo p r i n c i p a l ∗/ /∗ Llama a b l o q u e a r ∗/ } /∗ La t a r e a NUNCA d e b e l l e g a r a q u i ∗/ }

Alan Kharsansky, Mario Azcueta ()

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

31 / 114

Conceptos de RTOS

Componentes

RTOS - Colas

Su funci´on principal es proveer un mecanismo de intercambio de datos entre tareas. Son FIFO.

Se compone de: Nombre/ID Tama˜ no y tipo de datos a almacenar Bloque de control

Alan Kharsansky, Mario Azcueta ()

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

32 / 114

Conceptos de RTOS

Componentes

RTOS - Colas

Su funci´on principal es proveer un mecanismo de intercambio de datos entre tareas. Son FIFO.

Se compone de: Nombre/ID Tama˜ no y tipo de datos a almacenar Bloque de control

Alan Kharsansky, Mario Azcueta ()

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

32 / 114

Conceptos de RTOS

Componentes

RTOS - Colas

Su funci´on principal es proveer un mecanismo de intercambio de datos entre tareas. Son FIFO.

Se compone de: Nombre/ID Tama˜ no y tipo de datos a almacenar Bloque de control

Alan Kharsansky, Mario Azcueta ()

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

32 / 114

Conceptos de RTOS

Componentes

RTOS - Colas

Su funci´on principal es proveer un mecanismo de intercambio de datos entre tareas. Son FIFO.

Se compone de: Nombre/ID Tama˜ no y tipo de datos a almacenar Bloque de control

Alan Kharsansky, Mario Azcueta ()

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

32 / 114

Conceptos de RTOS

Componentes

RTOS - Colas

Varias tareas pueden acceder a una misma cola.

Alan Kharsansky, Mario Azcueta ()

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

33 / 114

Conceptos de RTOS

Componentes

RTOS - Colas

Varias tareas pueden acceder a una misma cola. Una tarea puede elegir bloquearse si su cola est´a vac´ıa. Al llegar un elemento, autom´aticamente pasa a Ready.

Alan Kharsansky, Mario Azcueta ()

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

33 / 114

Conceptos de RTOS

Componentes

RTOS - Colas

Varias tareas pueden acceder a una misma cola. Una tarea puede elegir bloquearse si su cola est´a vac´ıa. Al llegar un elemento, autom´aticamente pasa a Ready. Cuidado! Cargar datos en una cola causa una copia de los datos en memoria. Puede ser conveniente pasar un puntero.

Alan Kharsansky, Mario Azcueta ()

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

33 / 114

Conceptos de RTOS

Componentes

RTOS - Sem´aforos Son objetos como las colas. Pueden ser creados y destruidos. Su funci´on principal es proveer un mecanismo de sincronizaci´ on entre tareas.

Ejemplo: acceder a un recurso (como escribir en una pantalla): Para acceder al recurso la tarea pide el sem´aforo Si est´a disponible, toma el sem´aforo y realiza la operaci´on. Al terminar, lo libera para que otros puedan acceder. Alan Kharsansky, Mario Azcueta ()

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

34 / 114

Conceptos de RTOS

Componentes

RTOS - Sem´aforos Son objetos como las colas. Pueden ser creados y destruidos. Su funci´on principal es proveer un mecanismo de sincronizaci´ on entre tareas.

Ejemplo: acceder a un recurso (como escribir en una pantalla): Para acceder al recurso la tarea pide el sem´aforo Si est´a disponible, toma el sem´aforo y realiza la operaci´on. Al terminar, lo libera para que otros puedan acceder. Alan Kharsansky, Mario Azcueta ()

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

34 / 114

Conceptos de RTOS

Componentes

RTOS - Sem´aforos

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

Alan Kharsansky, Mario Azcueta ()

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

35 / 114

Conceptos de RTOS

Componentes

RTOS - Sem´aforos

El Handler ejecuta su rutina dentro de un for( ;;) y cuando termina quiere volver a tomar el sem´aforo. Como no hubo otra interrupci´on que cediera un sem´aforo, el Handler se bloquea y vuelve el control a la Tarea 1 en t4.

Alan Kharsansky, Mario Azcueta ()

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

36 / 114

Conceptos de RTOS

Componentes

RTOS - Sem´aforos

Los reci´en descriptos se conocen como sem´aforos binarios (tienen 2 estados). Existen otros m´etodos de sincronizaci´ on: Sem´ aforos de conteo: pueden tomarse o liberarse m´as de una vez. Mutex: similares a los sem´aforos binarios pero con funciones adicionales (como herencia de prioridades).

Alan Kharsansky, Mario Azcueta ()

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

37 / 114

Conceptos de RTOS

Componentes

RTOS - Sem´aforos

Los reci´en descriptos se conocen como sem´aforos binarios (tienen 2 estados). Existen otros m´etodos de sincronizaci´ on: Sem´ aforos de conteo: pueden tomarse o liberarse m´as de una vez. Mutex: similares a los sem´aforos binarios pero con funciones adicionales (como herencia de prioridades).

Alan Kharsansky, Mario Azcueta ()

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

37 / 114

Conceptos de RTOS

Componentes

RTOS - Sem´aforos

Los reci´en descriptos se conocen como sem´aforos binarios (tienen 2 estados). Existen otros m´etodos de sincronizaci´ on: Sem´ aforos de conteo: pueden tomarse o liberarse m´as de una vez. Mutex: similares a los sem´aforos binarios pero con funciones adicionales (como herencia de prioridades).

Alan Kharsansky, Mario Azcueta ()

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

37 / 114

Conceptos de RTOS

Utilidad

RTOS - ¿Por qu´e usarlo? Existen varias razones por las cuales usar un RTOS: Abstracci´on de la implementaci´ on del scheduling Mayor modularidad Facilita el desarrollo en grupos Mayor facilidad al debuggear Mayor reusabilidad del c´ odigo Posibilidad de realizar profiling (tarea idle) Reducen el tiempo de desarrollo y la lista sigue ...

Alan Kharsansky, Mario Azcueta ()

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

38 / 114

Conceptos de RTOS

Utilidad

RTOS - ¿Por qu´e usarlo? Existen varias razones por las cuales usar un RTOS: Abstracci´on de la implementaci´ on del scheduling Mayor modularidad Facilita el desarrollo en grupos Mayor facilidad al debuggear Mayor reusabilidad del c´ odigo Posibilidad de realizar profiling (tarea idle) Reducen el tiempo de desarrollo y la lista sigue ...

Alan Kharsansky, Mario Azcueta ()

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

38 / 114

Conceptos de RTOS

Utilidad

RTOS - ¿Por qu´e usarlo? Existen varias razones por las cuales usar un RTOS: Abstracci´on de la implementaci´ on del scheduling Mayor modularidad Facilita el desarrollo en grupos Mayor facilidad al debuggear Mayor reusabilidad del c´ odigo Posibilidad de realizar profiling (tarea idle) Reducen el tiempo de desarrollo y la lista sigue ...

Alan Kharsansky, Mario Azcueta ()

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

38 / 114

Conceptos de RTOS

Utilidad

RTOS - ¿Por qu´e usarlo? Existen varias razones por las cuales usar un RTOS: Abstracci´on de la implementaci´ on del scheduling Mayor modularidad Facilita el desarrollo en grupos Mayor facilidad al debuggear Mayor reusabilidad del c´ odigo Posibilidad de realizar profiling (tarea idle) Reducen el tiempo de desarrollo y la lista sigue ...

Alan Kharsansky, Mario Azcueta ()

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

38 / 114

Conceptos de RTOS

Utilidad

RTOS - ¿Por qu´e usarlo? Existen varias razones por las cuales usar un RTOS: Abstracci´on de la implementaci´ on del scheduling Mayor modularidad Facilita el desarrollo en grupos Mayor facilidad al debuggear Mayor reusabilidad del c´ odigo Posibilidad de realizar profiling (tarea idle) Reducen el tiempo de desarrollo y la lista sigue ...

Alan Kharsansky, Mario Azcueta ()

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

38 / 114

Conceptos de RTOS

Utilidad

RTOS - ¿Por qu´e usarlo? Existen varias razones por las cuales usar un RTOS: Abstracci´on de la implementaci´ on del scheduling Mayor modularidad Facilita el desarrollo en grupos Mayor facilidad al debuggear Mayor reusabilidad del c´ odigo Posibilidad de realizar profiling (tarea idle) Reducen el tiempo de desarrollo y la lista sigue ...

Alan Kharsansky, Mario Azcueta ()

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

38 / 114

Conceptos de RTOS

Utilidad

RTOS - ¿Por qu´e usarlo? Existen varias razones por las cuales usar un RTOS: Abstracci´on de la implementaci´ on del scheduling Mayor modularidad Facilita el desarrollo en grupos Mayor facilidad al debuggear Mayor reusabilidad del c´ odigo Posibilidad de realizar profiling (tarea idle) Reducen el tiempo de desarrollo y la lista sigue ...

Alan Kharsansky, Mario Azcueta ()

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

38 / 114

Conceptos de RTOS

Utilidad

RTOS - ¿Por qu´e usarlo? Existen varias razones por las cuales usar un RTOS: Abstracci´on de la implementaci´ on del scheduling Mayor modularidad Facilita el desarrollo en grupos Mayor facilidad al debuggear Mayor reusabilidad del c´ odigo Posibilidad de realizar profiling (tarea idle) Reducen el tiempo de desarrollo y la lista sigue ...

Alan Kharsansky, Mario Azcueta ()

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

38 / 114

Conceptos de RTOS

Utilidad

RTOS - ¿Por qu´e usarlo? Existen varias razones por las cuales usar un RTOS: Abstracci´on de la implementaci´ on del scheduling Mayor modularidad Facilita el desarrollo en grupos Mayor facilidad al debuggear Mayor reusabilidad del c´ odigo Posibilidad de realizar profiling (tarea idle) Reducen el tiempo de desarrollo y la lista sigue ...

Alan Kharsansky, Mario Azcueta ()

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

38 / 114

Conceptos de RTOS

Utilidad

RTOS - ¿Por qu´e usarlo?

Existen varias razones por las cuales usar un RTOS: Mejoran la escalabilidad Facilitan la portabilidad Mejoran la mantenibilidad Reducen la incertidumbre etc...

Alan Kharsansky, Mario Azcueta ()

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

39 / 114

Conceptos de RTOS

Utilidad

RTOS - ¿Por qu´e usarlo?

Existen varias razones por las cuales usar un RTOS: Mejoran la escalabilidad Facilitan la portabilidad Mejoran la mantenibilidad Reducen la incertidumbre etc...

Alan Kharsansky, Mario Azcueta ()

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

39 / 114

Conceptos de RTOS

Utilidad

RTOS - ¿Por qu´e usarlo?

Existen varias razones por las cuales usar un RTOS: Mejoran la escalabilidad Facilitan la portabilidad Mejoran la mantenibilidad Reducen la incertidumbre etc...

Alan Kharsansky, Mario Azcueta ()

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

39 / 114

Conceptos de RTOS

Utilidad

RTOS - ¿Por qu´e usarlo?

Existen varias razones por las cuales usar un RTOS: Mejoran la escalabilidad Facilitan la portabilidad Mejoran la mantenibilidad Reducen la incertidumbre etc...

Alan Kharsansky, Mario Azcueta ()

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

39 / 114

Conceptos de RTOS

Utilidad

FreeRTOS Por qu´e decidimos usar FreeRTOS: Es de c´odigo abierto C´ odigo ampliamente comentado Sencillo de portar (existen m´as de 23 ports)

Ocupa poco espacio en flash (∼5KB) necesita poca RAM (∼5KB + Heap) y el overhead que introduce es m´ınimo (entre 1% y 4% del tiempo de CPU) a cambio de una gran utilidad. Ampliamente documentado Existe una comunidad de usuarios importante Libre de regal´ıas. Puede ser usado en aplicaciones comerciales bajo licencia GNU versi´on 2.

Alan Kharsansky, Mario Azcueta ()

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

40 / 114

Conceptos de RTOS

Utilidad

FreeRTOS Por qu´e decidimos usar FreeRTOS: Es de c´odigo abierto C´odigo ampliamente comentado Sencillo de portar (existen m´as de 23 ports)

Ocupa poco espacio en flash (∼5KB) necesita poca RAM (∼5KB + Heap) y el overhead que introduce es m´ınimo (entre 1% y 4% del tiempo de CPU) a cambio de una gran utilidad. Ampliamente documentado Existe una comunidad de usuarios importante Libre de regal´ıas. Puede ser usado en aplicaciones comerciales bajo licencia GNU versi´on 2.

Alan Kharsansky, Mario Azcueta ()

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

40 / 114

Conceptos de RTOS

Utilidad

FreeRTOS Por qu´e decidimos usar FreeRTOS: Es de c´odigo abierto C´odigo ampliamente comentado Sencillo de portar (existen m´as de 23 ports)

Ocupa poco espacio en flash (∼5KB) necesita poca RAM (∼5KB + Heap) y el overhead que introduce es m´ınimo (entre 1% y 4% del tiempo de CPU) a cambio de una gran utilidad. Ampliamente documentado Existe una comunidad de usuarios importante Libre de regal´ıas. Puede ser usado en aplicaciones comerciales bajo licencia GNU versi´on 2.

Alan Kharsansky, Mario Azcueta ()

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

40 / 114

Conceptos de RTOS

Utilidad

FreeRTOS Por qu´e decidimos usar FreeRTOS: Es de c´odigo abierto C´odigo ampliamente comentado Sencillo de portar (existen m´as de 23 ports)

Ocupa poco espacio en flash (∼5KB) necesita poca RAM (∼5KB + Heap) y el overhead que introduce es m´ınimo (entre 1% y 4% del tiempo de CPU) a cambio de una gran utilidad. Ampliamente documentado Existe una comunidad de usuarios importante Libre de regal´ıas. Puede ser usado en aplicaciones comerciales bajo licencia GNU versi´on 2.

Alan Kharsansky, Mario Azcueta ()

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

40 / 114

Conceptos de RTOS

Utilidad

FreeRTOS Por qu´e decidimos usar FreeRTOS: Es de c´odigo abierto C´odigo ampliamente comentado Sencillo de portar (existen m´as de 23 ports)

Ocupa poco espacio en flash (∼5KB) necesita poca RAM (∼5KB + Heap) y el overhead que introduce es m´ınimo (entre 1% y 4% del tiempo de CPU) a cambio de una gran utilidad. Ampliamente documentado Existe una comunidad de usuarios importante Libre de regal´ıas. Puede ser usado en aplicaciones comerciales bajo licencia GNU versi´on 2.

Alan Kharsansky, Mario Azcueta ()

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

40 / 114

Conceptos de RTOS

Utilidad

FreeRTOS Por qu´e decidimos usar FreeRTOS: Es de c´odigo abierto C´odigo ampliamente comentado Sencillo de portar (existen m´as de 23 ports)

Ocupa poco espacio en flash (∼5KB) necesita poca RAM (∼5KB + Heap) y el overhead que introduce es m´ınimo (entre 1% y 4% del tiempo de CPU) a cambio de una gran utilidad. Ampliamente documentado Existe una comunidad de usuarios importante Libre de regal´ıas. Puede ser usado en aplicaciones comerciales bajo licencia GNU versi´on 2.

Alan Kharsansky, Mario Azcueta ()

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

40 / 114

Conceptos de RTOS

Utilidad

FreeRTOS Por qu´e decidimos usar FreeRTOS: Es de c´odigo abierto C´odigo ampliamente comentado Sencillo de portar (existen m´as de 23 ports)

Ocupa poco espacio en flash (∼5KB) necesita poca RAM (∼5KB + Heap) y el overhead que introduce es m´ınimo (entre 1% y 4% del tiempo de CPU) a cambio de una gran utilidad. Ampliamente documentado Existe una comunidad de usuarios importante Libre de regal´ıas. Puede ser usado en aplicaciones comerciales bajo licencia GNU versi´on 2.

Alan Kharsansky, Mario Azcueta ()

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

40 / 114

Conceptos de RTOS

Utilidad

FreeRTOS Por qu´e decidimos usar FreeRTOS: Es de c´odigo abierto C´odigo ampliamente comentado Sencillo de portar (existen m´as de 23 ports)

Ocupa poco espacio en flash (∼5KB) necesita poca RAM (∼5KB + Heap) y el overhead que introduce es m´ınimo (entre 1% y 4% del tiempo de CPU) a cambio de una gran utilidad. Ampliamente documentado Existe una comunidad de usuarios importante Libre de regal´ıas. Puede ser usado en aplicaciones comerciales bajo licencia GNU versi´on 2.

Alan Kharsansky, Mario Azcueta ()

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

40 / 114

Conceptos de RTOS

Utilidad

FreeRTOS

Existen tambi´en otras licencias para este RTOS: Existe una licencia comercial con soporte oficial y garant´ıas legales (OpenRTOS). Existe una licencia certificada SIL3 para aplicaciones cr´ıticas (SafeRTOS). La versi´on FreeRTOS 6.0.0 portada a Cortex-M3 soporta MPU (Memory Protection Unit).

Alan Kharsansky, Mario Azcueta ()

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

41 / 114

Conceptos de RTOS

Utilidad

FreeRTOS

Existen tambi´en otras licencias para este RTOS: Existe una licencia comercial con soporte oficial y garant´ıas legales (OpenRTOS). Existe una licencia certificada SIL3 para aplicaciones cr´ıticas (SafeRTOS). La versi´on FreeRTOS 6.0.0 portada a Cortex-M3 soporta MPU (Memory Protection Unit).

Alan Kharsansky, Mario Azcueta ()

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

41 / 114

Conceptos de RTOS

Utilidad

FreeRTOS

Existen tambi´en otras licencias para este RTOS: Existe una licencia comercial con soporte oficial y garant´ıas legales (OpenRTOS). Existe una licencia certificada SIL3 para aplicaciones cr´ıticas (SafeRTOS). La versi´on FreeRTOS 6.0.0 portada a Cortex-M3 soporta MPU (Memory Protection Unit).

Alan Kharsansky, Mario Azcueta ()

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

41 / 114

Conceptos de RTOS

Utilidad

FreeRTOS

Existen tambi´en otras licencias para este RTOS: Existe una licencia comercial con soporte oficial y garant´ıas legales (OpenRTOS). Existe una licencia certificada SIL3 para aplicaciones cr´ıticas (SafeRTOS). La versi´on FreeRTOS 6.0.0 portada a Cortex-M3 soporta MPU (Memory Protection Unit).

Alan Kharsansky, Mario Azcueta ()

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

41 / 114

LPCXpresso + FreeRTOS

Distribuci´ on

Section 3 LPCXpresso + FreeRTOS

Alan Kharsansky, Mario Azcueta ()

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

42 / 114

LPCXpresso + FreeRTOS

Distribuci´ on

Es recomendable tener un workspace para cada proyecto que realicemos. En ´el configuraremos el RTOS. La estructura del workspace podr´a ser: FreeRTOS Library Biblioteca de funciones 1 Biblioteca de funciones 2 Driver DAC ADC MP3 Player

Alan Kharsansky, Mario Azcueta ()

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

43 / 114

LPCXpresso + FreeRTOS

Distribuci´ on

Es recomendable tener un workspace para cada proyecto que realicemos. En ´el configuraremos el RTOS. La estructura del workspace podr´a ser: FreeRTOS Library Biblioteca de funciones 1 Biblioteca de funciones 2 Driver DAC ADC MP3 Player

Alan Kharsansky, Mario Azcueta ()

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

43 / 114

LPCXpresso + FreeRTOS

Distribuci´ on

Es recomendable tener un workspace para cada proyecto que realicemos. En ´el configuraremos el RTOS. La estructura del workspace podr´a ser: FreeRTOS Library Biblioteca de funciones 1 Biblioteca de funciones 2 Driver DAC ADC MP3 Player

Alan Kharsansky, Mario Azcueta ()

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

43 / 114

LPCXpresso + FreeRTOS

Distribuci´ on

Es recomendable tener un workspace para cada proyecto que realicemos. En ´el configuraremos el RTOS. La estructura del workspace podr´a ser: FreeRTOS Library Biblioteca de funciones 1 Biblioteca de funciones 2 Driver DAC ADC MP3 Player

Alan Kharsansky, Mario Azcueta ()

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

43 / 114

LPCXpresso + FreeRTOS

Distribuci´ on

Es recomendable tener un workspace para cada proyecto que realicemos. En ´el configuraremos el RTOS. La estructura del workspace podr´a ser: FreeRTOS Library Biblioteca de funciones 1 Biblioteca de funciones 2 Driver DAC ADC MP3 Player

Alan Kharsansky, Mario Azcueta ()

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

43 / 114

LPCXpresso + FreeRTOS

Distribuci´ on

El FreeRTOS esta compuesto por: list.c queue.c tasks.c Portable heap X.c port.c portmacro.h

Include FreeRTOSConfig.h ...

Alan Kharsansky, Mario Azcueta ()

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

44 / 114

LPCXpresso + FreeRTOS

Distribuci´ on

El FreeRTOS esta compuesto por: list.c queue.c tasks.c Portable heap X.c port.c portmacro.h

Include FreeRTOSConfig.h ...

Alan Kharsansky, Mario Azcueta ()

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

44 / 114

LPCXpresso + FreeRTOS

Distribuci´ on

El FreeRTOS esta compuesto por: list.c queue.c tasks.c Portable heap X.c port.c portmacro.h

Include FreeRTOSConfig.h ...

Alan Kharsansky, Mario Azcueta ()

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

44 / 114

LPCXpresso + FreeRTOS

Configuraci´ on

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

Alan Kharsansky, Mario Azcueta ()

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

45 / 114

LPCXpresso + FreeRTOS

Configuraci´ on

Este archivo tiene la siguiente forma: #d e f i n e #d e f i n e #d e f i n e #d e f i n e #d e f i n e #d e f i n e #d e f i n e

configUSE TICK HOOK 1 configCPU CLOCK HZ ( 100000000UL ) configTICK RATE HZ ( ( p o r t T i c k T y p e ) 1000 ) configMINIMAL STACK SIZE ( ( u n s i g n e d s h o r t ) 100 ) configTOTAL HEAP SIZE ( ( s i z e t ) ( 24 ∗ 1024 ) ) configMAX TASK NAME LEN ( 12 ) configUSE TRACE FACILITY 0

#d e f i n e #d e f i n e #d e f i n e #d e f i n e

INCLUDE INCLUDE INCLUDE INCLUDE

vTaskPrioritySet 1 uxTaskPriorityGet 1 vTaskDelete 1 vTaskCleanUpResources 0

FreeRTOSconfig.h

Alan Kharsansky, Mario Azcueta ()

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

46 / 114

LPCXpresso + FreeRTOS

Configuraci´ on

Los aspectos m´s importantes que debemos configurar son: configUSE PREEMPTION configUSE XXXX HOOK (diferentes hooks) configMAX PRIORITIES configCPU CLOCK HZ configTICK RATE HZ configMINIMAL STACK SIZE configTOTAL HEAP SIZE configUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)

Alan Kharsansky, Mario Azcueta ()

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

47 / 114

LPCXpresso + FreeRTOS

Configuraci´ on

Los aspectos m´s importantes que debemos configurar son: configUSE PREEMPTION configUSE XXXX HOOK (diferentes hooks) configMAX PRIORITIES configCPU CLOCK HZ configTICK RATE HZ configMINIMAL STACK SIZE configTOTAL HEAP SIZE configUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)

Alan Kharsansky, Mario Azcueta ()

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

47 / 114

LPCXpresso + FreeRTOS

Configuraci´ on

Los aspectos m´s importantes que debemos configurar son: configUSE PREEMPTION configUSE XXXX HOOK (diferentes hooks) configMAX PRIORITIES configCPU CLOCK HZ configTICK RATE HZ configMINIMAL STACK SIZE configTOTAL HEAP SIZE configUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)

Alan Kharsansky, Mario Azcueta ()

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

47 / 114

LPCXpresso + FreeRTOS

Configuraci´ on

Los aspectos m´s importantes que debemos configurar son: configUSE PREEMPTION configUSE XXXX HOOK (diferentes hooks) configMAX PRIORITIES configCPU CLOCK HZ configTICK RATE HZ configMINIMAL STACK SIZE configTOTAL HEAP SIZE configUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)

Alan Kharsansky, Mario Azcueta ()

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

47 / 114

LPCXpresso + FreeRTOS

Configuraci´ on

Los aspectos m´s importantes que debemos configurar son: configUSE PREEMPTION configUSE XXXX HOOK (diferentes hooks) configMAX PRIORITIES configCPU CLOCK HZ configTICK RATE HZ configMINIMAL STACK SIZE configTOTAL HEAP SIZE configUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)

Alan Kharsansky, Mario Azcueta ()

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

47 / 114

LPCXpresso + FreeRTOS

Configuraci´ on

Los aspectos m´s importantes que debemos configurar son: configUSE PREEMPTION configUSE XXXX HOOK (diferentes hooks) configMAX PRIORITIES configCPU CLOCK HZ configTICK RATE HZ configMINIMAL STACK SIZE configTOTAL HEAP SIZE configUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)

Alan Kharsansky, Mario Azcueta ()

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

47 / 114

LPCXpresso + FreeRTOS

Configuraci´ on

Los aspectos m´s importantes que debemos configurar son: configUSE PREEMPTION configUSE XXXX HOOK (diferentes hooks) configMAX PRIORITIES configCPU CLOCK HZ configTICK RATE HZ configMINIMAL STACK SIZE configTOTAL HEAP SIZE configUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)

Alan Kharsansky, Mario Azcueta ()

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

47 / 114

LPCXpresso + FreeRTOS

Configuraci´ on

Los aspectos m´s importantes que debemos configurar son: configUSE PREEMPTION configUSE XXXX HOOK (diferentes hooks) configMAX PRIORITIES configCPU CLOCK HZ configTICK RATE HZ configMINIMAL STACK SIZE configTOTAL HEAP SIZE configUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)

Alan Kharsansky, Mario Azcueta ()

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

47 / 114

LPCXpresso + FreeRTOS

Configuraci´ on

Los aspectos m´s importantes que debemos configurar son: configUSE PREEMPTION configUSE XXXX HOOK (diferentes hooks) configMAX PRIORITIES configCPU CLOCK HZ configTICK RATE HZ configMINIMAL STACK SIZE configTOTAL HEAP SIZE configUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)

Alan Kharsansky, Mario Azcueta ()

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

47 / 114

LPCXpresso + FreeRTOS

Configuraci´ on

Total Heap Size El freeRTOS utiliza este HEAP para almacenar el TCB y los diferentes STACKs de las tareas. Tambi´en lo usar´a para guardar en memoria semaforos, mutex, etc.

Alan Kharsansky, Mario Azcueta ()

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

48 / 114

LPCXpresso + FreeRTOS

Instalaci´ on

Subsection 3 Instalaci´on

Alan Kharsansky, Mario Azcueta ()

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

49 / 114

LPCXpresso + FreeRTOS

Alan Kharsansky, Mario Azcueta ()

Instalaci´ on

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

50 / 114

LPCXpresso + FreeRTOS

Instalaci´ on

No! es m´as facil. Simplemente tenemos que compilar la biblioteca (CONFIGURADA) de FreeRTOS y linkearla con nuestro proyecto. Luego hay que hacer algunas modificaciones al c´ odigo generado por LPCXpresso.

Alan Kharsansky, Mario Azcueta ()

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

51 / 114

LPCXpresso + FreeRTOS

Instalaci´ on

Tabla de Handlers (IRQ) attribute (( section (” . i s r v e c t o r ” ))) v o i d (∗ c o n s t g p f n V e c t o r s [ ] ) ( v o i d ) = { // C o r e L e v e l − CM3 ( v o i d ∗)& v S t a c k T o p , Reset Handler , NMI Handler , HardFault Handler , MemManage Handler , BusFault Handler , UsageFault Handler , 0, 0, 0, 0, SVCall Handler , DebugMon Handler , 0 PendSV Handler , SysTick Handler ,

attribute (( section (” . i s r v e c t o r ” ))) v o i d (∗ c o n s t g p f n V e c t o r s [ ] ) ( v o i d ) = { // C o r e L e v e l − CM3 ( v o i d ∗)& v S t a c k T o p , Reset Handler , NMI Handler , HardFault Handler , MemManage Handler , BusFault Handler , UsageFault Handler , 0, 0, 0, 0, vPortSVCHandler , DebugMon Handler , 0 xPortPendSVHandler , xPortSysTickHandler ,

// C h i p L e v e l − LPC17 WDT IRQHandler , TIMER0 IRQHandler , TIMER1 IRQHandler , ......

// C h i p L e v e l − LPC17 WDT IRQHandler , TIMER0 IRQHandler , TIMER1 IRQHandler , ......

Alan Kharsansky, Mario Azcueta ()

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

52 / 114

Estructura de una aplicaci´ on

Esquema

Section 4 Estructura de una aplicaci´on

Alan Kharsansky, Mario Azcueta ()

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

53 / 114

Estructura de una aplicaci´ on

Esquema

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

Alan Kharsansky, Mario Azcueta ()

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

54 / 114

Estructura de una aplicaci´ on

Esquema

// FreeRTOS i n c l u d e s #i n c l u d e ”FreeRTOS . h” #i n c l u d e ” t a s k . h” i n t main ( v o i d ) { // C r e o l a s t a r e a s x T a s k C r e a t e ( UART Driver , ”UART” , 2 0 0 , NULL , 3 , NULL ) ; x T a s k C r e a t e ( t e s t 1 , ”TEST” , 2 0 0 , NULL , 1 , NULL ) ; x T a s k C r e a t e (LCD , ”LCD” , 2 0 0 , NULL , 2 , NULL ) ; // I n i c i o e l s c h e d u l e r vTaskStartScheduler ( ) ; // Nunca l l e g o a c a for ( ; ; ); return 0; }

Alan Kharsansky, Mario Azcueta ()

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

55 / 114

Estructura de una aplicaci´ on

Esquema

¿C´omo es una tarea? v o i d miTarea ( v o i d ∗ p v P a r a m e t e r s ) { int i ; // C o s a s que s e t e n g a n que h a c e r s o l o una v e z // Loop p r i n c i p a l for (;;){ f o r ( i =0; i

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.