SlideShare una empresa de Scribd logo
1 de 49
Desarrollo de drivers
y aplicaciones para FreeRtos

                                   Marzo 2010
                        Ing. Marcelo Lorenzati
            http://sistemasembebidos.com.ar
Agenda
   Sistemas de tiempo Real y Sistemas embebidos
   Introducción a los RTOS embebidos y a FreeRTOS
   Ports, manejo de Memoria y configuración
   Control del Kernel y de la Tarea
   Sincronización y Comunicación entre tareas
   El por qué del Driver
   Partes de un Driver
   Desarrollo de un Driver
   Tipos de Drivers
   Drivers desarrollados
   Ejemplo de uso – audio player con FreeRTOS
   Conclusiones
   Bibliografía
   Preguntas
Sistemas de tiempo Real y Sistemas embebidos /1
            Patriot                           F16




            Sistemas en tiempo real
                      Mars Climate Orbiter

            Sistemas embebidos
                                             Ariane-5



Therac-25   Complejos
            Tuvieron fallas
Sistemas de tiempo Real y Sistemas embebidos /2
  Problemas específicos de los sistemas de tiempo real
  
   Tiempos de respuesta estrictos
  
   Impredictibilidad del comportamiento del entorno
  
   Necesidad de accion rapida ante errores
  Problemas específicos de los sistemas de software
  
   Atomicidad
  
   Estancamiento
  
   Sincronizacion
  
   Concurrencia
  
   Condiciones de carrera
  
   Secciones criticas
  
   Desbordes de memoria
  
   Paralelismo
  
   Tiempos de desarrollo del sistema
  
   Mantenimiento del sistema
  Problema específicos de los sistemas embebidos
  
   Parte integral de un sistema mas grande
  
   Heterogeneidad de dispositivos
  
   Memoria de datos y de programa reducida
  
   Alto acoplamiento del código con el Hardware
  
   Baja potencia de computo
  
   Monoliticos
Introducción a los RTOS embebidos /1
    Variante de un sistema operativo, donde se asegura un resultado
     computacional en un periodo predecible de tiempo.
    RTOS para sistemas embebidos! No sistemas complejos de
     tiempo real *
    Dominio total del algoritmo de scheduling
    Acceso rápido al hardware
    Tiempos reducidos de reaccion (ms vs ns)
    Capacidad de priorización
    Generalmente diseñados para funcionar con memoria reducida y
     baja potencia de computo.
    Suelen ser monolíticos,en una sola imagen binaria se alberga el
     kernel y las aplicaciones
    Drivers simples de una sola capa,lo que los hace mas rápidos
     comparado con kernels que usan drivers multicapa.
Introducción a los RTOS embebidos /2
Espacio de la aplicación


 Tarea 1         Tarea 2            Tarea 3         Tarea 4           Tarea 5




                     Interface de llamada al sistema
  Tareas - Memoria - Comunicación & sincronización - Temporización - I/O Device
Espacio del kernel
       Port              Driver 1             Driver 2            Driver 3



                                  Hardware
Introducción a los RTOS embebidos /3
Otros RTOSes:

RTLinux         PICOS18    ThreadX
uCLinux         UNIX-RTR   EmbOS
LynxOS          µnOS       Windows CE
eCos            Helium     INTEGRITY
Symbian OS      uCOS-III   RTAI
BeRTOS          Vxworks    TRON
FreeOSEK        Salvo      VelOSity
OpenRTOS        QNX        CMX
Introducción a
Especificaciones:

     Micro kernel que provee un sistema operativo en
     tiempo real priorizable, tanto cooperativo,
     “preventivo” o mixto.

     Pensado para microcontroladores , cuenta con
     mas de 23 ports avalados para las diferentes
     arquitecturas y compiladores.

     API totalmente documentada y con ejemplos.

     Escrito en su mayoria en C, es liviano en tamaño
     de codigo y en uso de memoria RAM.

     Ambiente de desarrollo multiplataforma, de
     codigo abierto y de libre uso.
Ports /1

 Un port, es una porcion específica del codigo
del sistema operativo.

 Se lo conoce tambien como Board Support
Package

 Conecta la logica del RTOS con el hardware
especifico del procesador.

 Debe tener en cuenta las especificaciones del
compilador que se usa.

 El diseño de un port de un RTOS no es trivial.
Ports /2
                                                          ID
Tarea 3
                                                       Nombre
Tarea 2
               Cambio de                      Registros del procesador
Tarea 1         contexto
                                                   Pila de memoria
                                                (variables de la tarea)

                                                 Recursos (eventos)
  Especialización de metodos de arranque
  Control del timer de sistema
  Control de la pila de memoria                 Recursos (Señales)
  Control de las zonas criticas
  Control de los registros del procesador              (BCT)
                                             Bloque de control de la tarea
                                                      genérico
Manejo de Memoria



                            Malloc
                                                     ?




                                                 Malloc
             Free




   Parte integral del sistema operativo.
   Usado por el RTOS para la creacion/destruccion de tareas,
    semaforos y colas.
   Soporta multiples modelos:
     Modelo simple (asigna memoria pero no libera)
     Modelo común (asigna y libera pero no ordena)
     Modelo mejorado (reordena)
   Implementacion de FreeRTOS
     Malloc() → pvPortMalloc()
     Free() → pvPortFree()
Configuración
FreeRTOSConfig.h
Modifica en tiempo de compilación el modo de
   ejecucion del RTOS.

     configUSE_PREEMPTION

     configCPU_CLOCK_HZ

     configTICK_RATE_HZ

     configMAX_PRIORITIES

     configMINIMAL_STACK_SIZE

     configTOTAL_HEAP_SIZE

     configMAX_TASK_NAME_LEN

     configUSE_USE_MUTEXES

     configUSE_CO_ROUTINES

     #define INCLUDE_vTaskDelete 1
Control en ejecución del kernel /1
Metodos de distribución del procesador:
 Subdivision en el tiempo
 Basado en eventos
