Desarrollo de Firmware para productos Electrรณnicos a nivel Industrial Abril 21 de 2020
Que es firmware?
Características del firmware ●
Acceso directo a recursos de hardware (Dependencia de la máquina)
●
Instrucciones o lenguajes de bajo nivel (Assembler/C, C++, etc)
●
Enfoque en tareas específicas
Aplicaciones electrónicas ● Sistemas biomédicos ● Seguridad electrónica ● Instrumentación industrial ● Electrónica de consumo ● Sistemas de control
Antecedentes en Colombia
Problemas de oferta académica
Mutex Apuntadores a funciones Operaciones atómicas
Colas
Estructuras y uniones
Planificación cooperativa Semáforos
Planificación preferente
Apuntadores a objetos
Problemas de capacitaciรณn especializada
Costos de licencias
https://store5.esellerate.net/store/checkout/CustomLayout.aspx?s=STR171702125&pc=&page=OnePageCatalog.htm
https://www.cnx-software.com/2012/03/30/express-logic-releases-threadx-lite-rtos-for-arm-cortex-m/
Realidad Colombiana
Realidad Colombiana ARDUINO
Thread X
Realidad China
Conceptos fundamentales de diseĂąo de firmware industrial
Operaciones atรณmicas
Operaciones atรณmicas
Operaciones atรณmicas
Variables compartidas = volatile
Variable local = copia de seguridad
Lectura/escritura atรณmica
Uso de la variable local
Operaciones atรณmicas: Caso de fallo
Concurrencia
● Tareas “al mismo tiempo” ● Procesador muy “ocioso” ● Librerías “fáciles” = procesador aburrido
Tareas
â—? Tareas = bucles infinitos â—? Planificador = reparte el procesador
Imagen tomada de http://www.dietergalea.com/parallelism-concurrency/
Concurrencia
Imagen tomada de http://www.dietergalea.com/parallelism-concurrency/
Overheading
Tiempo real
● Un proceso que se ejecuta a muy alta
velocidad ● Los resultados se ven al mismo tiempo que el
proceso se ejecuta ● Un proceso con sistema de tiempo basado
en RTC (Real Time Clock) Imagen tomada de http://www.dietergalea.com/parallelism-concurrency/
TĂŠcnicas de planificaciĂłn en sistemas embebidos
Planificaciรณn cooperativa
Planificación cooperativa ● Las tareas ceden voluntariamente el uso del
procesador ● Espacio de memoria compartido entre tareas ● Requiere menos recursos (CPU & memoria) ● No se garantiza el cumplimiento estricto de tiempos
● Overhead mínimo (despreciable)
Planificaciรณn preemptive
Planificación preemptive ● Las tareas ceden el procesador y también son
interrumpidas ● Espacio de memoria propio para cada tarea ● Requiere muchos recursos (CPU & memoria) ● Permite el cumplimiento estricto de tiempos (RTOS)
● Overhead Alto
Cual tipo de planificación debo usar? ❑
Preemptive: •
Sistemas de misión crítica • Lógica de negocio muy compleja • Alto número de procesos concurrentes ❑
Cooperativa: •
Dispositivos de bajo costo • Procesador con poca RAM / ROM • Tiempos de ejecución no-críticos
Objetos y herramientas bรกsicos en sistemas concurrentes
MUTEX
SEMÁFOROS
COLAS
Productor
Consumidor
Técnicas/Frameworks para desarrollo concurrente ● Máquinas de estado finito ● FreeRTOS
● Protothreads ● Cocoos ● µC/OS-II ● QNX
Ejemplos de sistemas embebidos concurrentes
ALARMA DE VEHÍCULO No tiempo real
Tareas concurrentes de alarmas PUNTILLA CAPOT
SIRENA
SUN ROOF
MOTOR BAUL
MÓDULO VIDRIOS
SENSOR PUERTA
LUCES
FRENO
PULSADOR VALET
IGNICIÓN
MÓDULO BLOQUEO
VIBRO SENSOR
TABLERO MENSAJES VARIABLES (tiempo real)
Tareas concurrentes de tablero
GRACIAS ! fabiorov@gmail.com