Académique Documents
Professionnel Documents
Culture Documents
4 - Marzo - 2011
1 / 114
Introduccin LPCXpresso o
Introduccin o
2 / 114
Introduccin LPCXpresso o
Introduccin o
Introduccin o
El LPCXpresso es un toolchain completo para evaluacin y desarrollo con o microcontroladores de NXP. Esta compuesto por: LPCXpresso IDE y development tools
IDE basado en Eclipse Compiler y linker GNU GDB debugger
3 / 114
Introduccin LPCXpresso o
Introduccin o
Introduccin o
El LPCXpresso es un toolchain completo para evaluacin y desarrollo con o microcontroladores de NXP. Esta compuesto por: LPCXpresso IDE y development tools
IDE basado en Eclipse Compiler y linker GNU GDB debugger
3 / 114
Introduccin LPCXpresso o
Introduccin o
Introduccin o
El LPCXpresso es un toolchain completo para evaluacin y desarrollo con o microcontroladores de NXP. Esta compuesto por: LPCXpresso IDE y development tools
IDE basado en Eclipse Compiler y linker GNU GDB debugger
3 / 114
Introduccin LPCXpresso o
Introduccin o
Introduccin o
El LPCXpresso es un toolchain completo para evaluacin y desarrollo con o microcontroladores de NXP. Esta compuesto por: LPCXpresso IDE y development tools
IDE basado en Eclipse Compiler y linker GNU GDB debugger
3 / 114
Introduccin LPCXpresso o
El target board es un un microcontrolador con todo lo necesario para encender y tambin una herramienta que incluye un programador y e debugger.
4 / 114
Introduccin LPCXpresso o
5 / 114
Introduccin LPCXpresso o
Del lado del target este incluye algunos perifricos bsicos y se e a comercializan con diferentes micrcontroladores. Por el momento se encuentran disponibles: LPC1114: ARM Cortex-M0, 32KB ash, 4/8KB SRAM LPC1343: ARM Cortex-M3, 32KB ash, 8K SRAM, USB LPC1768: ARM Cortex-M3, 512KB ash, 64KB SRAM, Ethernet, USB On the go.
6 / 114
Introduccin LPCXpresso o
7 / 114
Introduccin LPCXpresso o
BaseBoard
LPCXpresso BaseBoard
El BeseBoard fue diseado por Embedded Artists Junto con NXP. Permite n conectarle un MBed o un LPCXpresso Target.
8 / 114
Introduccin LPCXpresso o
BaseBoard
LPCXpresso BaseBoard
9 / 114
Introduccin LPCXpresso o
BaseBoard
LPCXpresso BaseBoard
10 / 114
Introduccin LPCXpresso o
BaseBoard
LPCXpresso BaseBoard
Continuacin: o
Serial - SPI: Shift register driving 7-segment LED SD/MMC memory card interface Dataash SPI-NOR ash Serial - I2C: PCA9532 port expander connected to 16 LEDs 8kbit E2PROM MMA7455L accelerometer with I2C interface Light sensor Extras CAN bus interface (can be simulated with LPCXpresso LPC1114/LPC1343) Ethernet RJ45 connector with integrated magnetic Serial - I2C/SPI SC16IS752 - I2C/SPI to 2xUART bridge; connected to RS232 full-modem interface and one expansion UART 96x64 pixel white OLED (alternative I2C/SPI interface)
11 / 114
Introduccin LPCXpresso o
BaseBoard
Informacin adicional o
LPCXpresso 1768 Target board: Esquemticos a LPCXpresso BaseBoard: Gu de usuario a LPCXpresso BaseBoard: Esquemticos a
Ver Ver
12 / 114
Introduccin LPCXpresso o
LPCXpresso IDE
13 / 114
Introduccin LPCXpresso o
LPCXpresso IDE
Eclipse utiliza algunos conceptos que no siempre son comunes a otros entornos de desarrollo por lo que vamos a ver algunos de ellos.
rkspace Es el contenedor de nuestros proyectos. Estos proyectos pueden ser aplicaciones y/o bibliotecas. Tambin almacena todas las conguraciones del entorno por lo e que se puede mover muy fcilmente de computadora en computadora. a
royecto Este puede ser de dos tipos. Biblioteca esttica o una aplicacin ejecutable. a o Contiene archivos de cdigo fuente (.c), encabezados (.h) y cualquier otro archivo o que se desee. En general utilizaremos el workspace para intercambiar proyectos (en el sentido convencional de la palabra) ya que el mismo inclu todas las bibliotecas necesarias. ra
14 / 114
Introduccin LPCXpresso o
LPCXpresso IDE
Tipos de proyectos
15 / 114
Introduccin LPCXpresso o
LPCXpresso IDE
Para ejemplicar pensemos en un ejemplo de un sistema embebido: un reproductor de MP3. Este podr estar compuesto por una memoria SD, a una pantalla tctil y un decodicaro de MP3. Todos estos perifricos estn a e a controlados por un microcontrolador, por ejemplo un LPC1768.
16 / 114
Introduccin LPCXpresso o
LPCXpresso IDE
17 / 114
Introduccin LPCXpresso o
LPCXpresso IDE
17 / 114
Introduccin LPCXpresso o
LPCXpresso IDE
17 / 114
Introduccin LPCXpresso o
LPCXpresso IDE
17 / 114
Introduccin LPCXpresso o
LPCXpresso IDE
17 / 114
Introduccin LPCXpresso o
LPCXpresso IDE
17 / 114
Conceptos de RTOS
18 / 114
Conceptos de RTOS
Qu es? e
RTOS - Qu es? e
Un RTOS (Real Time Operating System) es un programa que se encarga de: Ordenar con precisin el tiempo de ejecucin de las tareas o o Administrar los recursos del sistema como tiempo de uso de procesador, memoria, etc. Proveer una base consistente para el desarrollo del cdigo o
19 / 114
Conceptos de RTOS
Qu es? e
RTOS - Qu es? e
Un RTOS (Real Time Operating System) es un programa que se encarga de: Ordenar con precisin el tiempo de ejecucin de las tareas o o Administrar los recursos del sistema como tiempo de uso de procesador, memoria, etc. Proveer una base consistente para el desarrollo del cdigo o
19 / 114
Conceptos de RTOS
Qu es? e
RTOS - Qu es? e
Un RTOS (Real Time Operating System) es un programa que se encarga de: Ordenar con precisin el tiempo de ejecucin de las tareas o o Administrar los recursos del sistema como tiempo de uso de procesador, memoria, etc. Proveer una base consistente para el desarrollo del cdigo o
19 / 114
Conceptos de RTOS
Qu es? e
RTOS - Qu es? e
Un RTOS (Real Time Operating System) es un programa que se encarga de: Ordenar con precisin el tiempo de ejecucin de las tareas o o Administrar los recursos del sistema como tiempo de uso de procesador, memoria, etc. Proveer una base consistente para el desarrollo del cdigo o
19 / 114
Conceptos de RTOS
Qu es? e
RTOS - Qu es? e
Las aplicaciones que utilizan un RTOS son diversas:
20 / 114
Conceptos de RTOS
Qu es? e
RTOS - Qu es? e
Las aplicaciones que utilizan un RTOS son diversas:
20 / 114
Conceptos de RTOS
Qu es? e
RTOS - Qu es? e
Las aplicaciones que utilizan un RTOS son diversas:
20 / 114
Conceptos de RTOS
Qu es? e
RTOS - Qu es? e
Las aplicaciones que utilizan un RTOS son diversas:
20 / 114
Conceptos de RTOS
Qu es? e
RTOS - Qu es? e
Las aplicaciones que utilizan un RTOS son diversas:
20 / 114
Conceptos de RTOS
Qu es? e
RTOS - Qu es? e
TAREAS CONCURRENTES
El RTOS crea la ilusin de mltiples tareas ejecutndose en simultneo. o u a a
21 / 114
Conceptos de RTOS
Qu es? e
RTOS - Qu es? e
TAREAS CONCURRENTES
El RTOS crea la ilusin de mltiples tareas ejecutndose en simultneo. o u a a
21 / 114
Conceptos de RTOS
Qu es? e
RTOS - Qu es? e
TAREAS CONCURRENTES
El RTOS crea la ilusin de mltiples tareas ejecutndose en simultneo. o u a a
21 / 114
Conceptos de RTOS
Qu es? e
RTOS - Qu es? e
El RTOS se sita entre la capa BSP u (Board Support Package, o port) y la capa de aplicacin. o Puede incluir varios mdulos o (protocolos de red, sistema de archivos, etc.)
22 / 114
Conceptos de RTOS
Qu es? e
RTOS - Qu es? e
El RTOS se sita entre la capa BSP u (Board Support Package, o port) y la capa de aplicacin. o Puede incluir varios mdulos o (protocolos de red, sistema de archivos, etc.)
22 / 114
Conceptos de RTOS
Componentes
RTOS - Componentes
Los componentes de un RTOS pueden clasicarse ampliamente en 3 grupos: Scheduler: maneja los hilos de ejecucin de las tareas. o Objetos: tareas, colas, semforos, etc. a Servicios: operaciones realizadas sobre los objetos (manejo de interrupciones, de memoria, etc.)
23 / 114
Conceptos de RTOS
Componentes
RTOS - Componentes
Los componentes de un RTOS pueden clasicarse ampliamente en 3 grupos: Scheduler: maneja los hilos de ejecucin de las tareas. o Objetos: tareas, colas, semforos, etc. a Servicios: operaciones realizadas sobre los objetos (manejo de interrupciones, de memoria, etc.)
23 / 114
Conceptos de RTOS
Componentes
RTOS - Componentes
Los componentes de un RTOS pueden clasicarse ampliamente en 3 grupos: Scheduler: maneja los hilos de ejecucin de las tareas. o Objetos: tareas, colas, semforos, etc. a Servicios: operaciones realizadas sobre los objetos (manejo de interrupciones, de memoria, etc.)
23 / 114
Conceptos de RTOS
Componentes
RTOS - Componentes
Los componentes de un RTOS pueden clasicarse ampliamente en 3 grupos: Scheduler: maneja los hilos de ejecucin de las tareas. o Objetos: tareas, colas, semforos, etc. a Servicios: operaciones realizadas sobre los objetos (manejo de interrupciones, de memoria, etc.)
23 / 114
Conceptos de RTOS
Componentes
RTOS - Scheduler
El Scheduler determina cundo se ejecutar cada tarea. Existen diferentes a a esquemas de scheduling: Cooperativo: La tarea en ejecucin cede el uso de CPU a otra o voluntariamente. Preemptive: La tarea en ejecucin cede el uso de CPU a otra por o orden del scheduler.
Priority-Based: Se asignan prioridades a las tareas para acceder al uso de CPU. Round-Robin: Se asigna un tiempo jo de uso de CPU a cada tarea en orden circular. Puede combinarse con el uso de prioridades.
24 / 114
Conceptos de RTOS
Componentes
RTOS - Scheduler
El Scheduler determina cundo se ejecutar cada tarea. Existen diferentes a a esquemas de scheduling: Cooperativo: La tarea en ejecucin cede el uso de CPU a otra o voluntariamente. Preemptive: La tarea en ejecucin cede el uso de CPU a otra por o orden del scheduler.
Priority-Based: Se asignan prioridades a las tareas para acceder al uso de CPU. Round-Robin: Se asigna un tiempo jo de uso de CPU a cada tarea en orden circular. Puede combinarse con el uso de prioridades.
24 / 114
Conceptos de RTOS
Componentes
RTOS - Scheduler
El Scheduler determina cundo se ejecutar cada tarea. Existen diferentes a a esquemas de scheduling: Cooperativo: La tarea en ejecucin cede el uso de CPU a otra o voluntariamente. Preemptive: La tarea en ejecucin cede el uso de CPU a otra por o orden del scheduler.
Priority-Based: Se asignan prioridades a las tareas para acceder al uso de CPU. Round-Robin: Se asigna un tiempo jo de uso de CPU a cada tarea en orden circular. Puede combinarse con el uso de prioridades.
24 / 114
Conceptos de RTOS
Componentes
RTOS - Scheduler
El Scheduler determina cundo se ejecutar cada tarea. Existen diferentes a a esquemas de scheduling: Cooperativo: La tarea en ejecucin cede el uso de CPU a otra o voluntariamente. Preemptive: La tarea en ejecucin cede el uso de CPU a otra por o orden del scheduler.
Priority-Based: Se asignan prioridades a las tareas para acceder al uso de CPU. Round-Robin: Se asigna un tiempo jo de uso de CPU a cada tarea en orden circular. Puede combinarse con el uso de prioridades.
24 / 114
Conceptos de RTOS
Componentes
RTOS - Scheduler
El Scheduler determina cundo se ejecutar cada tarea. Existen diferentes a a esquemas de scheduling: Cooperativo: La tarea en ejecucin cede el uso de CPU a otra o voluntariamente. Preemptive: La tarea en ejecucin cede el uso de CPU a otra por o orden del scheduler.
Priority-Based: Se asignan prioridades a las tareas para acceder al uso de CPU. Round-Robin: Se asigna un tiempo jo de uso de CPU a cada tarea en orden circular. Puede combinarse con el uso de prioridades.
24 / 114
Conceptos de RTOS
Componentes
RTOS - Scheduler
25 / 114
Conceptos de RTOS
Componentes
RTOS - Scheduler
26 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Una tarea es un hilo de ejecucin independiente que puede competir o con otras tareas por tiempo de ejecucin. o Pueden ser creadas y eliminadas en tiempo de ejecucin. o
27 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Una tarea es un hilo de ejecucin independiente que puede competir o con otras tareas por tiempo de ejecucin. o Pueden ser creadas y eliminadas en tiempo de ejecucin. o
27 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Se compone de: Nombre/ID Prioridad (esquema preemptive) Stack Rutina (cdigo) o Bloque de control
28 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Se compone de: Nombre/ID Prioridad (esquema preemptive) Stack Rutina (cdigo) o Bloque de control
28 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Se compone de: Nombre/ID Prioridad (esquema preemptive) Stack Rutina (cdigo) o Bloque de control
28 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Se compone de: Nombre/ID Prioridad (esquema preemptive) Stack Rutina (cdigo) o Bloque de control
28 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Se compone de: Nombre/ID Prioridad (esquema preemptive) Stack Rutina (cdigo) o Bloque de control
28 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Se compone de: Nombre/ID Prioridad (esquema preemptive) Stack Rutina (cdigo) o Bloque de control
28 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Algunos ejemplos de tareas: Inicializacin del sistema (ejecuta solo una vez) o Filtrar una seal (posiblemente peridica) n o Mostrar en pantalla (puede activarse ante un evento) Tarea idle Las tareas pueden tener diferentes requerimientos de temporizacin. o
29 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Algunos ejemplos de tareas: Inicializacin del sistema (ejecuta solo una vez) o Filtrar una seal (posiblemente peridica) n o Mostrar en pantalla (puede activarse ante un evento) Tarea idle Las tareas pueden tener diferentes requerimientos de temporizacin. o
29 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Algunos ejemplos de tareas: Inicializacin del sistema (ejecuta solo una vez) o Filtrar una seal (posiblemente peridica) n o Mostrar en pantalla (puede activarse ante un evento) Tarea idle Las tareas pueden tener diferentes requerimientos de temporizacin. o
29 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Algunos ejemplos de tareas: Inicializacin del sistema (ejecuta solo una vez) o Filtrar una seal (posiblemente peridica) n o Mostrar en pantalla (puede activarse ante un evento) Tarea idle Las tareas pueden tener diferentes requerimientos de temporizacin. o
29 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Algunos ejemplos de tareas: Inicializacin del sistema (ejecuta solo una vez) o Filtrar una seal (posiblemente peridica) n o Mostrar en pantalla (puede activarse ante un evento) Tarea idle Las tareas pueden tener diferentes requerimientos de temporizacin. o
29 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Algunos ejemplos de tareas: Inicializacin del sistema (ejecuta solo una vez) o Filtrar una seal (posiblemente peridica) n o Mostrar en pantalla (puede activarse ante un evento) Tarea idle Las tareas pueden tener diferentes requerimientos de temporizacin. o
29 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Los estados posibles de una tarea son: Ready: compite por tiempo de ejecucin o Running: tarea activa Blocked: esperando pasar a Ready (podr activarse ante un a evento o cuando pase cierto tiempo)
30 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Los estados posibles de una tarea son: Ready: compite por tiempo de ejecucin o Running: tarea activa Blocked: esperando pasar a Ready (podr activarse ante un a evento o cuando pase cierto tiempo)
30 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Los estados posibles de una tarea son: Ready: compite por tiempo de ejecucin o Running: tarea activa Blocked: esperando pasar a Ready (podr activarse ante un a evento o cuando pase cierto tiempo)
30 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
Los estados posibles de una tarea son: Ready: compite por tiempo de ejecucin o Running: tarea activa Blocked: esperando pasar a Ready (podr activarse ante un a evento o cuando pase cierto tiempo)
30 / 114
Conceptos de RTOS
Componentes
RTOS - Tareas
31 / 114
Conceptos de RTOS
Componentes
RTOS - Colas
Su funcin principal es proveer un mecanismo de intercambio de datos o entre tareas. Son FIFO.
32 / 114
Conceptos de RTOS
Componentes
RTOS - Colas
Su funcin principal es proveer un mecanismo de intercambio de datos o entre tareas. Son FIFO.
32 / 114
Conceptos de RTOS
Componentes
RTOS - Colas
Su funcin principal es proveer un mecanismo de intercambio de datos o entre tareas. Son FIFO.
32 / 114
Conceptos de RTOS
Componentes
RTOS - Colas
Su funcin principal es proveer un mecanismo de intercambio de datos o entre tareas. Son FIFO.
32 / 114
Conceptos de RTOS
Componentes
RTOS - Colas
33 / 114
Conceptos de RTOS
Componentes
RTOS - Colas
Varias tareas pueden acceder a una misma cola. Una tarea puede elegir bloquearse si su cola est vac Al llegar un a a. elemento, automticamente pasa a Ready. a
33 / 114
Conceptos de RTOS
Componentes
RTOS - Colas
Varias tareas pueden acceder a una misma cola. Una tarea puede elegir bloquearse si su cola est vac Al llegar un a a. elemento, automticamente pasa a Ready. a Cuidado! Cargar datos en una cola causa una copia de los datos en memoria. Puede ser conveniente pasar un puntero.
33 / 114
Conceptos de RTOS
Componentes
RTOS - Semforos a
Son objetos como las colas. Pueden ser creados y destruidos. Su funcin o principal es proveer un mecanismo de sincronizacin entre tareas. o
Ejemplo: acceder a un recurso (como escribir en una pantalla): Para acceder al recurso la tarea pide el semforo a Si est disponible, toma el semforo y realiza la operacin. a a o Al terminar, lo libera para que otros puedan acceder.
Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 434 / 114
Conceptos de RTOS
Componentes
RTOS - Semforos a
Son objetos como las colas. Pueden ser creados y destruidos. Su funcin o principal es proveer un mecanismo de sincronizacin entre tareas. o
Ejemplo: acceder a un recurso (como escribir en una pantalla): Para acceder al recurso la tarea pide el semforo a Si est disponible, toma el semforo y realiza la operacin. a a o Al terminar, lo libera para que otros puedan acceder.
Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 434 / 114
Conceptos de RTOS
Componentes
RTOS - Semforos a
Tambin pueden utilizarse para disparar un handler ante una interrupcin e o La Tarea 1 est activa hasta que a en t2 ocurre una interrupcin. o El ISR se ejecuta y cede un semforo asociado al Handler en a t3. El Handler se desbloquea y toma el semforo, de la misma a manera que si le llegara un dato por una cola.
35 / 114
Conceptos de RTOS
Componentes
RTOS - Semforos a
El Handler ejecuta su rutina dentro de un for( ;;) y cuando termina quiere volver a tomar el semforo. a Como no hubo otra interrupcin o que cediera un semforo, el a Handler se bloquea y vuelve el control a la Tarea 1 en t4.
36 / 114
Conceptos de RTOS
Componentes
RTOS - Semforos a
Los recin descriptos se conocen como semforos binarios (tienen 2 e a estados). Existen otros mtodos de sincronizacin: e o Semforos de conteo: pueden tomarse o liberarse ms de una vez. a a Mutex: similares a los semforos binarios pero con funciones a adicionales (como herencia de prioridades).
37 / 114
Conceptos de RTOS
Componentes
RTOS - Semforos a
Los recin descriptos se conocen como semforos binarios (tienen 2 e a estados). Existen otros mtodos de sincronizacin: e o Semforos de conteo: pueden tomarse o liberarse ms de una vez. a a Mutex: similares a los semforos binarios pero con funciones a adicionales (como herencia de prioridades).
37 / 114
Conceptos de RTOS
Componentes
RTOS - Semforos a
Los recin descriptos se conocen como semforos binarios (tienen 2 e a estados). Existen otros mtodos de sincronizacin: e o Semforos de conteo: pueden tomarse o liberarse ms de una vez. a a Mutex: similares a los semforos binarios pero con funciones a adicionales (como herencia de prioridades).
37 / 114
Conceptos de RTOS
Utilidad
38 / 114
Conceptos de RTOS
Utilidad
38 / 114
Conceptos de RTOS
Utilidad
38 / 114
Conceptos de RTOS
Utilidad
38 / 114
Conceptos de RTOS
Utilidad
38 / 114
Conceptos de RTOS
Utilidad
38 / 114
Conceptos de RTOS
Utilidad
38 / 114
Conceptos de RTOS
Utilidad
38 / 114
Conceptos de RTOS
Utilidad
38 / 114
Conceptos de RTOS
Utilidad
Existen varias razones por las cuales usar un RTOS: Mejoran la escalabilidad Facilitan la portabilidad Mejoran la mantenibilidad Reducen la incertidumbre etc...
39 / 114
Conceptos de RTOS
Utilidad
Existen varias razones por las cuales usar un RTOS: Mejoran la escalabilidad Facilitan la portabilidad Mejoran la mantenibilidad Reducen la incertidumbre etc...
39 / 114
Conceptos de RTOS
Utilidad
Existen varias razones por las cuales usar un RTOS: Mejoran la escalabilidad Facilitan la portabilidad Mejoran la mantenibilidad Reducen la incertidumbre etc...
39 / 114
Conceptos de RTOS
Utilidad
Existen varias razones por las cuales usar un RTOS: Mejoran la escalabilidad Facilitan la portabilidad Mejoran la mantenibilidad Reducen la incertidumbre etc...
39 / 114
Conceptos de RTOS
Utilidad
FreeRTOS
Por qu decidimos usar FreeRTOS: e Es de cdigo abierto o
Cdigo ampliamente comentado o Sencillo de portar (existen ms de 23 ports) a
Ocupa poco espacio en ash (5KB) necesita poca RAM (5KB + Heap) y el overhead que introduce es m nimo (entre 1% y 4% del tiempo de CPU) a cambio de una gran utilidad. Ampliamente documentado Existe una comunidad de usuarios importante Libre de regal Puede ser usado en aplicaciones comerciales bajo as. licencia GNU versin 2. o
40 / 114
Conceptos de RTOS
Utilidad
FreeRTOS
Por qu decidimos usar FreeRTOS: e Es de cdigo abierto o
Cdigo ampliamente comentado o Sencillo de portar (existen ms de 23 ports) a
Ocupa poco espacio en ash (5KB) necesita poca RAM (5KB + Heap) y el overhead que introduce es m nimo (entre 1% y 4% del tiempo de CPU) a cambio de una gran utilidad. Ampliamente documentado Existe una comunidad de usuarios importante Libre de regal Puede ser usado en aplicaciones comerciales bajo as. licencia GNU versin 2. o
40 / 114
Conceptos de RTOS
Utilidad
FreeRTOS
Por qu decidimos usar FreeRTOS: e Es de cdigo abierto o
Cdigo ampliamente comentado o Sencillo de portar (existen ms de 23 ports) a
Ocupa poco espacio en ash (5KB) necesita poca RAM (5KB + Heap) y el overhead que introduce es m nimo (entre 1% y 4% del tiempo de CPU) a cambio de una gran utilidad. Ampliamente documentado Existe una comunidad de usuarios importante Libre de regal Puede ser usado en aplicaciones comerciales bajo as. licencia GNU versin 2. o
40 / 114
Conceptos de RTOS
Utilidad
FreeRTOS
Por qu decidimos usar FreeRTOS: e Es de cdigo abierto o
Cdigo ampliamente comentado o Sencillo de portar (existen ms de 23 ports) a
Ocupa poco espacio en ash (5KB) necesita poca RAM (5KB + Heap) y el overhead que introduce es m nimo (entre 1% y 4% del tiempo de CPU) a cambio de una gran utilidad. Ampliamente documentado Existe una comunidad de usuarios importante Libre de regal Puede ser usado en aplicaciones comerciales bajo as. licencia GNU versin 2. o
40 / 114
Conceptos de RTOS
Utilidad
FreeRTOS
Por qu decidimos usar FreeRTOS: e Es de cdigo abierto o
Cdigo ampliamente comentado o Sencillo de portar (existen ms de 23 ports) a
Ocupa poco espacio en ash (5KB) necesita poca RAM (5KB + Heap) y el overhead que introduce es m nimo (entre 1% y 4% del tiempo de CPU) a cambio de una gran utilidad. Ampliamente documentado Existe una comunidad de usuarios importante Libre de regal Puede ser usado en aplicaciones comerciales bajo as. licencia GNU versin 2. o
40 / 114
Conceptos de RTOS
Utilidad
FreeRTOS
Por qu decidimos usar FreeRTOS: e Es de cdigo abierto o
Cdigo ampliamente comentado o Sencillo de portar (existen ms de 23 ports) a
Ocupa poco espacio en ash (5KB) necesita poca RAM (5KB + Heap) y el overhead que introduce es m nimo (entre 1% y 4% del tiempo de CPU) a cambio de una gran utilidad. Ampliamente documentado Existe una comunidad de usuarios importante Libre de regal Puede ser usado en aplicaciones comerciales bajo as. licencia GNU versin 2. o
40 / 114
Conceptos de RTOS
Utilidad
FreeRTOS
Por qu decidimos usar FreeRTOS: e Es de cdigo abierto o
Cdigo ampliamente comentado o Sencillo de portar (existen ms de 23 ports) a
Ocupa poco espacio en ash (5KB) necesita poca RAM (5KB + Heap) y el overhead que introduce es m nimo (entre 1% y 4% del tiempo de CPU) a cambio de una gran utilidad. Ampliamente documentado Existe una comunidad de usuarios importante Libre de regal Puede ser usado en aplicaciones comerciales bajo as. licencia GNU versin 2. o
40 / 114
Conceptos de RTOS
Utilidad
FreeRTOS
Por qu decidimos usar FreeRTOS: e Es de cdigo abierto o
Cdigo ampliamente comentado o Sencillo de portar (existen ms de 23 ports) a
Ocupa poco espacio en ash (5KB) necesita poca RAM (5KB + Heap) y el overhead que introduce es m nimo (entre 1% y 4% del tiempo de CPU) a cambio de una gran utilidad. Ampliamente documentado Existe una comunidad de usuarios importante Libre de regal Puede ser usado en aplicaciones comerciales bajo as. licencia GNU versin 2. o
40 / 114
Conceptos de RTOS
Utilidad
FreeRTOS
Existen tambin otras licencias para este RTOS: e Existe una licencia comercial con soporte ocial y garant legales as (OpenRTOS). Existe una licencia certicada SIL3 para aplicaciones cr ticas (SafeRTOS). La versin FreeRTOS 6.0.0 portada a Cortex-M3 soporta MPU o (Memory Protection Unit).
41 / 114
Conceptos de RTOS
Utilidad
FreeRTOS
Existen tambin otras licencias para este RTOS: e Existe una licencia comercial con soporte ocial y garant legales as (OpenRTOS). Existe una licencia certicada SIL3 para aplicaciones cr ticas (SafeRTOS). La versin FreeRTOS 6.0.0 portada a Cortex-M3 soporta MPU o (Memory Protection Unit).
41 / 114
Conceptos de RTOS
Utilidad
FreeRTOS
Existen tambin otras licencias para este RTOS: e Existe una licencia comercial con soporte ocial y garant legales as (OpenRTOS). Existe una licencia certicada SIL3 para aplicaciones cr ticas (SafeRTOS). La versin FreeRTOS 6.0.0 portada a Cortex-M3 soporta MPU o (Memory Protection Unit).
41 / 114
Conceptos de RTOS
Utilidad
FreeRTOS
Existen tambin otras licencias para este RTOS: e Existe una licencia comercial con soporte ocial y garant legales as (OpenRTOS). Existe una licencia certicada SIL3 para aplicaciones cr ticas (SafeRTOS). La versin FreeRTOS 6.0.0 portada a Cortex-M3 soporta MPU o (Memory Protection Unit).
41 / 114
LPCXpresso + FreeRTOS
Distribucin o
42 / 114
LPCXpresso + FreeRTOS
Distribucin o
Es recomendable tener un workspace para cada proyecto que realicemos. En l conguraremos el RTOS. La estructura del workspace podr ser: e a FreeRTOS Library Biblioteca de funciones 1 Biblioteca de funciones 2 Driver DAC ADC MP3 Player
43 / 114
LPCXpresso + FreeRTOS
Distribucin o
Es recomendable tener un workspace para cada proyecto que realicemos. En l conguraremos el RTOS. La estructura del workspace podr ser: e a FreeRTOS Library Biblioteca de funciones 1 Biblioteca de funciones 2 Driver DAC ADC MP3 Player
43 / 114
LPCXpresso + FreeRTOS
Distribucin o
Es recomendable tener un workspace para cada proyecto que realicemos. En l conguraremos el RTOS. La estructura del workspace podr ser: e a FreeRTOS Library Biblioteca de funciones 1 Biblioteca de funciones 2 Driver DAC ADC MP3 Player
43 / 114
LPCXpresso + FreeRTOS
Distribucin o
Es recomendable tener un workspace para cada proyecto que realicemos. En l conguraremos el RTOS. La estructura del workspace podr ser: e a FreeRTOS Library Biblioteca de funciones 1 Biblioteca de funciones 2 Driver DAC ADC MP3 Player
43 / 114
LPCXpresso + FreeRTOS
Distribucin o
Es recomendable tener un workspace para cada proyecto que realicemos. En l conguraremos el RTOS. La estructura del workspace podr ser: e a FreeRTOS Library Biblioteca de funciones 1 Biblioteca de funciones 2 Driver DAC ADC MP3 Player
43 / 114
LPCXpresso + FreeRTOS
Distribucin o
Include
FreeRTOSCong.h ...
44 / 114
LPCXpresso + FreeRTOS
Distribucin o
Include
FreeRTOSCong.h ...
44 / 114
LPCXpresso + FreeRTOS
Distribucin o
Include
FreeRTOSCong.h ...
44 / 114
LPCXpresso + FreeRTOS
Conguracin o
Antes de instalarlo en nuestro proyecto, debemos congurar el comportamiento del RTOS. Para ello freeRTOS provee un archivo FreeRTOScong.h en el que mediante macros podremos conurarlo.
45 / 114
LPCXpresso + FreeRTOS
Conguracin o
FreeRTOScong.h
46 / 114
LPCXpresso + FreeRTOS
Conguracin o
Los aspectos m importantes que debemos congurar son: s congUSE PREEMPTION congUSE XXXX HOOK (diferentes hooks) congMAX PRIORITIES congCPU CLOCK HZ congTICK RATE HZ congMINIMAL STACK SIZE congTOTAL HEAP SIZE congUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)
47 / 114
LPCXpresso + FreeRTOS
Conguracin o
Los aspectos m importantes que debemos congurar son: s congUSE PREEMPTION congUSE XXXX HOOK (diferentes hooks) congMAX PRIORITIES congCPU CLOCK HZ congTICK RATE HZ congMINIMAL STACK SIZE congTOTAL HEAP SIZE congUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)
47 / 114
LPCXpresso + FreeRTOS
Conguracin o
Los aspectos m importantes que debemos congurar son: s congUSE PREEMPTION congUSE XXXX HOOK (diferentes hooks) congMAX PRIORITIES congCPU CLOCK HZ congTICK RATE HZ congMINIMAL STACK SIZE congTOTAL HEAP SIZE congUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)
47 / 114
LPCXpresso + FreeRTOS
Conguracin o
Los aspectos m importantes que debemos congurar son: s congUSE PREEMPTION congUSE XXXX HOOK (diferentes hooks) congMAX PRIORITIES congCPU CLOCK HZ congTICK RATE HZ congMINIMAL STACK SIZE congTOTAL HEAP SIZE congUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)
47 / 114
LPCXpresso + FreeRTOS
Conguracin o
Los aspectos m importantes que debemos congurar son: s congUSE PREEMPTION congUSE XXXX HOOK (diferentes hooks) congMAX PRIORITIES congCPU CLOCK HZ congTICK RATE HZ congMINIMAL STACK SIZE congTOTAL HEAP SIZE congUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)
47 / 114
LPCXpresso + FreeRTOS
Conguracin o
Los aspectos m importantes que debemos congurar son: s congUSE PREEMPTION congUSE XXXX HOOK (diferentes hooks) congMAX PRIORITIES congCPU CLOCK HZ congTICK RATE HZ congMINIMAL STACK SIZE congTOTAL HEAP SIZE congUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)
47 / 114
LPCXpresso + FreeRTOS
Conguracin o
Los aspectos m importantes que debemos congurar son: s congUSE PREEMPTION congUSE XXXX HOOK (diferentes hooks) congMAX PRIORITIES congCPU CLOCK HZ congTICK RATE HZ congMINIMAL STACK SIZE congTOTAL HEAP SIZE congUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)
47 / 114
LPCXpresso + FreeRTOS
Conguracin o
Los aspectos m importantes que debemos congurar son: s congUSE PREEMPTION congUSE XXXX HOOK (diferentes hooks) congMAX PRIORITIES congCPU CLOCK HZ congTICK RATE HZ congMINIMAL STACK SIZE congTOTAL HEAP SIZE congUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)
47 / 114
LPCXpresso + FreeRTOS
Conguracin o
Los aspectos m importantes que debemos congurar son: s congUSE PREEMPTION congUSE XXXX HOOK (diferentes hooks) congMAX PRIORITIES congCPU CLOCK HZ congTICK RATE HZ congMINIMAL STACK SIZE congTOTAL HEAP SIZE congUSE XXXX (recursos: mutex, semaphoros) INCLUDE XXXXX (funciones especiales)
47 / 114
LPCXpresso + FreeRTOS
Conguracin o
48 / 114
LPCXpresso + FreeRTOS
Instalacin o
Subsection 3 Instalacin o
49 / 114
LPCXpresso + FreeRTOS
Instalacin o
50 / 114
LPCXpresso + FreeRTOS
Instalacin o
No! es ms facil. Simplemente tenemos que compilar la biblioteca a (CONFIGURADA) de FreeRTOS y linkearla con nuestro proyecto. Luego hay que hacer algunas modicaciones al cdigo generado por LPCXpresso. o
51 / 114
LPCXpresso + FreeRTOS
Instalacin o
52 / 114
Esquema
53 / 114
Esquema
Luego que ya tenemos instalado el freeRTOS, tenemos que crear tareas e inicializar el Scheduler. Entonces una aplicacin que utilice este RTOS o podr ser de la siguiente manera: a
54 / 114
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; }
55 / 114
Esquema
56 / 114
Esquema
Nuestra tarea como diseadores ahora es determinar que cosas de nuestras n aplicaciones sern tareas del sistema, que recursos de comunicacin y a o sincronizacin entre tareas tendremos que crear y cuales seran las o prioridades de las mismas.
57 / 114
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
58 / 114
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
58 / 114
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
58 / 114
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
58 / 114
Drivers
Generalidades
Section 5 Drivers
59 / 114
Drivers
Generalidades
Qu es un driver? e
Segun Wikipedia: es un programa informtico que permite al a sistema operativo interactuar con un perifrico, haciendo una e abstraccin del hardware y proporcionando una interfaz -posiblemente o estandarizada- para usarlo.
60 / 114
Drivers
Generalidades
Qu es un driver? e
Segun Linux: algo muy dif de instalar si no nos sirve el que viene. cil
61 / 114
Drivers
Generalidades
62 / 114
Drivers
Generalidades
Qu es un driver? e
Segun freeRTOS: una tarea como cualquier otra pero con un
63 / 114
Drivers
Justicacin o
64 / 114
Drivers
Ejemplo - UART
Si queremos utilizar la UART para mandar informacin desde nuestras o tareas podemos hacerlo de dos maneras: Sin drivers Con drivers
65 / 114
Drivers
Ejemplo - UART
66 / 114
Drivers
Ejemplo - UART
67 / 114
Drivers
Ejemplo - UART
68 / 114
Drivers
Ejemplo - UART
69 / 114
Drivers
Ejemplo - UART
70 / 114
Drivers
Ejemplo - UART
71 / 114
Drivers
Ejemplo - UART
72 / 114
Drivers
Ejemplo - UART
Y el resultado ser a:
73 / 114
Proling
Section 6 Proling
74 / 114
Proling
El freeRTOS provee algunas herramientas que permiten realizar mediciones del desempeo del sistema en tiempo real. Esto generalmente es llamado Proling y las herramientas son: Tracing RuntimeStats
75 / 114
Proling
Tracing
El freeRTOS nos permite rastrear que es lo que hace el Sistema Operativo. Por ejemplo: Cuando entra a una tarea Cuando sale de una tarea Cuando se produce un cambio de contexto
76 / 114
Proling
Tracing
Para utilizar las funciones de tracing, simplemente hay que habilitar el macro el el archivo FreeRTOSCong.h y luego denir las macros como por ejemplo:
#d e f i n e traceTASK SWITCHED OUT ( ) l o g e v e n t ( pxCurrentTCB ) ;
Podemos loggear estas acciones o sacarla por pines y verlas con un analizador lgico por ejemplo. o
77 / 114
Proling
La herramienta de Run Time stats nos permite ver cuanto tiempo de CPU est utilizando cada tarea. Se la congura en el archivo a FreeRTOSCong.h y al llamarla devuelve en un buer un reporte tipo texto. Notar que es necesario proveer al RTOS de un timer para llevar el paso del tiempo con mayor resolucion que el System Tick.
78 / 114
Proling
Donde los numeros representan la cantidad de tiempo utilizado en la resolucin del timer que se le haya congurado. Por ejemplo si se produce o un incremento cada 1uS entonces la salida es en microsegundos.
79 / 114
Ejemplo de aplicacin o
ECG Holter
80 / 114
Ejemplo de aplicacin o
ECG Holter
Un Holter card aco es un dispositivo mdico para grabar la seal de e n ECG durante 24 o 48 horas. Debe portarlo un paciente sin que afecte su vida diaria
Dimensiones reducidas Liviano Bajo consumo
81 / 114
Ejemplo de aplicacin o
ECG Holter
Un Holter card aco es un dispositivo mdico para grabar la seal de e n ECG durante 24 o 48 horas. Debe portarlo un paciente sin que afecte su vida diaria
Dimensiones reducidas Liviano Bajo consumo
81 / 114
Ejemplo de aplicacin o
ECG Holter
Un Holter card aco es un dispositivo mdico para grabar la seal de e n ECG durante 24 o 48 horas. Debe portarlo un paciente sin que afecte su vida diaria
Dimensiones reducidas Liviano Bajo consumo
81 / 114
Ejemplo de aplicacin o
ECG Holter
Un Holter card aco es un dispositivo mdico para grabar la seal de e n ECG durante 24 o 48 horas. Debe portarlo un paciente sin que afecte su vida diaria
Dimensiones reducidas Liviano Bajo consumo
81 / 114
Ejemplo de aplicacin o
ECG Holter
Un Holter card aco es un dispositivo mdico para grabar la seal de e n ECG durante 24 o 48 horas. Debe portarlo un paciente sin que afecte su vida diaria
Dimensiones reducidas Liviano Bajo consumo
81 / 114
Ejemplo de aplicacin o
ECG Holter
82 / 114
Ejemplo de aplicacin o
ECG Holter
82 / 114
Ejemplo de aplicacin o
ECG Holter
82 / 114
Ejemplo de aplicacin o
ECG Holter
Bsicamente el Holter consta de: a Display GLCD Touchscreen Interfaz analgica (ampli de instrumentacin y ltro LP) o o Tarjeta de memoria SD Microcontrolador LPC1768
Conversor A/D UART Funcionalidades para manejar los items anteriores
83 / 114
Ejemplo de aplicacin o
ECG Holter
Bsicamente el Holter consta de: a Display GLCD Touchscreen Interfaz analgica (ampli de instrumentacin y ltro LP) o o Tarjeta de memoria SD Microcontrolador LPC1768
Conversor A/D UART Funcionalidades para manejar los items anteriores
83 / 114
Ejemplo de aplicacin o
ECG Holter
Bsicamente el Holter consta de: a Display GLCD Touchscreen Interfaz analgica (ampli de instrumentacin y ltro LP) o o Tarjeta de memoria SD Microcontrolador LPC1768
Conversor A/D UART Funcionalidades para manejar los items anteriores
83 / 114
Ejemplo de aplicacin o
ECG Holter
Bsicamente el Holter consta de: a Display GLCD Touchscreen Interfaz analgica (ampli de instrumentacin y ltro LP) o o Tarjeta de memoria SD Microcontrolador LPC1768
Conversor A/D UART Funcionalidades para manejar los items anteriores
83 / 114
Ejemplo de aplicacin o
ECG Holter
Bsicamente el Holter consta de: a Display GLCD Touchscreen Interfaz analgica (ampli de instrumentacin y ltro LP) o o Tarjeta de memoria SD Microcontrolador LPC1768
Conversor A/D UART Funcionalidades para manejar los items anteriores
83 / 114
Ejemplo de aplicacin o
ECG Holter
Bsicamente el Holter consta de: a Display GLCD Touchscreen Interfaz analgica (ampli de instrumentacin y ltro LP) o o Tarjeta de memoria SD Microcontrolador LPC1768
Conversor A/D UART Funcionalidades para manejar los items anteriores
83 / 114
Ejemplo de aplicacin o
ECG Holter
Bsicamente el Holter consta de: a Display GLCD Touchscreen Interfaz analgica (ampli de instrumentacin y ltro LP) o o Tarjeta de memoria SD Microcontrolador LPC1768
Conversor A/D UART Funcionalidades para manejar los items anteriores
83 / 114
Ejemplo de aplicacin o
ECG Holter
Bsicamente el Holter consta de: a Display GLCD Touchscreen Interfaz analgica (ampli de instrumentacin y ltro LP) o o Tarjeta de memoria SD Microcontrolador LPC1768
Conversor A/D UART Funcionalidades para manejar los items anteriores
83 / 114
Ejemplo de aplicacin o
ECG Holter
84 / 114
Ejemplo de aplicacin o
ECG Holter
85 / 114
Ejemplo de aplicacin o
ECG Holter
Holter - GLCD
86 / 114
Ejemplo de aplicacin o
ECG Holter
Holter - GLCD
El refresco del GLCD lo realiza una tarea peridica cada 10 Hz. o Se basa en actualizar la RAM del controlador con el contenido de un framebuer. Un framebuer es un bloque de memoria reservado en la RAM del micro. Posee tantos bits como pixels el tenga el display Es un espejo de la imagen que se est mostrando...mejor dicho, lo a que se est mostrando es un espejo del framebuer. a
Cmo funciona? o
87 / 114
Ejemplo de aplicacin o
ECG Holter
Holter - GLCD
El refresco del GLCD lo realiza una tarea peridica cada 10 Hz. o Se basa en actualizar la RAM del controlador con el contenido de un framebuer. Un framebuer es un bloque de memoria reservado en la RAM del micro. Posee tantos bits como pixels el tenga el display Es un espejo de la imagen que se est mostrando...mejor dicho, lo a que se est mostrando es un espejo del framebuer. a
Cmo funciona? o
87 / 114
Ejemplo de aplicacin o
ECG Holter
Holter - GLCD
El refresco del GLCD lo realiza una tarea peridica cada 10 Hz. o Se basa en actualizar la RAM del controlador con el contenido de un framebuer. Un framebuer es un bloque de memoria reservado en la RAM del micro. Posee tantos bits como pixels el tenga el display Es un espejo de la imagen que se est mostrando...mejor dicho, lo a que se est mostrando es un espejo del framebuer. a
Cmo funciona? o
87 / 114
Ejemplo de aplicacin o
ECG Holter
Holter - GLCD
El refresco del GLCD lo realiza una tarea peridica cada 10 Hz. o Se basa en actualizar la RAM del controlador con el contenido de un framebuer. Un framebuer es un bloque de memoria reservado en la RAM del micro. Posee tantos bits como pixels el tenga el display Es un espejo de la imagen que se est mostrando...mejor dicho, lo a que se est mostrando es un espejo del framebuer. a
Cmo funciona? o
87 / 114
Ejemplo de aplicacin o
ECG Holter
Holter - GLCD
El refresco del GLCD lo realiza una tarea peridica cada 10 Hz. o Se basa en actualizar la RAM del controlador con el contenido de un framebuer. Un framebuer es un bloque de memoria reservado en la RAM del micro. Posee tantos bits como pixels el tenga el display Es un espejo de la imagen que se est mostrando...mejor dicho, lo a que se est mostrando es un espejo del framebuer. a
Cmo funciona? o
87 / 114
Ejemplo de aplicacin o
ECG Holter
Holter - GLCD
El micro escribe directamente en el framebuer. Es una operacin o muy rpida. a Peridicamente, la tarea refresca el GLCD con el contenido del o frambuer.Pasa a estado activo, realiza su accin y luego se bloquea o por 100ms. Esto nos ahorra varios problemas: Asignando una prioridad baja a la tarea de refresco, aseguramos que se ejecuten otras tareas cr ticas. No dependemos de la latencia que tenga el display para escribir Si a esto le sumamos usar un driver para el display, nos abstraemos 100% del hardware.
88 / 114
Ejemplo de aplicacin o
ECG Holter
Holter - GLCD
El micro escribe directamente en el framebuer. Es una operacin o muy rpida. a Peridicamente, la tarea refresca el GLCD con el contenido del o o frambuer.Pasa a estado activo, realiza su accin y luego se bloquea por 100ms. Esto nos ahorra varios problemas: Asignando una prioridad baja a la tarea de refresco, aseguramos que se ejecuten otras tareas cr ticas. No dependemos de la latencia que tenga el display para escribir Si a esto le sumamos usar un driver para el display, nos abstraemos 100% del hardware.
88 / 114
Ejemplo de aplicacin o
ECG Holter
Holter - GLCD
El micro escribe directamente en el framebuer. Es una operacin o muy rpida. a Peridicamente, la tarea refresca el GLCD con el contenido del o o frambuer.Pasa a estado activo, realiza su accin y luego se bloquea por 100ms. Esto nos ahorra varios problemas: Asignando una prioridad baja a la tarea de refresco, aseguramos que se ejecuten otras tareas cr ticas. No dependemos de la latencia que tenga el display para escribir Si a esto le sumamos usar un driver para el display, nos abstraemos 100% del hardware.
88 / 114
Ejemplo de aplicacin o
ECG Holter
Holter - GLCD
El micro escribe directamente en el framebuer. Es una operacin o muy rpida. a Peridicamente, la tarea refresca el GLCD con el contenido del o o frambuer.Pasa a estado activo, realiza su accin y luego se bloquea por 100ms. Esto nos ahorra varios problemas: Asignando una prioridad baja a la tarea de refresco, aseguramos que se ejecuten otras tareas cr ticas. No dependemos de la latencia que tenga el display para escribir Si a esto le sumamos usar un driver para el display, nos abstraemos 100% del hardware.
88 / 114
Ejemplo de aplicacin o
ECG Holter
Holter - GLCD
El micro escribe directamente en el framebuer. Es una operacin o muy rpida. a Peridicamente, la tarea refresca el GLCD con el contenido del o o frambuer.Pasa a estado activo, realiza su accin y luego se bloquea por 100ms. Esto nos ahorra varios problemas: Asignando una prioridad baja a la tarea de refresco, aseguramos que se ejecuten otras tareas cr ticas. No dependemos de la latencia que tenga el display para escribir Si a esto le sumamos usar un driver para el display, nos abstraemos 100% del hardware.
88 / 114
Ejemplo de aplicacin o
ECG Holter
Holter - GLCD
El micro escribe directamente en el framebuer. Es una operacin o muy rpida. a Peridicamente, la tarea refresca el GLCD con el contenido del o o frambuer.Pasa a estado activo, realiza su accin y luego se bloquea por 100ms. Esto nos ahorra varios problemas: Asignando una prioridad baja a la tarea de refresco, aseguramos que se ejecuten otras tareas cr ticas. No dependemos de la latencia que tenga el display para escribir Si a esto le sumamos usar un driver para el display, nos abstraemos 100% del hardware.
88 / 114
Ejemplo de aplicacin o
ECG Holter
Holter - Touchscreen
Un touchscreen resistivo est compuesto de 2 capas conductoras que a se tocan al aplicar presin en un punto espec o co. Se lee su estado utilizando un A/D.
Alan Kharsansky, Mario Azcueta () Desarrollo de aplicaciones en LPCXpresso basadas en RTOS Marzo - 2011 489 / 114
Ejemplo de aplicacin o
ECG Holter
Holter - Touchscreen
Para leer la coordenada X, se aplica tensin sobre la X y se lee la Y. o En uno de los contactos del Y est la entrada del A/D y el otro en a Hi-Z. Los mismo para leer la Y. Las funciones de los pins cambian iterativamente.
90 / 114
Ejemplo de aplicacin o
ECG Holter
Holter - Touchscreen
Esta funcionalidad la implementamos con una tarea peridica. Se lee el o estado del touch cada 50ms.
91 / 114
Ejemplo de aplicacin o
ECG Holter
Holter - Touchscreen
Existe otra tarea que recibe el nuevo estado en su cola, se desbloquea, y realiza el cambio de estado. Se explica ms adelante. a
92 / 114
Ejemplo de aplicacin o
ECG Holter
Esta tarea es claramente la tarea ms importante de todo el sistema. a Tiene un requerimiento de tiempo duro, y no pueden presentar corriemiento temporal. Caracteristicas de la misma: Tiene que ejecutarse a 200 Hz, SIEMPRE Tarea Peridica o Tiene que ser corta (ya que se ejecuta muy seguido) Tiene la ms alta prioridad del sistema a
93 / 114
Ejemplo de aplicacin o
ECG Holter
Esta tarea es claramente la tarea ms importante de todo el sistema. a Tiene un requerimiento de tiempo duro, y no pueden presentar corriemiento temporal. Caracteristicas de la misma: Tiene que ejecutarse a 200 Hz, SIEMPRE Tarea Peridica o Tiene que ser corta (ya que se ejecuta muy seguido) Tiene la ms alta prioridad del sistema a
93 / 114
Ejemplo de aplicacin o
ECG Holter
Esta tarea es claramente la tarea ms importante de todo el sistema. a Tiene un requerimiento de tiempo duro, y no pueden presentar corriemiento temporal. Caracteristicas de la misma: Tiene que ejecutarse a 200 Hz, SIEMPRE Tarea Peridica o Tiene que ser corta (ya que se ejecuta muy seguido) Tiene la ms alta prioridad del sistema a
93 / 114
Ejemplo de aplicacin o
ECG Holter
Esta tarea es claramente la tarea ms importante de todo el sistema. a Tiene un requerimiento de tiempo duro, y no pueden presentar corriemiento temporal. Caracteristicas de la misma: Tiene que ejecutarse a 200 Hz, SIEMPRE Tarea Peridica o Tiene que ser corta (ya que se ejecuta muy seguido) Tiene la ms alta prioridad del sistema a
93 / 114
Ejemplo de aplicacin o
ECG Holter
Esta tarea es claramente la tarea ms importante de todo el sistema. a Tiene un requerimiento de tiempo duro, y no pueden presentar corriemiento temporal. Caracteristicas de la misma: Tiene que ejecutarse a 200 Hz, SIEMPRE Tarea Peridica o Tiene que ser corta (ya que se ejecuta muy seguido) Tiene la ms alta prioridad del sistema a
93 / 114
Ejemplo de aplicacin o
ECG Holter
94 / 114
Ejemplo de aplicacin o
ECG Holter
94 / 114
Ejemplo de aplicacin o
ECG Holter
94 / 114
Ejemplo de aplicacin o
ECG Holter
94 / 114
Ejemplo de aplicacin o
ECG Holter
94 / 114
Ejemplo de aplicacin o
ECG Holter
94 / 114
Ejemplo de aplicacin o
ECG Holter
94 / 114
Ejemplo de aplicacin o
ECG Holter
94 / 114
Ejemplo de aplicacin o
ECG Holter
Cmo lo distribuyo? o
Exacto! usando COLAS. Estas colas, desbloquaran tareas por lo que las tareas que veremos a continuacin sern tareas que estarn bloqueadas hasta recibir datos en o a a sus colas Recuerdan el driver de UART?
95 / 114
Ejemplo de aplicacin o
ECG Holter
Cmo lo distribuyo? o
Exacto! usando COLAS. Estas colas, desbloquaran tareas por lo que las tareas que veremos a continuacin sern tareas que estarn bloqueadas hasta recibir datos en o a a sus colas Recuerdan el driver de UART?
95 / 114
Ejemplo de aplicacin o
ECG Holter
Esta tarea deber tener un buer que se ira a completando a medida que lleguen datos. Cuando estos lleguen, los grabaremos en la memoria. Esto se debe hay que hay un minimo de bloque que se puede grabar y si no lo utilizamos completo desperdiciar amos demasiado tiempo. (El grabado es un proceso lento)
96 / 114
Ejemplo de aplicacin o
ECG Holter
97 / 114
Ejemplo de aplicacin o
ECG Holter
98 / 114
Ejemplo de aplicacin o
ECG Holter
98 / 114
Ejemplo de aplicacin o
ECG Holter
99 / 114
Ejemplo de aplicacin o
ECG Holter
Para detectarlos se utiliza una implementacin del algoritmo de o Hamilton. Est pensado para implementarlo en a micros. Usa aritmtica entera. e Va almacenando la seal en un buer. n Al llegar una nueva muestra, revisa las anteriores y detecta si hubo o no un QRS. Si lo detecta, devuelve cuntas a muestras atrs se detect. Tiene una a o latencia de aprox. 200ms.
100 / 114
Ejemplo de aplicacin o
ECG Holter
Si recordamos el driver de la UART que usaba colas, esta tarea lo unico que debe hacer es adaptar el dato que recibe por la cola para ser enviado por la UART y enviarlo a la cola del driver.
101 / 114
Ejemplo de aplicacin o
ECG Holter
Una buena manera de organizar todo esto es con una tarea que funcione como una mquina de estados. La misma funcionara con colas que le a diran a que estado cambiar. Cada vez que se deba cambiar de estados, algunas tareas se destruirn y otras se crearn. a a Estos cambios de estado los pueden producir: Eventos del touchscreen (botones) Alarmas de n de estudio Errores
102 / 114
Ejemplo de aplicacin o
ECG Holter
Una buena manera de organizar todo esto es con una tarea que funcione como una mquina de estados. La misma funcionara con colas que le a diran a que estado cambiar. Cada vez que se deba cambiar de estados, algunas tareas se destruirn y otras se crearn. a a Estos cambios de estado los pueden producir: Eventos del touchscreen (botones) Alarmas de n de estudio Errores
102 / 114
Ejemplo de aplicacin o
ECG Holter
Una buena manera de organizar todo esto es con una tarea que funcione como una mquina de estados. La misma funcionara con colas que le a diran a que estado cambiar. Cada vez que se deba cambiar de estados, algunas tareas se destruirn y otras se crearn. a a Estos cambios de estado los pueden producir: Eventos del touchscreen (botones) Alarmas de n de estudio Errores
102 / 114
Ejemplo de aplicacin o
ECG Holter
Una buena manera de organizar todo esto es con una tarea que funcione como una mquina de estados. La misma funcionara con colas que le a diran a que estado cambiar. Cada vez que se deba cambiar de estados, algunas tareas se destruirn y otras se crearn. a a Estos cambios de estado los pueden producir: Eventos del touchscreen (botones) Alarmas de n de estudio Errores
102 / 114
Ejemplo de aplicacin o
ECG Holter
Conclusin o
103 / 114
Ejemplo de aplicacin o
ECG Holter
104 / 114
Ejemplo de aplicacin o
ECG Holter
105 / 114
Ejemplo de aplicacin o
ECG Holter
106 / 114
Ejemplo de aplicacin o
ECG Holter
Conclusin o
Cmo implementarin el sistema para que cada vez que se detecte o a un segmento QRS se muestre un corazon por 2 segundos y luego desaparezca?
107 / 114
Ejemplo de aplicacin o
ECG Holter
Conclusin o
Si tenemos un RTOS entonces creamos una tarea que haga lo siguiente: Dibuje un corazn en pantalla (o en memoria?) o Espere 2 segundos (bloqueado, por supuesto) Borre el corazn que dibuj o o Y despus? e
108 / 114
Ejemplo de aplicacin o
ECG Holter
Conclusin o
Si tenemos un RTOS entonces creamos una tarea que haga lo siguiente: Dibuje un corazn en pantalla (o en memoria?) o Espere 2 segundos (bloqueado, por supuesto) Borre el corazn que dibuj o o Y despus? e
108 / 114
Ejemplo de aplicacin o
ECG Holter
Conclusin o
Si tenemos un RTOS entonces creamos una tarea que haga lo siguiente: Dibuje un corazn en pantalla (o en memoria?) o Espere 2 segundos (bloqueado, por supuesto) Borre el corazn que dibuj o o Y despus? e
108 / 114
Ejemplo de aplicacin o
ECG Holter
Conclusin o
Si tenemos un RTOS entonces creamos una tarea que haga lo siguiente: Dibuje un corazn en pantalla (o en memoria?) o Espere 2 segundos (bloqueado, por supuesto) Borre el corazn que dibuj o o Y despus? e
108 / 114
Ejemplo de aplicacin o
ECG Holter
Conclusin o
Si tenemos un RTOS entonces creamos una tarea que haga lo siguiente: Dibuje un corazn en pantalla (o en memoria?) o Espere 2 segundos (bloqueado, por supuesto) Borre el corazn que dibuj o o Y despus? e
108 / 114
Ejemplo de aplicacin o
ECG Holter
Conclusin o
Si tenemos un RTOS entonces creamos una tarea que haga lo siguiente: Dibuje un corazn en pantalla (o en memoria?) o Espere 2 segundos (bloqueado, por supuesto) Borre el corazn que dibuj o o Y despus? e
108 / 114
Ejemplo de aplicacin o
ECG Holter
Conclusin o
Si tenemos un RTOS entonces creamos una tarea que haga lo siguiente: Dibuje un corazn en pantalla (o en memoria?) o Espere 2 segundos (bloqueado, por supuesto) Borre el corazn que dibuj o o Y despus? e
108 / 114
Ejemplo de aplicacin o
ECG Holter
109 / 114
Ejemplo de aplicacin o
ECG Holter
110 / 114
Ejemplo de aplicacin o
ECG Holter
Ejemplo de aplicacin o
ECG Holter
Dudas?
Dudas? Consultas?
112 / 114
Ejemplo de aplicacin o
ECG Holter
Gracias
Muchas gracias!
113 / 114
Ejemplo de aplicacin o
ECG Holter
Referencias
Barry R. Using the FreeRTOS Real Time Kernel. NXP LPC17xx Edition. Qing L, Yao C. Real-Time Concepts for Embedded Systems. CMP Books 2003. Free RTOS ocial web. http://www.freertos.org/ E.P. Limiteds Open Source ECG Analysis Software. http://www.eplimited.com/ Hamilton PS, Tompkins WJ. Quantitative investigation of QRS detection rules using the MIT/BIH arrhythmia database. IEEE Trans. Biomed. Eng., BME-33(12):1157-1165, 1986. MIT/BIH arrhythmia database. http://www.physionet.org/physiobank/database/mitdb/
114 / 114