FreeRTOS soporta AMBOS
Algoritmos de administracion de tareas:
 Cooperativo (la tarea relega el procesador)
 Preventivo (el OS administra el procesador)
Priorizacion de tareas:
 FreeRTOS permite controlar el numero de prioridades
 La tarea de mas alta prioridad es la que se ejecuta
 Posibilidad de inversion de prioridades en el modelo cooperativo
 FreeRtos permite prioridades iguales
    Round Robin
Control en ejecucion del kernel /2
Modifican el manejador de tareas del RTOS en
      tiempo de ejecucion.

        taskYIELD()

        taskENTER_CRITICAL()

        taskEXIT_CRITICAL()

        taskDISABLE_INTERRUPTS()

        taskENABLE_INTERRUPTS()

        vTaskStartScheduler()

        vTaskEndScheduler()

        vTaskSuspendAll()

        xTaskResumeAll()
Control de la tarea /1

 Una TAREA es la unidad basica de ejecucion de un RTOS.

 Las tareas se ejecutan con su propio contexto
independiente de cualquier otra instancia, con lo que su
consumo de memoria es alto y su tiempo de ejecucion
considerable.

 Pueden existir multiples instancias de la misma tarea.

 Las co-rutinas comparten el mismo contexto entre
diferentes instancias (consumen una sola pila), son de
ejecucion rapida pero tienen restricciones en cuanto a
donde y como se pueden ejecutar y solo funcionan en modo
cooperativo.

  Si no esta instanciada no ocupa memoria ni tiempo de
procesador
Control de la tarea /2
Es interrumpible por:

      IRQ de Hardware

      Cambio de prioridades

      Cambio de contexto del RTOS

      Cambios de estado forzados desde la tarea

APIs que modifican el flujo de control de la tarea e indirectamente
del kernel:

      XtaskCreate / VtaskDelete

      VtaskDelay / vTaskDelayUntil

      UxTaskPriorityGet / vTaskPrioritySet

      VtaskSuspend / vTaskResume / vTaskResumeFromISR
Control de la tarea /3
Arranque del RTOS y de una Tarea “Demo” y destruccion:
static void vDemo( void *pvParameters )
{
   for ( ; ; )
   {
      vTaskDelay( 1000 );
      vTaskDelete(xHandle);
   }
}

/*Main Program*/
int main( void )
{
   prvSetupHardware();
   xTaskCreate( vDemo, "Demo", STACK_SIZE, NULL, tskIDLE_PRIORITY, xHandle );
   vTaskStartScheduler();
   return 0;
}
Control de la tarea /4
Uso del Stack de Memoria:
static void vDemo( void *pvParameters )   vdemo()
{
   portLONG lData[1000];                  lData[]
   for ( ; ; )
   {
      func_1();
   }
                                          func_1()
}
                                          cData_1[]
void func_1(void)
{
  portCHAR cData_1[1000];                 func_2()
  func_2();
}                                         cData_2[]

void func_2(void)
{
  portCHAR cData_2[1000];
  process();                                    STACK_SIZE
}
Sincronización de la tarea /1
    Una tarea no es util si no interactúa con otros procesos.
    Se requiere que permita sincronizar, proteger y compartir.
    FreeRTOS ofrece Semaforos y Mutex.
    Pueden correr en una tarea o en código de interrupciones.
    Los semaforos permiten la sincronización entre dos tareas,
     siendo una la que espera (Take) y otra que la dispara o
     libera(give)
    Los semaforos pueden ser binarios o contadores.
    Dar incrementa
    Si esta en su maximo no incrementa
    Tomar decrementa
    Si es cero y se lo toma bloquea

    Los Mutex son una especializacion de los semaforos binarios,
     permiten la proteccion para el acceso de un recurso comun
     serializado.
Sincronización de la tarea /2
API's de sincronización:
   VsemaphoreCreateBinary
   VsemaphoreCreateCounting
   XsemaphoreCreateMutex
   XsemaphoreCreateRecursiveMutex
   XsemaphoreTake
   XsemaphoreTakeRecursive
   XsemaphoreGive
   XsemaphoreGiveRecursive
   xSemaphoreGiveFromISR
Sincronización de la tarea /3
Ejemplo de captura de recurso compartido:
   Creación de recurso:
vSemaphoreCreateBinary(sem1);

       Captura y liberación de recurso (2 procesos iguales):
if (xSemaphoreTake(sem1, (portTickType) 1000 ) != pdTRUE)
{
    return ERROR;
}

doProcess();

xSemaphoreGive(sem1);
Sincronización de la tarea /4
Ejemplo de sincronización, productor y consumidor:
Creación de recurso:
VsemaphoreCreateCounting(sem1, 0);

Consumidor:
if (xSemaphoreTake(sem1, (portTickType) portMAX_DELAY ) != pdTRUE)
{
    return ERROR;
}
processData();

Productor:
feedData();
xSemaphoreGive(sem1);
Comunicación entre tareas /1
Provee los medios para compartir datos entre tareas
  aisladas.
 Colas de mensajes:
 Tuberias (Resultado de un proceso es entrada para otro)
      Puede variar el tamaño del mensaje
      Stout / stdin
 Mailbox (Pub / sub)
 Semaforos
 Memoria compartida
                        Bloqueos

             Tarea 1    Memoria      Tarea 2


   A menor nivel de abstraccion mayor probabilidad de errores
   Los recursos del RTOS son caros, usar con criterio.
Comunicación entre tareas /2
Colas de mensajes:
Creacion de una cola:
       xQueue = xQueueHandle xQueueCreate(lenght, size);

Envio de datos por cola:
       xQueueSend(xQueue, itemToQueue, timeOut);

Recepcion de datos por cola:
      xQueueReceive(xQueue, itemToDeQueue, timeOut);
Resumen


      Tarea no instanciada no ocupa tiempo en el
      manejador (scheduler) ni RAM.

      Tarea en demora o en espera de eventos
      (semaforo o cola) no consume tiempo de
      procesador (Idle waiting)

      Evitar busy waiting!!
While ( !done ) { };

      Crear objetos del RTOS consume tiempo y
      memoria, usar con criterio!!!
El por qué del Driver
Abstraen  la logica del dispositivo de la
 funcionalidad genérica.
Permite la reusabilidad del driver en diferentes
 aplicaciones
Permite la independencia de la aplicacion en
 diferentes arquitecturas
Permite sincronizar eventos del hardware con
 eventos del RTOS
Permite considerar al procesamiento del hardware
 como una tarea mas del sistema
Los periféricos son lentos comparados a la CPU
Partes de un Driver /1
                      Entre la tarea y el driver se maneja el “que”
                      •Formado en la mayoria de los casos por los
                      siguientes metodos básicos:
    Tarea 1               • Init() / Reset()
                          • Open()
                          • Close()
                          • Read()
                          • Write()
          Interface   •Metodos persistentes sobre las diferentes
              De      arquitecturas
Driver     llamada
         al sistema   La interfase entre el driver y el hardware
                      maneja el ”como”:
                      •En la mayoria de los casos esta definida por el
                      uso de:
   Hardware              • I/O de hardware
                         • Manejo de las interrupciones
                         • Manejo del DMA
                         • Manejo de la memoria
Partes de un Driver/2

             Capa de Abstracción del hardware (HAL)

             Virtualiza el hardware de la plataforma para
   Driver
             que diferentes drivers puedan ser portados
             facilmente en diferentes hardwares.
    HAL
             Puede ser tan simple como define en un
             archivo de cabeceras (header file) hasta una
  Hardware
             capa completa de código a la cual se
             interfacea.
Desarrollo de un driver
Código en espacio de aplicación:

      Llamadas a la interface del driver (APIs)
  
       Usan el hilo del programa que lo llama

      Previamente instanciado (como un servicio)
  
       Usan su propio hilo

      Pueden ser instanciados y/o removidos del scope del
      kernel

      La mayoria del procesamiento se encuentra aqui
Código en interrupciones:

      Es irremovible, se ubica en tiempo de compilación

      Es simple y corto

      Solo se toman los datos

      KISS (Keep it simple Silly)
Desarrollo de un driver /1

     Puntos importantes:

     Requerimientos para el driver
  
    Tiempo de respuesta
  
    Capacidades de direccionamiento

     Especificaciones del hardware
  
    Encuestado (Polled)
  
    Basado en IRQs
  
    Basado en DMA
  
    Mixtos
Desarrollo de un driver /2
Secciones Criticas:
    Porción de código que debe ser tratada atómicamente
    Una vez entrado en sección critica no se interrumpe
    Generalmente acceden a un recurso de HW
    Deben ser serializables
    Tipos de secciones criticas
             En espacio de aplicación
             En espacio del kernel
             En espacio de interrupciones
    Métodos de protección según severidad
             Baja: Mutex ()
             Media: evitar cambio de contexto
             Alta:
              Evitar cierto tipo de interrupciones

              Evitar interrupciones dentro de interrupciones

             Mas Alta!: Deshabilitar interrupciones globales
Tipos de drivers /1
Interface humana
                           
                             De comunicaciones
 
   Entrada                    
                                Usart
   
     Teclados matriciales     
                                SPI
   
     Pulsadores               
                                I2C
   
     Touch pads               
                                I2S
   
     Mouse                    
                                USB
 
   Salida                   
                             De temporizacion
   
     Pantallas                
                                Timers
     
       LCD de caracteres      
                                Counters
     
       LCD Graficas           
                                PWM / CCP
     
       VGA                  
                             De entrada salida
   
     Sonido                   
                                Controladores de memoria
     
       DACs                   
                                Controladores de puertos
     
       Codecs
Tipos de drivers /2
Sincrónicos

    Tambien llamados bloqueantes.

    Por diseño la tarea que llama al driver esperara el resultado de la
    operación por la cual consulto.

    No significa que otras tareas no puedan ocupar el tiempo del
    procesador.

    Una vez completado se despertara a la tarea en espera y
    consumira su resultado.

    Son mas simples que otro tipo de drivers.

    Suelen utilizarse semáforos binarios para tal fin.

    Se utilizan al menos 2 semáforos:
      
          Uno para garantizar la captura del recurso (mutex)
      
          Otro para informar la conclusion de la tarea.
Tipos de drivers /3
Ejemplo driver sincrónico




    Tarea 1                     Tarea 2
                            T
Tipos de drivers /4
Ejemplo driver sincronico
unsigned portCHAR cSendFrame(pI2sSendData pData)
{
    unsigned portCHAR errCode;
    if (xSemaphoreTake(xMutex, (portTickType) xBlockTime ) != pdTRUE) //Intento tomar mutex
    { return ERR_SEM_TIMEOUT; }
    DoBgProcess(); //Proceso del HW en segundo plano
    if (xSemaphoreTake(xSem, (portTickType) xBlockTime ) == pdTRUE) //Espero que complete
    { errCode = SUCCESS; }
    else { errCode = ERR_TASK_TIMEOUT; }
    xSemaphoreGive(xMutex); //Libero Mutex
    return errCode;
}


void vI2sISR(void)
{
    if (completed)
    {
        takeData();
        xSemaphoreGiveFromISR(xSem, &xN); //Señalo evento de finalización
    }
}
Tipos de drivers /5
Asincrónicos

     Por diseño la tarea que llama al driver puede continuar
     ejecutando sin esperar el resultado de la operación que pidio.

     Oportunidad para avanzar tareas hasta que la operación este
     lista.

     Mucho mas complejos de diseñar y a veces innecesarios

     Mas impredecibles en su comportamiento

     Metodos:
   
      Poll
   
      Señales / Slots
   
      Callback
Tipos de drivers /6
Ejemplo de driver asincrónico (Polled):

                              Driver




     Tarea 1           Cola




                                          IRQ
                                                 Hardware
                                          Soft
Tipos de drivers /7
Ejemplo de driver asincrónico (Callback):


                              Tarea 1
                                 B


        Tarea 1
           A

                                                     T
                                            Driver



        Tarea 1
           B
Drivers desarrollados

Lista de drivers desarrollados para FreeRTOS

  Puerto serie

  SPI

  I2S

  Fat

  LCD gráfico

  Timer
Ejemplo de uso – audio player con FreeRTOS
      Aplicativo reproductor de archivos WAV                         SOC

                                               Servicio
     Chan’s FATFS
                                                RTC

 diskio      Consulta RTC


                                                                FreeRTOS

 SPI Driver                       I2S Driver                 PORT

                                   Hardware

     SPI                               I2S                   TIMER

 SD/MMC                        AUDIO CODEC                Hardware externo
Conclusiones
Los RTOS:
    Consumen mas tiempo de procesador
    Consumen mas memoria
    Reducen la incertidumbre
    Reducen el tiempo de desarrollo
    Mejoran la mantenibilidad
    Mejoran la Abstraccion
    Mejoran la independencia de tareas
    Mejoran la escalabilidad
    Son menos suceptible a errores
    Permiten facilemente la priorizacion
    Facilitan la portabilidad
Bibliografía

•
     Using the FreeRTOS Real time Kernel, a Practical Guide -
     Richard Barry
•
     http://freertos.org
•
     Architecture of Device I/O Drivers" - David Kalinsky, Ph.D.
•
     Linux Device Drivers, Third Edition - Jonathan Corbet, Alessandro
     Rubini, and Greg Kroah-Hartman
•
     An embedded Software Primer – David E. Simon
•
     http://elm-chan.org/fsw/ff/00index_e.html
•
     http://www.cs.brown.edu/courses/csci1600/handouts/notes/ipc.pdf
•
     http://sistemasembebidos.com.ar/foro
Preguntas
Gracias!
Backup
Placa ARM7TDMI adaptada de
       LQFP64 a PDIP
     (XTAL, USB y JTAG)



                             Ejemplo de uso para medicion
                                  de acelerometros
Demo AudioPlayer




                   Placa casera de desarrollo
Ejemplo Driver de video




                          Ejemplo Generador de ondas
                                    digital
Codigo fuente de los ejemplos

Más contenido relacionado

La actualidad más candente

04 coms 525 tcpip - arp and rarp
04   coms 525 tcpip - arp and rarp04   coms 525 tcpip - arp and rarp
04 coms 525 tcpip - arp and rarpPalanivel Kuppusamy
 
Paginación, Segmentación y Fragmentación
Paginación, Segmentación y FragmentaciónPaginación, Segmentación y Fragmentación
Paginación, Segmentación y FragmentaciónNatalia Ludeña
 
Sistemas de Detección de Intrusos (IDS)
Sistemas de Detección de Intrusos (IDS)Sistemas de Detección de Intrusos (IDS)
Sistemas de Detección de Intrusos (IDS)Alberto Mayo Vega
 
Jerarquia de la memoria
Jerarquia de la memoria Jerarquia de la memoria
Jerarquia de la memoria Fabian Rojas
 
Manual de conexion a una base de datos con gambas
Manual de conexion a una base de datos con gambasManual de conexion a una base de datos con gambas
Manual de conexion a una base de datos con gambasMoposita1994
 
Arp and rarp
Arp and rarpArp and rarp
Arp and rarpMohd Arif
 
Active directory ii
Active directory   iiActive directory   ii
Active directory iideshvikas
 
Herramientas para-el-analisis-de-flujo-de-datos
Herramientas para-el-analisis-de-flujo-de-datosHerramientas para-el-analisis-de-flujo-de-datos
Herramientas para-el-analisis-de-flujo-de-datosDanitortas
 
Unidad 6 Protección y seguridad.
Unidad 6 Protección y seguridad.Unidad 6 Protección y seguridad.
Unidad 6 Protección y seguridad.Juan Anaya
 
Comandos ccna-1-y-ccna-2-v5-rs
Comandos ccna-1-y-ccna-2-v5-rsComandos ccna-1-y-ccna-2-v5-rs
Comandos ccna-1-y-ccna-2-v5-rsOscarFF
 
Sistemas distribuidos 2
Sistemas distribuidos 2Sistemas distribuidos 2
Sistemas distribuidos 2Tensor
 
Presentación tcp y udp
Presentación tcp y udpPresentación tcp y udp
Presentación tcp y udpgonsu90
 
Real Time Systems & RTOS
Real Time Systems & RTOSReal Time Systems & RTOS
Real Time Systems & RTOSVishwa Mohan
 
How to configure dns server(2)
How to configure dns server(2)How to configure dns server(2)
How to configure dns server(2)Amandeep Kaur
 

La actualidad más candente (20)

Sistemas Operativosss
Sistemas OperativosssSistemas Operativosss
Sistemas Operativosss
 
04 coms 525 tcpip - arp and rarp
04   coms 525 tcpip - arp and rarp04   coms 525 tcpip - arp and rarp
04 coms 525 tcpip - arp and rarp
 
VMware vSphere ventajas y desventajas
VMware vSphere ventajas y desventajasVMware vSphere ventajas y desventajas
VMware vSphere ventajas y desventajas
 
Sistema de Archivos Distribuidos
Sistema de Archivos DistribuidosSistema de Archivos Distribuidos
Sistema de Archivos Distribuidos
 
Paginación, Segmentación y Fragmentación
Paginación, Segmentación y FragmentaciónPaginación, Segmentación y Fragmentación
Paginación, Segmentación y Fragmentación
 
Sistemas de Detección de Intrusos (IDS)
Sistemas de Detección de Intrusos (IDS)Sistemas de Detección de Intrusos (IDS)
Sistemas de Detección de Intrusos (IDS)
 
Jerarquia de la memoria
Jerarquia de la memoria Jerarquia de la memoria
Jerarquia de la memoria
 
Diapositivas De Redes Vlan
Diapositivas De Redes VlanDiapositivas De Redes Vlan
Diapositivas De Redes Vlan
 
Manual de conexion a una base de datos con gambas
Manual de conexion a una base de datos con gambasManual de conexion a una base de datos con gambas
Manual de conexion a una base de datos con gambas
 
Arp and rarp
Arp and rarpArp and rarp
Arp and rarp
 
Zonas dmz y_puertos
Zonas dmz y_puertosZonas dmz y_puertos
Zonas dmz y_puertos
 
Active directory ii
Active directory   iiActive directory   ii
Active directory ii
 
Herramientas para-el-analisis-de-flujo-de-datos
Herramientas para-el-analisis-de-flujo-de-datosHerramientas para-el-analisis-de-flujo-de-datos
Herramientas para-el-analisis-de-flujo-de-datos
 
Unidad 6 Protección y seguridad.
Unidad 6 Protección y seguridad.Unidad 6 Protección y seguridad.
Unidad 6 Protección y seguridad.
 
Servidor Proxy Squid
Servidor Proxy SquidServidor Proxy Squid
Servidor Proxy Squid
 
Comandos ccna-1-y-ccna-2-v5-rs
Comandos ccna-1-y-ccna-2-v5-rsComandos ccna-1-y-ccna-2-v5-rs
Comandos ccna-1-y-ccna-2-v5-rs
 
Sistemas distribuidos 2
Sistemas distribuidos 2Sistemas distribuidos 2
Sistemas distribuidos 2
 
Presentación tcp y udp
Presentación tcp y udpPresentación tcp y udp
Presentación tcp y udp
 
Real Time Systems & RTOS
Real Time Systems & RTOSReal Time Systems & RTOS
Real Time Systems & RTOS
 
How to configure dns server(2)
How to configure dns server(2)How to configure dns server(2)
How to configure dns server(2)
 

Destacado (7)

Diapositiva JDBC
Diapositiva JDBCDiapositiva JDBC
Diapositiva JDBC
 
Controladores presentacion
Controladores presentacionControladores presentacion
Controladores presentacion
 
Variadores de velocidad
Variadores de velocidadVariadores de velocidad
Variadores de velocidad
 
Variadores de velocidad
Variadores de velocidadVariadores de velocidad
Variadores de velocidad
 
Que es un driver
Que es un driverQue es un driver
Que es un driver
 
Variadores frecuencia (presentación)
Variadores frecuencia (presentación)Variadores frecuencia (presentación)
Variadores frecuencia (presentación)
 
Controladores
ControladoresControladores
Controladores
 

Similar a Desarrollo de drivers y aplicaciones para FreeRtos

Similar a Desarrollo de drivers y aplicaciones para FreeRtos (20)

Resumen del primer corte
Resumen del primer corteResumen del primer corte
Resumen del primer corte
 
Arqui hardware
Arqui hardwareArqui hardware
Arqui hardware
 
evolucion de sisitemas operativos
evolucion de sisitemas operativosevolucion de sisitemas operativos
evolucion de sisitemas operativos
 
evolucion de los sistemas operativos
evolucion de los sistemas operativosevolucion de los sistemas operativos
evolucion de los sistemas operativos
 
Sx embebidos
Sx embebidosSx embebidos
Sx embebidos
 
prueba
pruebaprueba
prueba
 
Taller sistemas operativos
Taller sistemas operativosTaller sistemas operativos
Taller sistemas operativos
 
Taller sistemas operativos (27) slatan
Taller sistemas operativos (27) slatanTaller sistemas operativos (27) slatan
Taller sistemas operativos (27) slatan
 
Taller sistemas operativos
Taller sistemas operativosTaller sistemas operativos
Taller sistemas operativos
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Informe sistemas empotrados
Informe   sistemas empotradosInforme   sistemas empotrados
Informe sistemas empotrados
 
Conceptos generales (2)
Conceptos generales (2)Conceptos generales (2)
Conceptos generales (2)
 
Taller no 3
Taller no 3Taller no 3
Taller no 3
 
Los Sistemas Operativos
Los Sistemas OperativosLos Sistemas Operativos
Los Sistemas Operativos
 
Traduccion
TraduccionTraduccion
Traduccion
 
TIPOS DE SOFTWARE
TIPOS DE SOFTWARETIPOS DE SOFTWARE
TIPOS DE SOFTWARE
 
Conseptos BáSicos De Sistemas Operativos
Conseptos BáSicos De Sistemas OperativosConseptos BáSicos De Sistemas Operativos
Conseptos BáSicos De Sistemas Operativos
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
MICROCONTROLADOR
MICROCONTROLADORMICROCONTROLADOR
MICROCONTROLADOR
 
Los sistemas operativos
Los sistemas operativosLos sistemas operativos
Los sistemas operativos
 

Último

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxRogerPrieto3
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 

Último (15)

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptx
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 

Desarrollo de drivers y aplicaciones para FreeRtos

  • 1. Desarrollo de drivers y aplicaciones para FreeRtos Marzo 2010 Ing. Marcelo Lorenzati http://sistemasembebidos.com.ar
  • 2. Agenda  Sistemas de tiempo Real y Sistemas embebidos  Introducción a los RTOS embebidos y a FreeRTOS  Ports, manejo de Memoria y configuración  Control del Kernel y de la Tarea  Sincronización y Comunicación entre tareas  El por qué del Driver  Partes de un Driver  Desarrollo de un Driver  Tipos de Drivers  Drivers desarrollados  Ejemplo de uso – audio player con FreeRTOS  Conclusiones  Bibliografía  Preguntas
  • 3. Sistemas de tiempo Real y Sistemas embebidos /1 Patriot F16 Sistemas en tiempo real Mars Climate Orbiter Sistemas embebidos Ariane-5 Therac-25 Complejos Tuvieron fallas
  • 4. Sistemas de tiempo Real y Sistemas embebidos /2 Problemas específicos de los sistemas de tiempo real  Tiempos de respuesta estrictos  Impredictibilidad del comportamiento del entorno  Necesidad de accion rapida ante errores Problemas específicos de los sistemas de software  Atomicidad  Estancamiento  Sincronizacion  Concurrencia  Condiciones de carrera  Secciones criticas  Desbordes de memoria  Paralelismo  Tiempos de desarrollo del sistema  Mantenimiento del sistema Problema específicos de los sistemas embebidos  Parte integral de un sistema mas grande  Heterogeneidad de dispositivos  Memoria de datos y de programa reducida  Alto acoplamiento del código con el Hardware  Baja potencia de computo  Monoliticos
  • 5. Introducción a los RTOS embebidos /1  Variante de un sistema operativo, donde se asegura un resultado computacional en un periodo predecible de tiempo.  RTOS para sistemas embebidos! No sistemas complejos de tiempo real *  Dominio total del algoritmo de scheduling  Acceso rápido al hardware  Tiempos reducidos de reaccion (ms vs ns)  Capacidad de priorización  Generalmente diseñados para funcionar con memoria reducida y baja potencia de computo.  Suelen ser monolíticos,en una sola imagen binaria se alberga el kernel y las aplicaciones  Drivers simples de una sola capa,lo que los hace mas rápidos comparado con kernels que usan drivers multicapa.
  • 6. Introducción a los RTOS embebidos /2 Espacio de la aplicación Tarea 1 Tarea 2 Tarea 3 Tarea 4 Tarea 5 Interface de llamada al sistema Tareas - Memoria - Comunicación & sincronización - Temporización - I/O Device Espacio del kernel Port Driver 1 Driver 2 Driver 3 Hardware
  • 7. Introducción a los RTOS embebidos /3 Otros RTOSes: RTLinux PICOS18 ThreadX uCLinux UNIX-RTR EmbOS LynxOS µnOS Windows CE eCos Helium INTEGRITY Symbian OS uCOS-III RTAI BeRTOS Vxworks TRON FreeOSEK Salvo VelOSity OpenRTOS QNX CMX
  • 8. Introducción a Especificaciones:  Micro kernel que provee un sistema operativo en tiempo real priorizable, tanto cooperativo, “preventivo” o mixto.  Pensado para microcontroladores , cuenta con mas de 23 ports avalados para las diferentes arquitecturas y compiladores.  API totalmente documentada y con ejemplos.  Escrito en su mayoria en C, es liviano en tamaño de codigo y en uso de memoria RAM.  Ambiente de desarrollo multiplataforma, de codigo abierto y de libre uso.
  • 9. Ports /1  Un port, es una porcion específica del codigo del sistema operativo.  Se lo conoce tambien como Board Support Package  Conecta la logica del RTOS con el hardware especifico del procesador.  Debe tener en cuenta las especificaciones del compilador que se usa.  El diseño de un port de un RTOS no es trivial.
  • 10. Ports /2 ID Tarea 3 Nombre Tarea 2 Cambio de Registros del procesador Tarea 1 contexto Pila de memoria (variables de la tarea) Recursos (eventos) Especialización de metodos de arranque Control del timer de sistema Control de la pila de memoria Recursos (Señales) Control de las zonas criticas Control de los registros del procesador (BCT) Bloque de control de la tarea genérico
  • 11. Manejo de Memoria Malloc ? Malloc Free  Parte integral del sistema operativo.  Usado por el RTOS para la creacion/destruccion de tareas, semaforos y colas.  Soporta multiples modelos: Modelo simple (asigna memoria pero no libera) Modelo común (asigna y libera pero no ordena) Modelo mejorado (reordena)  Implementacion de FreeRTOS Malloc() → pvPortMalloc() Free() → pvPortFree()
  • 12. Configuración FreeRTOSConfig.h Modifica en tiempo de compilación el modo de ejecucion del RTOS.  configUSE_PREEMPTION  configCPU_CLOCK_HZ  configTICK_RATE_HZ  configMAX_PRIORITIES  configMINIMAL_STACK_SIZE  configTOTAL_HEAP_SIZE  configMAX_TASK_NAME_LEN  configUSE_USE_MUTEXES  configUSE_CO_ROUTINES  #define INCLUDE_vTaskDelete 1
  • 13. Control en ejecución del kernel /1 Metodos de distribución del procesador:  Subdivision en el tiempo  Basado en eventos FreeRTOS soporta AMBOS Algoritmos de administracion de tareas:  Cooperativo (la tarea relega el procesador)  Preventivo (el OS administra el procesador) Priorizacion de tareas:  FreeRTOS permite controlar el numero de prioridades  La tarea de mas alta prioridad es la que se ejecuta  Posibilidad de inversion de prioridades en el modelo cooperativo  FreeRtos permite prioridades iguales  Round Robin
  • 14. Control en ejecucion del kernel /2 Modifican el manejador de tareas del RTOS en tiempo de ejecucion.  taskYIELD()  taskENTER_CRITICAL()  taskEXIT_CRITICAL()  taskDISABLE_INTERRUPTS()  taskENABLE_INTERRUPTS()  vTaskStartScheduler()  vTaskEndScheduler()  vTaskSuspendAll()  xTaskResumeAll()
  • 15. Control de la tarea /1  Una TAREA es la unidad basica de ejecucion de un RTOS.  Las tareas se ejecutan con su propio contexto independiente de cualquier otra instancia, con lo que su consumo de memoria es alto y su tiempo de ejecucion considerable.  Pueden existir multiples instancias de la misma tarea.  Las co-rutinas comparten el mismo contexto entre diferentes instancias (consumen una sola pila), son de ejecucion rapida pero tienen restricciones en cuanto a donde y como se pueden ejecutar y solo funcionan en modo cooperativo.  Si no esta instanciada no ocupa memoria ni tiempo de procesador
  • 16. Control de la tarea /2 Es interrumpible por:  IRQ de Hardware  Cambio de prioridades  Cambio de contexto del RTOS  Cambios de estado forzados desde la tarea APIs que modifican el flujo de control de la tarea e indirectamente del kernel:  XtaskCreate / VtaskDelete  VtaskDelay / vTaskDelayUntil  UxTaskPriorityGet / vTaskPrioritySet  VtaskSuspend / vTaskResume / vTaskResumeFromISR
  • 17. Control de la tarea /3 Arranque del RTOS y de una Tarea “Demo” y destruccion: static void vDemo( void *pvParameters ) { for ( ; ; ) { vTaskDelay( 1000 ); vTaskDelete(xHandle); } } /*Main Program*/ int main( void ) { prvSetupHardware(); xTaskCreate( vDemo, "Demo", STACK_SIZE, NULL, tskIDLE_PRIORITY, xHandle ); vTaskStartScheduler(); return 0; }
  • 18. Control de la tarea /4 Uso del Stack de Memoria: static void vDemo( void *pvParameters ) vdemo() { portLONG lData[1000]; lData[] for ( ; ; ) { func_1(); } func_1() } cData_1[] void func_1(void) { portCHAR cData_1[1000]; func_2() func_2(); } cData_2[] void func_2(void) { portCHAR cData_2[1000]; process(); STACK_SIZE }
  • 19. Sincronización de la tarea /1  Una tarea no es util si no interactúa con otros procesos.  Se requiere que permita sincronizar, proteger y compartir.  FreeRTOS ofrece Semaforos y Mutex.  Pueden correr en una tarea o en código de interrupciones.  Los semaforos permiten la sincronización entre dos tareas, siendo una la que espera (Take) y otra que la dispara o libera(give)  Los semaforos pueden ser binarios o contadores. Dar incrementa Si esta en su maximo no incrementa Tomar decrementa Si es cero y se lo toma bloquea  Los Mutex son una especializacion de los semaforos binarios, permiten la proteccion para el acceso de un recurso comun serializado.
  • 20. Sincronización de la tarea /2 API's de sincronización:  VsemaphoreCreateBinary  VsemaphoreCreateCounting  XsemaphoreCreateMutex  XsemaphoreCreateRecursiveMutex  XsemaphoreTake  XsemaphoreTakeRecursive  XsemaphoreGive  XsemaphoreGiveRecursive  xSemaphoreGiveFromISR
  • 21. Sincronización de la tarea /3 Ejemplo de captura de recurso compartido:  Creación de recurso: vSemaphoreCreateBinary(sem1);  Captura y liberación de recurso (2 procesos iguales): if (xSemaphoreTake(sem1, (portTickType) 1000 ) != pdTRUE) { return ERROR; } doProcess(); xSemaphoreGive(sem1);
  • 22. Sincronización de la tarea /4 Ejemplo de sincronización, productor y consumidor: Creación de recurso: VsemaphoreCreateCounting(sem1, 0); Consumidor: if (xSemaphoreTake(sem1, (portTickType) portMAX_DELAY ) != pdTRUE) { return ERROR; } processData(); Productor: feedData(); xSemaphoreGive(sem1);
  • 23. Comunicación entre tareas /1 Provee los medios para compartir datos entre tareas aisladas.  Colas de mensajes:  Tuberias (Resultado de un proceso es entrada para otro)  Puede variar el tamaño del mensaje  Stout / stdin  Mailbox (Pub / sub)  Semaforos  Memoria compartida Bloqueos Tarea 1 Memoria Tarea 2  A menor nivel de abstraccion mayor probabilidad de errores  Los recursos del RTOS son caros, usar con criterio.
  • 24. Comunicación entre tareas /2 Colas de mensajes: Creacion de una cola: xQueue = xQueueHandle xQueueCreate(lenght, size); Envio de datos por cola: xQueueSend(xQueue, itemToQueue, timeOut); Recepcion de datos por cola: xQueueReceive(xQueue, itemToDeQueue, timeOut);
  • 25. Resumen  Tarea no instanciada no ocupa tiempo en el manejador (scheduler) ni RAM.  Tarea en demora o en espera de eventos (semaforo o cola) no consume tiempo de procesador (Idle waiting)  Evitar busy waiting!! While ( !done ) { };  Crear objetos del RTOS consume tiempo y memoria, usar con criterio!!!
  • 26. El por qué del Driver Abstraen la logica del dispositivo de la funcionalidad genérica. Permite la reusabilidad del driver en diferentes aplicaciones Permite la independencia de la aplicacion en diferentes arquitecturas Permite sincronizar eventos del hardware con eventos del RTOS Permite considerar al procesamiento del hardware como una tarea mas del sistema Los periféricos son lentos comparados a la CPU
  • 27. Partes de un Driver /1 Entre la tarea y el driver se maneja el “que” •Formado en la mayoria de los casos por los siguientes metodos básicos: Tarea 1 • Init() / Reset() • Open() • Close() • Read() • Write() Interface •Metodos persistentes sobre las diferentes De arquitecturas Driver llamada al sistema La interfase entre el driver y el hardware maneja el ”como”: •En la mayoria de los casos esta definida por el uso de: Hardware • I/O de hardware • Manejo de las interrupciones • Manejo del DMA • Manejo de la memoria
  • 28. Partes de un Driver/2 Capa de Abstracción del hardware (HAL) Virtualiza el hardware de la plataforma para Driver que diferentes drivers puedan ser portados facilmente en diferentes hardwares. HAL Puede ser tan simple como define en un archivo de cabeceras (header file) hasta una Hardware capa completa de código a la cual se interfacea.
  • 29. Desarrollo de un driver Código en espacio de aplicación:  Llamadas a la interface del driver (APIs)  Usan el hilo del programa que lo llama  Previamente instanciado (como un servicio)  Usan su propio hilo  Pueden ser instanciados y/o removidos del scope del kernel  La mayoria del procesamiento se encuentra aqui Código en interrupciones:  Es irremovible, se ubica en tiempo de compilación  Es simple y corto  Solo se toman los datos  KISS (Keep it simple Silly)
  • 30. Desarrollo de un driver /1  Puntos importantes:  Requerimientos para el driver  Tiempo de respuesta  Capacidades de direccionamiento  Especificaciones del hardware  Encuestado (Polled)  Basado en IRQs  Basado en DMA  Mixtos
  • 31. Desarrollo de un driver /2 Secciones Criticas:  Porción de código que debe ser tratada atómicamente  Una vez entrado en sección critica no se interrumpe  Generalmente acceden a un recurso de HW  Deben ser serializables  Tipos de secciones criticas En espacio de aplicación En espacio del kernel En espacio de interrupciones  Métodos de protección según severidad Baja: Mutex () Media: evitar cambio de contexto Alta: Evitar cierto tipo de interrupciones Evitar interrupciones dentro de interrupciones Mas Alta!: Deshabilitar interrupciones globales
  • 32. Tipos de drivers /1 Interface humana   De comunicaciones  Entrada  Usart  Teclados matriciales  SPI  Pulsadores  I2C  Touch pads  I2S  Mouse  USB  Salida  De temporizacion  Pantallas  Timers  LCD de caracteres  Counters  LCD Graficas  PWM / CCP  VGA  De entrada salida  Sonido  Controladores de memoria  DACs  Controladores de puertos  Codecs
  • 33. Tipos de drivers /2 Sincrónicos  Tambien llamados bloqueantes.  Por diseño la tarea que llama al driver esperara el resultado de la operación por la cual consulto.  No significa que otras tareas no puedan ocupar el tiempo del procesador.  Una vez completado se despertara a la tarea en espera y consumira su resultado.  Son mas simples que otro tipo de drivers.  Suelen utilizarse semáforos binarios para tal fin.  Se utilizan al menos 2 semáforos:  Uno para garantizar la captura del recurso (mutex)  Otro para informar la conclusion de la tarea.
  • 34. Tipos de drivers /3 Ejemplo driver sincrónico Tarea 1 Tarea 2 T
  • 35. Tipos de drivers /4 Ejemplo driver sincronico unsigned portCHAR cSendFrame(pI2sSendData pData) { unsigned portCHAR errCode; if (xSemaphoreTake(xMutex, (portTickType) xBlockTime ) != pdTRUE) //Intento tomar mutex { return ERR_SEM_TIMEOUT; } DoBgProcess(); //Proceso del HW en segundo plano if (xSemaphoreTake(xSem, (portTickType) xBlockTime ) == pdTRUE) //Espero que complete { errCode = SUCCESS; } else { errCode = ERR_TASK_TIMEOUT; } xSemaphoreGive(xMutex); //Libero Mutex return errCode; } void vI2sISR(void) { if (completed) { takeData(); xSemaphoreGiveFromISR(xSem, &xN); //Señalo evento de finalización } }
  • 36. Tipos de drivers /5 Asincrónicos  Por diseño la tarea que llama al driver puede continuar ejecutando sin esperar el resultado de la operación que pidio.  Oportunidad para avanzar tareas hasta que la operación este lista.  Mucho mas complejos de diseñar y a veces innecesarios  Mas impredecibles en su comportamiento  Metodos:  Poll  Señales / Slots  Callback
  • 37. Tipos de drivers /6 Ejemplo de driver asincrónico (Polled): Driver Tarea 1 Cola IRQ Hardware Soft
  • 38. Tipos de drivers /7 Ejemplo de driver asincrónico (Callback): Tarea 1 B Tarea 1 A T Driver Tarea 1 B
  • 39. Drivers desarrollados Lista de drivers desarrollados para FreeRTOS  Puerto serie  SPI  I2S  Fat  LCD gráfico  Timer
  • 40. Ejemplo de uso – audio player con FreeRTOS Aplicativo reproductor de archivos WAV SOC Servicio Chan’s FATFS RTC diskio Consulta RTC FreeRTOS SPI Driver I2S Driver PORT Hardware SPI I2S TIMER SD/MMC AUDIO CODEC Hardware externo
  • 41. Conclusiones Los RTOS: Consumen mas tiempo de procesador Consumen mas memoria Reducen la incertidumbre Reducen el tiempo de desarrollo Mejoran la mantenibilidad Mejoran la Abstraccion Mejoran la independencia de tareas Mejoran la escalabilidad Son menos suceptible a errores Permiten facilemente la priorizacion Facilitan la portabilidad
  • 42. Bibliografía • Using the FreeRTOS Real time Kernel, a Practical Guide - Richard Barry • http://freertos.org • Architecture of Device I/O Drivers" - David Kalinsky, Ph.D. • Linux Device Drivers, Third Edition - Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman • An embedded Software Primer – David E. Simon • http://elm-chan.org/fsw/ff/00index_e.html • http://www.cs.brown.edu/courses/csci1600/handouts/notes/ipc.pdf • http://sistemasembebidos.com.ar/foro
  • 46. Placa ARM7TDMI adaptada de LQFP64 a PDIP (XTAL, USB y JTAG) Ejemplo de uso para medicion de acelerometros
  • 47. Demo AudioPlayer Placa casera de desarrollo
  • 48. Ejemplo Driver de video Ejemplo Generador de ondas digital
  • 49. Codigo fuente de los ejemplos

Notas del editor

  1. F16 – Se volteaba al pasar la linea del ecuador Patriot – Error en la precision del tiempo calculaba mal el tracking del radar Therac_25 – Sobreexponia a los pacientes de radiacion Ariane-5 – Error en la matematica bloquea sistemas de navegacion ( flotat de 64 en espacio de 16 bits) Mars Climate Orbiter: Error de conversiones de millas y kilometros