Desarrollo y Depuracion.pptx
Transcripción
Desarrollo y Depuracion.pptx
31/10/13 Presentación • Vinculación Docentes: • Campus Virtual (preferencial) Profesor: Ing. Marcelo E. Romeo [email protected] [email protected] Skype: meromeo http://secacad.cvg.utn.edu.ar/course/ view.php?id=179#section Horario: Jueves de 11 a 14 hs Diseño, Desarrollo y Depuración 1 1 Diseño, Desarrollo y Depuración 2 2 1 31/10/13 Introducción Introducción y repaso de términos y conceptos 1. 2. Planteo General. Introducción. • Lógica cableada vs. Lógica programada Una unidad central de proceso o microprocesador Circuitos de comunicación con el mundo exterior o interfaces Una memoria semiconductora Diseño, Desarrollo y Depuración 3 Diseño, Desarrollo y Depuración 4 2 31/10/13 Objetivo de la Asignatura Sistemas Empotrados (embedded) Sistemas Dedicados – Sistemas en Tiempo Real Diseño, Desarrollo y Depuración Basados en componentes programambles (ej. Microcontroladores, DSPs….) 1. Son generalmente sistemas reactivos de tiempo real: 2. “Reaccionan” a eventos externos 3. Mantienen interacción permanente. 4. Están continuamente funcionando. 5. Están sujetos a restricciones externas de tiempo 6. Realizan varias tareas concurrentemente. 5 Diseño, Desarrollo y Depuración 6 6 3 31/10/13 Un ejemplo completo de SS.EE. Sistema de Adquisición de datos sensor Diseño, Desarrollo y Depuración 7 7 Microcontrolador (uC) Diseño, Desarrollo y Depuración Interfaces de salida sensor Acondicionamiento de Señaeles sensor actuador indicador 8 8 4 31/10/13 Cantidad de direcciones en la palabra de instrucción Arquitecturas de las computadoras Arquitectura Von Neumann DIREC. 0000 0001 0002 . . Memoria de Programa y de Datos indistinta BUSES 4 Direcciones CPU nnnn • Arquitectura Harvard DIREC. 0000 0001 0002 . . MEMORIA DE PROGRAMA BUSES CPU BUSES nnnn Diseño, Desarrollo y Depuración MEMORIA DE DATOS DIREC. 0000 0001 0002 . . mmmm 9 Diseño, Desarrollo y Depuración 10 5 31/10/13 Cantidad de direcciones en la palabra de instrucción Implementación en un Microcontrolador 3 Direcciones En los microcontroladores de 32 bits se implementa una versión de las máquinas de 3 direcciones en las que las direcciones de los operandos se da por medio de registros de 32 bits que apuntan a posiciones de memoria en la que se encuentran los mismos Diseño, Desarrollo y Depuración 11 Diseño, Desarrollo y Depuración 12 6 31/10/13 ¿Qué son los sistemas embebidos? Son circuitos que hacen algún procesamiento de datos, destinados a una aplicación particular …a diferencia de las computadoras, que tienen múltiples aplicaciones según el software que se instale. Sistemas Empotrados Generalmente forman parte de un sistema mayor …que puede incluir partes analógicas, electromecánicas, etc. Por eso se le dice embebido Ejemplos de aplicaciones: Control industrial • cajas registradoras • calculadoras • periféricos para computadoras • domótica • PDAs • teléfonos • control de electrodomésticos • controles remotos • cámaras digitales • reproductores de DVD y mp3 • equipos para medicina • GPS • telemetría • routers • señalización • avionics • control de automóviles • videojuegos • etcétera • etcétera… Diseño, Desarrollo y Depuración 13 Diseño, Desarrollo y Depuración 14 7 31/10/13 ¿Cómo se implementan los SE? Sistema en un Chip (SoC) En un chip, se pueden conectar entre sí distintos bloques prediseñados, como si fueran componentes que se interconectan en un circuito impreso. A esos bloques se los llama cores (núcleos) o IP (intellectual- Son sistemas principalmente digitales property, o propiedad intelectual) Compuestos por circuitos combinacionales y secuenciales. Estos últimos, en la gran mayoría de los casos, son sincrónicos. El la manera típica de diseñar un ASIC Pueden incluir un procesador, o incluso varios complejo Distintas formas de implementarlos: ASIC = Application-Specific IC Todos componentes COTS (commercial off-the-shelf) Se puede hacer lo mismo con una FPGA Esos y algún ASIC (application-specific integrated circuit). En lugar de un ASIC, una FPGA (field-programmable gate array) …y se le dice PSoC = Programmable System on a Chip Para mejor performance, algunas FPGA traen (fijo) un procesador Cada vez hay más aplicaciones, porque pueden hacerse dispositivos que La integración normalmente se hace mediante: Un lenguaje de descripción de hardware (ej. VHDL, Verilog) Cuestan menos x transistor, Consumen menos x transistor, Son más rápidos Diseño, Desarrollo y Depuración Se forma así un SoC (System on Chip) 15 O una herramienta gráficaDiseño, Desarrollo y Depuración 16 Un core puede ser un procesador 8 31/10/13 Distintos tipos Sistemas Empotrados (embedded) Basados en componentes programambles (ej. Microcontroladores, DSPs….) 1. Son generalmente sistemas reactivos de tiempo real: 2. “Reaccionan” a eventos externos 3. Mantienen interacción permanente. 4. Están continuamente funcionando. 5. Están sujetos a restricciones externas de tiempo 6. Realizan varias tareas concurrentemente. • Microprocesador: Solo tiene las unidades de ejecución y control, registros y ALU • Microcontrolador: Además incluye internamente interfaces de E/S y Memoria (opcionalmente, conversores, PLLs, etc.). Distintos tipos y potencias de procesamiento • Procesador Digital de Señales (DSP): Microprocesador optimizado para trabajar en tiempo real Diseño, Desarrollo y Depuración 17 Diseño, Desarrollo y Depuración 18 9 31/10/13 Sistemas Empotrados (embedded) Ejemplo – Hardware estandar Determinismo En cada estado, un conjunto de entradas produce un único conjunto de salidas El próximo estado, en principio podrá ser predicho Determinismo temporal. Análisis del peor caso en las transiciones de estado à Tiempo REAL. Actuación dentro de ciertos límites temporales (propios de cada problema) Diseño, Desarrollo y Depuración 19 19 Diseño, Desarrollo y Depuración 20 10 31/10/13 Ejemplo – Firmware • Hoy es recomendado que para pequeñas producciones, se empleen placas comerciales sin necesidad de diseñar impresos, comprar componentes, armarlas y probarlas. • Para esas placas y a fin de minimizar el tiempo de desarrollo, se incorpore un sistema operativo en tiempo real, que por lo menos, nos evita tener que inicializar todos los componentes (y por supuesto agregarán múltiples prestaciones adicionales de mucha mayor envergadura) Diseño, Desarrollo y Depuración 21 ¿Cómo encarar el diseño de un sistema embebido? Diseño, Desarrollo y Depuración 22 11 31/10/13 Temario Estado del Arte, ¿cuál es? Introducción Lineamientos a seguir: Estado del arte KISS “Keep It Simple, Stupid” Problemática general Criterios de diseño DFE “Design for Excellence” Casos típicos de estudio Un ejemplo de aplicación Diseño, Desarrollo y Depuración Documentarse debidamente antes de comenzar el diseño 2323 Diseño, Desarrollo y Depuración 2424 12 31/10/13 KISS, ¿qué significa? KISS, ¿qué se procura? KISS es un acronismo en inglés que significa: Afirma que la simplicidad es la clave del éxito de un diseño en ingeniería “Keep It Simple, Stupid” (Mantenlo simple, estúpido) En el desarrollo de sistemas complejos en ingeniería debemos: Una acepción menos chocante es: “Keep It Short and Simple” (Mantenlo corto y simple) Comenzó a usarse en EEUU en los años 60 (en relación con el proyecto Apollo) Deriva del “Principio de Economía” de William of Ockham (siglo XIV DC) y variantes formuladas por Leonardo da Vinci, Isaac Newton, Albert Einstein y otros. Diseño, Desarrollo y Depuración 2525 Desarrollar empleando partes sencillas, comprensibles que redundará en errores de fácil detección y corrección. Rechazar lo rebuscado e innecesario En otras palabras advierte al diseñador para que en su labor no “compre” problemas sino que “venda” soluciones Diseño, Desarrollo y Depuración 2626 13 31/10/13 DFE, ¿qué significa? DFE, ¿qué se procura? Diseñar para la excelencia no implica la implementación de todos y cada uno de los ítems listados, ya que que cualquier actividad de diseño estará fuertemente condicionado por dos factores: DFE “Design For Excellence”: Manufacture and Assembly Reliability Testing and Service Disassembly and Reassembly Use and Operability La idiosincrasia tanto del diseñador como del medio en que éste se desempeña Green, Environment and Recycling Quality and Cost El contexto en que se lleve a cabo el diseño propiamente dicho Logistic Inspection and International Etc., etc. Diseño, Desarrollo y Depuración 2727 Diseño, Desarrollo y Depuración 2828 14 31/10/13 Documentarse antes de …, ¿qué significa? Documentarse antes de …, ¿qué se procura? Aproveche las facilidades que ofrecen las vías de comunicación actuales para la búsqueda de información Seguramente Ud. no es el primero que intenta resolver el problema que enfrenta, por tal motivo es recomendable que recopile toda documentación referida al diseño que está por encarar, a las técnicas y/o herramientas que pueden serle útiles para el diseño, etc., etc.; como por ejemplo: Procure encarar la búsqueda con sentido común y criterio Recuerde que la búsqueda en si misma es un medio y no un fin Hojas de Datos (Fe de Erratas) Notas de Aplicación Lea, analice y clasifique toda la documentación recopilada Ejercicios o Ejemplos de Diseño Manuales de Usuario Manuales de Referencia Técnica Etc., etc. Diseño, Desarrollo y Depuración 2929 Durante la etapa de diseño saque provecho de la información recopilada “aprendiendo del trabajo de los demás” Diseño, Desarrollo y Depuración 3030 15 31/10/13 Problemática General Metodología de Trabajo Debemos detenernos a analizar lo siguiente: Optamos por el más usado, simple y seguro Recomendaciones: Metodología de trabajo Procure aprender del método Diseño electrónico Analógico/Digital (Hard & Soft) Procure adaptarlo a su gusto Dibujo del Impreso Si no esta conforme con el método: Componentes Genere su propio método, pero use uno, pues: Producto Sin método cada diseño nos obliga a comenzar de cero Fabricación del circuito impreso Fabricación del Producto Diseño, Desarrollo y Depuración 3131 Diseño, Desarrollo y Depuración 3232 Etc., etc. 16 31/10/13 ¿Cuál es el método? ¿En qué consiste el método? El método más usado simple y seguro para desarrollar aplicaciones con micro consiste en fraccionar la solución en módulos simples: Comunicar los módulos simples mediante: Flags / Semáforos Variables Startup / Inicio => Inicializaciones básicas del micro Programa Principal => Iteración perpetua de Tareas (algoritmos Colas de control) Manejadores / Drivers de Entrada / Salida => Interacción con el mundo exterior (atención de eventos y sincronismos) Diseño, Desarrollo y Depuración 3333 Garantizar que ningún módulo se apropie de la CPU (comportamiento comunitario) Diseño, Desarrollo y Depuración 3434 17 31/10/13 Método de Diseño (1 de 2) Interrupciones Deshabilitadas Entradas IN Serie Paralelo I2C SPI CAD Timer Ticks ¡ Cola Llena ! Deshabilitar interrupciones de Entrada Drivers Interrupciones de entrada Reset Interrupciones OUT: Deshab IN: Hab Startup / Inicio Tarea 1 Drivers Interrupciones de salida Flags Variables Tarea 2 variable? Colas Colas Cola? Tarea n PROGRAMA PRINCIPAL Diseño, Desarrollo y Depuración Salidas Cola? Flag? Variables Garantizar que ningún módulo se apropie de la CPU (comportamiento comunitario) Flag? variable? Flags Método de Diseño (2 de 2) OUT Serie Paralelo I2C SPI CDA Timer Ticks ¡ Cola Vacía! Deshabilitar interrupciones de Salida 35 ? ? Así SI ! Así NO ! Acción Diseño, Desarrollo y Depuración Acción 3636 18 31/10/13 Criterios de diseño Casos típicos de estudio Cortex M ejecuta ~ 100 MIPS Como principiantes debemos asegurar que: Tinstrucción ≈ 10 nS Tcpu-pp ≤ 10 µS Tick-mín ≥ 10 µS Tcpu-pp ≤ 1/2 Fmax Entrada a detectar/Salida a generar Tcpu-driver/tarea ≤ 1µS Fmax Entrada a detectar/Salida a generar ≤ 500 kHz unsigned char data timerTickUChar; ≤1000 Tinstrucción unsigned int data timerTickUInt; ≤ Tick-mín // 0 a 2,5 mS // 0 a 655 mS unsigned long int data timerTickULongInt; // 0 a 42.900.000 mS ≤ 60~70% ∑ (Tcpu-driver/tarea) if (!timerTickUXxx) timerTickUXxx--; Tcpu-driver/tarea ≤ Tcpu-pp / 10 Diseño, Desarrollo y Depuración 3737 Diseño, Desarrollo y Depuración 3838 19 31/10/13 ¿Cómo mejorar el método? ¿Cómo mejorar el método? Dividir la solución en capas aporta portabilidad Para mejorar el método es conveniente además dividir la solución en capa de software: P O R T A B L E Capa de acceso al Hardware Capa de Manejadores de Dispositivos Capa de Aplicación Aplicación Device Drivers Core Peripheral Access Layer Device Peripheral Access Layer Access Functions for Peripherals Hardware (Core & Peripherals) Diseño, Desarrollo y Depuración 3939 Diseño, Desarrollo y Depuración 4040 20 31/10/13 Herramientas Herramientas de depuración • Simuladores / Depuradores Simuladores: Primera parte del curso • Programas Monitores Keil: https://www.keil.com/demo/eval/arm.htm • Emuladores en tiempo real. • ICE Segunda parte del curso: • JTAG (IEEE Std 1149.1) LPCxpresso: http://ics.nxp.com/lpcxpresso/ ~LPC1769/#GetLPCXpresso Tanto para Windows, Para MAC OSX como para Linux Diseño, Desarrollo y Depuración 41 Diseño, Desarrollo y Depuración 42 21 31/10/13 Keil – Simulador / Depurador Simuladores Simulación de periféricos Registros Puertos de E/S Assembler equiv Temporizadores Periféricos P. Ej A/D Código escrito en C Diseño, Desarrollo y Depuración 43 Diseño, Desarrollo y Depuración 44 22 31/10/13 Simuladores ICE Simulación de periféricos Comunicación serie Diseño, Desarrollo y Depuración 45 Diseño, Desarrollo y Depuración 46 23 31/10/13 ICE IEEE Std 1149.1 boundary-scan cells normal data output normal data input test data output test data input Diseño, Desarrollo y Depuración 47 Diseño, Desarrollo y Depuración 48 24 31/10/13 JTAG (Joint Test Action Group ) 1. 2. 3. 4. 5. En la familia Cortex TDI (Entrada de Datos de Testeo) TDO (Salida de Datos de Testeo) TCK (Reloj de Testeo) TMS (Selector de Modo de Testeo) TRST (Reset de Testeo) es opcional. Diseño, Desarrollo y Depuración 49 Diseño, Desarrollo y Depuración 50 25 31/10/13 Temario • • • • • • • Máquinas de estado y sistemas secuenciales Diseño, Desarrollo y Depuración 51 Introducción Estado del arte Problemática general Criterios de diseño Casos típicos de estudio Un ejemplo de aplicación Ejercicios propuestos Máquinas de Estado 52 26 31/10/13 ¿Como qué se las conoce? Máquina de Estado (State Machine) – Modelo matemático de un sistema con entradas y salidas discretas, que posee sintaxis y semántica formales – Utiles para representar aspectos dinámicos no representables por diagramas de otro tipo Máquinas de Estado 53 • Existen múltiples terminologías: – – – – – – – – – – Statechart FSM & EFSM (Finite State Machine & Extended FSM) PFSM & CFSM (Partial & Complete FSM) TFSM (Timed FSM) DFSM & NFSM (Deterministic & Nondeterministic FSM) LTS (Labelled Transition System) Automata (teoría de lenguajes) Timed Automata IOA (Input Output Automata) Etc., etc., etc. Máquinas de Estado 54 27 31/10/13 ¿Qué son? ¿Para qué sirven? • Especificar aspectos formales relacionados con: • Modelo de Comportamiento (Behavior), denotan evolución mediante: – – – – Estados (comportamiento estático) Transiciones (evolución entre estados) Excitaciones (que condicionan las transiciones) Acciones (asociadas a las transiciones) – Determinísticas y no determinísticas – – – – – – – – Sistemas de Control en Tiempo Real Dominios Reactivos o Autónomos Computación Reactiva Protocolos Circuitos Eléctricos/Electrónicos (Lógica Secuencial) Arquitectura de Software Análisis Lexicográfico, Gramatical Etc., etc., etc. • Composición en paralelo de múltiples máquinas Máquinas de Estado 55 Máquinas de Estado 56 28 31/10/13 ¿Por qué usarlas? ¿Cómo se formalizan? • Mediante diversos métodos de representación: • Rigurosa descripción del comportamiento de la solución al problema planteado • Soluciones muy sofisticadas y ridículamente sencillas. Incluso compuestas por la operación en paralelo de múltiples máquinas – • Código más simple, eficiente y preciso. Más fácil de depurar, modificar, expandir y mejor organizado Existen métodos para minimizar estados • Mediante diversos lenguajes de programación: – Assembly, C p/micros o PCs – C++, Java, UML – VHDL, etc., etc., etc. • Facilitan el análisis, el diseño y la implementación Máquinas de Estado – Funciones matemática – Diagramas / Tablas de Estados y Transiciones – Redes de Petri 57 Máquinas de Estado 58 29 31/10/13 Repaso: Síntesis de circuitos secuenciales sincrónicos Casos típicos de estudio a • Surgen de combinar los siguientes factores: – – – – – Excitadas por Eventos Excitadas por Sincronismos (time-out, timer-tick) Excitadas por Semáforos/Variables/Colas (mensajes) Interacción con Entradas/Salidas Composición en paralelo de múltiples máquinas X/0 d 1/0 b c 1/0 e – Moore & Mealy – Turing & Markov 59 1/0 1/0 0/0 f 0/0 0/0 • Algunas máquinas con nombre propio: Máquinas de Estado 0/0 0/0 0/0 g X/0 1/0 h i Máquinas de Estado 1/1 X/0 60 30 31/10/13 Tablas de estados E s t a d o sig.,salida Estadosig. salida Y=1 Estado Estado Y=0 a b,0 c,0 a b d,0 e,0 b Y=0 Diagramas de estado E s t a d o sig.,salida Y=1 Estado Y=0 Y=1 b,0 c,0 a b,0 b,0 d,0 e,0 b d,0 e,0 c f,0 g,0 c d,0 e,0 d h,0 i,0 d h,0 i,0 d h,0 i,0 e i,0 i,0 e i,0 i,0 e i,0 i,0 h a,0 a,0 f h,0 i,0 h a,0 a,0 i a,0 a,1 i a,0 a,1 g i,0 i,0 h a,0 a,0 i a,0 a,1 Máquinas de Estado a X/0 b e d 1/0 X/0 0/0 X/0 61 1/0 0/0 h i Máquinas de Estado 0/0 1/1 62 31 31/10/13 Diagramas de estado Estado Un ejemplo de aplicación: Contador • Contador Ascendente / Descendente QC QB QA a 0 0 0 b 0 0 1 d 0 1 0 – Cuenta descendente desde CUENTAfINAL è hasta CUENTAiNICIAL e 1 1 0 – Itera h 0 1 1 i 1 1 1 no asignado 1 0 0 no asignado 1 0 1 – Cuenta ascendente desde CUENTAiNICIAL è hasta CUENTAfINAL • Recursos – Variables: estado , cuenta – Defines: ASCENDENTE, DESCENDENTE, ESTADOmAXIMO, ESTADOiNICIAL, CUENTAiNICIAL, CUENTAfINAL Máquinas de Estado 63 Máquinas de Estado 64 32 31/10/13 Contador Contador Diagrama de Estados y transiciones Tabla de Estados y Transiciones RESET / cuenta = CUENTAiNICIAL Estado Actual cuenta == CUENTAfiNAL / cuenta-- X ASC DES cuenta < CUENTAfiNAL / cuenta++ ASCENDENTE cuenta > CUENTAiNICIAL / cuenta -DESCENDENTE cuenta == CUENTAiNICIAL / cuenta++ Máquinas de Estado 65 Excitación Estado Futuro Acción RESET || estado >= ESTADOmAXIMO ESTADOiNICIAL cuenta = CUENTAiNICIAL estado < ESTADOmAXIMO && cuenta < CUENTAfINAL ASCENDENTE cuenta++ estado < ESTADOmAXIMO && cuenta == CUENTAfINAL DESCENDENTE cuenta-- estado < ESTADOmAXIMO && cuenta > CUENTAiNICIAL DESCENDENTE cuenta-- estado < ESTADOmAXIMO && cuenta == CUENTAiNICIAL ASCENDENTE cuenta++ Máquinas de Estado 66 33 31/10/13 Contador Contador Implementaciones posibles Implementación con switch (1 de 3) – Switch (estado) – Arrays de punteros a función (estado) – Múltiples if (estado) • Desarrolladas en esta presentación /* Inclusión de Archivos */ #include <MacrosLPC.h> // Incluyo Archivo con Macros de Uso General #include <LPC210x.H> // Incluyo Archivo con defines para 8051 – Tablas de excitaciones & acciones (estado, excitación) • Parser – Estado superior de la técnica del arte. Al fin de la presentación – Se recomienda compararlas en la práctica de laboratorio /* Máquinas de Estado /* Declaración de Prototipos void InicializarContador (void); void Contador (void); 67 */ Defines del correspondientes al Contador #define ASCENDENTE #define DESCENDENTE #define ESTADOmAX #define ESTADOiNICIAL #define CUENTAiNICIAL #define CUENTAfINAL */ 0 // Estados 1 DESCENDENTE + 1 ASCENDENTE 0x00 // Límites de Cuenta 0xFF Máquinas de Estado 68 34 31/10/13 Contador Contador Implementación con switch (2 de 3) /* Reserva de Variables directo */ Implementación con switch (3 de 3) // Reservas en RAM Interna de acceso unsigned char data estado; // Estado de Contador de 8 bits Asc. / Desc. unsigned char data cuenta; // Contador de 8 bits Asc. / Desc. void Contador (void) { // Si el Estado esta fuera de rango reinicializa la M de E y retorna esle { estado = DESCENDENTE; cuenta--; } break; if (estado >= ESTADOmAX) { InicializarContador(); return; case DESCENDENTE: } /* Programa if (cuenta > CUENTAiNICIAL) cuenta--; switch (estado) { // En función del Estado y la Excitación Actualiza las Variables, las Salidas de Control y retorna */ void InicializarContador (void) { // Inicializa las Variables y Salidas de Control estado = ESTADOiNICIAL; cuenta = CUENTAiNICIAL; else { estado = ASCENDENTE; cuenta++; } break; case ASCENDENTE: if (cuenta < CUENTAfINAL) cuenta++; } } return; } Máquinas de Estado 69 Máquinas de Estado 70 35 31/10/13 Contador Contador Implementación c/punteros a función (1 de 2) Implementación c/punteros a función (2 de 2) /* Declaración de Prototipos */ void Ascendiendo(void) { if (cuenta < CUENTAfINAL) cuenta++; void Ascendiendo (void); void Descendiendo (void); // Arreglo de Punteros a las Funciones para cada Estado code void (code *ArrayFuncionesEstadoContador []) (void) = { Ascendiendo, \ Descendiendo}; /* Programa */ else { estado = DESCENDENTE; cuenta--; } void Contador (void) { // Si el Estado esta fuera de rango reinicializa la M de E y retorna if (estado >= ESTADOmAX) { InicializarContador(); return; } Máquinas de Estado 71 else { estado = ASCENDENTE; cuenta++; } return; } (*ArrayFuncionesEstadoContador [estado]) (); void Descendiendo (void) { if (cuenta > CUENTAiNICIAL) cuenta--; return; } Máquinas de Estado 72 36 31/10/13 Contador Ejercicios propuestos Implementación con múltiples if /* Programa */ • Detector de Secuencia } void Contador (void) { // Si el Estado esta fuera de rango reinicializa la M de E y retorna – Seguimiento de señales return; } • Generador de Secuencia – Señales luminosas // (estado == DESCENDENTE) else { if (estado >= ESTADOmAX) { InicializarContador(); return; } if (estado == ASCENDENTE) { if (cuenta < CUENTAfINAL) cuenta++; else { estado = DESCENDENTE; cuenta--; • • • • • • if (cuenta > CUENTAiNICIAL) cuenta--; else { estado = ASCENDENTE; cuenta++; } } } Máquinas de Estado 73 Control de Acceso con/sin cupo Ascensor de 2 plantas Escalera mecánica unidireccional/bidireccional Puerta corrediza/Portón levadizo Máquinas expendedoras o de autoservicio Maquinaria o procesos industriales Máquinas de Estado 74 37 31/10/13 Referencias • • • • • • • • • • • Referencias Ingeniería de Software I, DC - FCEyN – UBA Software de Tiempo Real - FRBB – UTN Sintaxis y Semántica del Lenguaje - FRT - UTN Finite State Machines: Making simple work of complex functions Ingeniería en Controladores - Máquinas de Estado An Introduction to Finite State Machines JOURNAL OF OBJECT TECHNOLOGY: A Typing Scheme for Behavioural Models Teoría de Autómatas - Guillermo Morales-Luna Máquinas de Estados Finitos -Jorge Alejandro Gutiérrez Orozco Finite State Machines - James Grimbleby Grupo de Inteligencia Artificial y Robótica - FRBA - UTN Máquinas de Estado • R3CT18: Manejo de Cola en C de 8051 • R3CT19: Máquina de Estado (Contador de 8 bits) en C de 8051 • R3CT20: Máquina de Estados (Tanque) en C de 8051 – Autor: Ing. Juan Manuel Cruz – Publicados por CEIT – Electrónica – FRBA – UTN (2002) • R3CT23: Teclado Matricial en C de 8051 • R3CT24: Display Multiplexado en C de 8051 – Autor: Ing. Juan Manuel Cruz – Publicados por CEIT – Electrónica – FRBA – UTN (2003) • R3CT25: Comunicación Serie en C de 8051 – Autor: Ing. Juan Manuel Cruz – Publicado por CEIT – Electrónica – FRBA – UTN (2004) 75 76 38 31/10/13 Parsing Análisis de teclado • Implementación algorítmica que permite resolver sistemas secuenciales por medio de tablas. • La incorporación de nuevos estados o nuevas condiciones de variables de entrada o salida o rutinas de acción se resuelve incorporando nuevos renglones en las tablas o modificando valores en las mismas. Máquinas de Estado 0,0P x 10-M Volts 0,PS x 10-M Volts P,ST x 10-M Volts 77 Máquinas de Estado 78 39 31/10/13 Diagrama de teclas Diagrama de teclas Rutinas de Acción Máquinas de Estado 79 Máquinas de Estado 80 40 31/10/13 Diagrama de Teclas de Generador de funciones Diagrama de Estados Máquinas de Estado Máquinas de Estado 81 82 41 31/10/13 Tabla de estados Rutinas de Acción PREST FNKY Máquinas de Estado 83 Máquinas de Estado 84 42 31/10/13 Variables Máquinas de Estado FNKY y NUMB 85 Máquinas de Estado 86 43 31/10/13 FNKY, FNKYT y NUMB Máquinas de Estado Tabla de estados codificada 87 Máquinas de Estado 88 44 31/10/13 Tabla de estados Máquinas de Estado Variables de Match 89 Máquinas de Estado 90 45 31/10/13 Subrutina Match Máquinas de Estado Rutina de manejo de Teclado 91 Máquinas de Estado 92 46 31/10/13 Rutinas de Acción Máquinas de Estado Rutinas de Acción 93 Máquinas de Estado 94 47 31/10/13 Rutinas de Acción Sistemas de Control de Revisiones Máquinas de Estado 95 Diseño, Desarrollo y Depuración 96 48 31/10/13 Introducción ¿Por qué utilizar un VCS? • Objetivos de los sistemas de control de Revisiones • Proyecto Monousuario • Proyecto Multiusuario – Control de cambios Un VCS es una herramienta de software que permite llevar cuenta de la evolución de un conjunto de archivos de interés a lo largo del tiempo. Lleva un registro de todos los cambios significativos hechos a los mismos (esto es, de todos los que el usuario decida). De este modo, se puede recuperar cualquier punto (que el usuario haya señalado) de la historia de cualquier archivo o del conjunto, • Sistemas centralizados vs Sistemas Distribuidos • Redes • Backup • Fork y Merge Diseño, Desarrollo y Depuración Los Version Control Systems (VCS) dan solución a varios problemas frecuentes. Si bien se los usa principalmente en software, se aplican (aunque con menos ventajas) a cualquier escenario digital. A continuación se mencionan los más habituales. 97 Diseño, Desarrollo y Depuración 98 49 31/10/13 Ejemplos Ejemplos Estoy trabajando en un archivo y en algún momento algo empieza a andar mal. Un cliente reporta un problema en campo y hay que identificar el software o hardware del mismo. • Solución sin VCS Guardar como... mil copias del archivo con los sucesivos cambios significativos que le hago (trabajo para el usuario) • Solución sin VCS Guardar una copia de cada software entregado. • Solución con VCS Generar en el VCS una revisión del archivo a cada cambio significativo que le hago (trabajo para un programa) Diseño, Desarrollo y Depuración 99 • Solución con VCS Anotar el número de revisión en el producto entregado. Diseño, Desarrollo y Depuración 100 50 31/10/13 Ejemplos Ejemplos Hay que fabricar una pieza cualquiera y no sabemos cuál es la versión vigente del plano. Hay que verificar los cambios que se hicieron a un archivo respecto de una entrega anterior y no recuerdo hasta dónde se había llegado. • Solución sin VCS Llevar cuenta manualmente de números de versión / revisión • Solución con VCS Recibir un aviso del repositorio a cada actualización (automatizable). Diseño, Desarrollo y Depuración 101 • Solución sin VCS Enviar y devolver una copia del archivo, indicando manualmente los cambios • Solución con VCS Pedirle al VCS una diferencia entre revisiones Diseño, Desarrollo y Depuración 102 51 31/10/13 Repositorios Supervisión de cambios Se usa un almacén central de archivos llamado repositorio. Este contiene la versión actual de todos los archivos en uso. De ahora en adelante todos los archivos pasan a estar bajo supervisión del repositorio. Según el VCS elegido, los usuarios trabajan con Copias de trabajo (WC) del repositorio o con copias del repositorio. En ambos casos se puede comparar el estado de la WC con el repositorio (VCS centralizados) o de distintos repositorios entre sí (VCS distribuídos). Importante! Los usuarios deben enviar al repositorio los cambios que van haciendo, no es automático el proceso. Nota A los archivos bajo control de versiones se los llama habitualmente versionados. Diseño, Desarrollo y Depuración Diseño, Desarrollo y Depuración 103 104 52 31/10/13 Sistemas centralizados y distribuídos Ventajas Se solucionan los problemas anteriores • Es inmediato saber cuál es el archivo vigente (y compararse contra él). • Es inmediato actualizarse al estado del repositorio. • Se puede recuperar cualquier punto de la historia del repositorio. • Se tiene trazabilidad absoluta de los archivos. • Es sencillo hacer comparaciones entre WC y repositorios. Es sencillo manejar varias ramas dentro del repositorio. Diseño, Desarrollo y Depuración 105 • SVN es el VCS centralizado más popular hoy en día. Tortoise SVN integra todas las operaciones de versionado al Explorador de Windows (existen clientes para todas las plataformas) • Mercurial es un VCS distribuído muy difundido. Tortoise Hg es un cliente similar a Tortoise SVN pero para este VCS. Diseño, Desarrollo y Depuración 106 53 31/10/13 Sistema centralizado ¿Qué es Mercurial? Principales características: • Sistema de control de versiones distribuido y rápido. • Soporte robusto de branching y merging. • Muy flexible y extensible. Fuerte enfoque en mantener la compatibilidad entre versiones: • Los nuevos clientes son compatibles con repositorios viejos. • Los viejos clientes son compatibles con nuevas versiones de servidores. Fuerte enfoque en la seguridad de la información: • Los archivos no se sobreescriben, se agrega al final. • Facilita la recuperación ante problemas de disco Diseño, Desarrollo y Depuración 107 Diseño, Desarrollo y Depuración 108 54 31/10/13 Herramientas Repositorios Centralizados Winmerge: una herramienta de dif/merge visual y muy sencilla de usar. Permite detectar rápidamente diferencias entre distintas versiones de un mismo archivo (dif). También permite integrar dos revisiones ligeramente diferentes en una sola, conservando las partes de interés de ambas (merge). Existe la posibilidad de incorporarlo al entorno Eclipse y trabajar desde el mismo almacenando versiones sin salir del mismo Diseño, Desarrollo y Depuración 109 En los VCS centralizados, existe un único repositorio que reside en un servidor remoto o en la propia PC. Todas las operaciones de versionado se hacen contra este único repositorio. • La operación de agregar archivos no-versionados al repositorio se llama Import. • La operación de obtener archivos del repositorio (sin versionar) se llama Export. Diseño, Desarrollo y Depuración 110 55 31/10/13 Revisión - Número ¿Qué se guarda en el repositorio? SVN usa un número de revisión UNICO que indica el estado del repositorio entero. Es como sacarle fotos a todo el conjunto a cada cambio que se le hace. Esto quiere decir que si un repositorio contiene varios proyectos (p.ej una aplicación y varias librerías estáticas) un nro. de revisión identifica el estado de todo el conjunto: el ejecutable y las librerías que use. Un repositorio recién creado no contiene archivos y tiene un nro. de revisión 0. A medida que se reciben cambios se incrementa el número de revisión. Diseño, Desarrollo y Depuración 111 En el repo se guarda toda la historia de todos los archivos versionados. Cada vez que se ingresa un cambio al repo se anota la fecha, hora, el usuario que lo ingresa y opcionalmente (aunque MUY recomendablemente) una anotación indicando qué se modificó. No lo hace guardando copias enteras de cada archivo (esto lo hace solo la primera vez) sino solo lo que fue cambiando a cada revisión, de modo de poder reconstruir cualquier punto de la historia del archivo con un mínimo costo de espacio en disco. Diseño, Desarrollo y Depuración 112 56 31/10/13 ¿Cómo se trabaja? Copias de trabajo Se la distingue de una carpeta común porque contiene una subcarpeta oculta .svn. No se debe operar con el repositorio en forma directa, sino solo a través de copias de trabajo (WC's), que contiene una copia del repositorio entero. Esta subcarpeta contiene toda la información necesaria para hacer comparaciones con el repositorio y para detectar qué archivos tienen cambios no commiteados. (usa las fechas de último acceso al archivo para darse cuenta). Se pueden tener tantas WC como se quiera, esto permite evaluar varias alternativas de cambios y solo ingresar al repo las que resulten satisfactorias. Diseño, Desarrollo y Depuración 113 Diseño, Desarrollo y Depuración 114 57 31/10/13 Checkout Commit Dado que existe un único repositorio, la forma de trabajar con él es obteniendo una copia supervisada del mismo (WC) La WC tiene un número de revisión, que indica el estado del repositorio al momento de obtenerla. Esta operación se llama Checkout. Sobre la WC se hacen luego dos operaciones: • Update: Actualizar la WC al estado actual del repo (o a alguna revisión en particular). Esto ocurre cuando no soy el único usuario del repo y alguien más hace cambios. • Commit: Enviar al repo los cambios que contenga la WC (respecto de cuando fue obtenida). Diseño, Desarrollo y Depuración 115 Dado que SVN maneja un único repositorio, no puede aceptar que varios usuarios le hagan cambios contradictorios. Antes de aceptarme un commit me exige que esté al dia con el estado del repositorio (con los eventuales cambios de otros usuarios). La operación de commit es atómica: o tiene éxito toda la operación o fracasa toda la operación, nunca se deja el repo en un estado incierto. Diseño, Desarrollo y Depuración 116 58 31/10/13 Update Conflictos Al hacer update pueden darse cuatro casos: • El repositorio está en el mismo estado que mi WC • En el repo cambiaron archivos que yo no modifiqué: Mi WC incorpora estos cambios. • En el repo cambiaron archivos que yo modifiqué, pero solo hubo cambios integrables: Mi WC incorpora estos cambios. • En el repo cambiaron archivos que yo modifiqué, pero los cambios no son integrables, o si lo fueran son conflictivos: Mi WC queda en estado Conflicted y hay que solucionar los conflictos. Diseño, Desarrollo y Depuración 117 Los conflictos ocurren cuando dos archivos son diferentes y SVN es incapaz de integrarlos, es entonces el usuario quién debe hacerlo. Para archivos binarios (no integrables generalmente) la única manera es elegir cuál de los dos se conserva y descartar el otro. Para evitar esta situación se debe usar file-locking al trabajar con ellos. Para archivos de texto se puede hacer la operación manualmente o recurrir a Winmerge o similar. Para ayudar con esto, SVN al detectar un conflicto genera varias copias del mismo archivo: • Mi versión • La versión actual del repositorio • Una versión con las diferencias (en formato GNU diff) El último ancestro común. Diseño, Desarrollo y Depuración 118 59 31/10/13 Resolución de conflictos ¿Por qué un sistema distribuido? Con estas variantes se puede arreglar el conflicto manualmente o mediante el cliente gráfico. Suelen dar opciones para elegir una u otra versión o integrar ambas. Luego de integrados mis cambios con los del repositorio se puede hacer un nuevo commit. ¡ Cuidado! Antes de hacer el commit hay que verificar que el código (o el archivo que sea) ¡funciona correctamente! Diseño, Desarrollo y Depuración 119 Un sistema de control de versiones distribuido te da: • Versiones “offline” (locales). • Rápido conjunto de operaciones locales. Efectos derivados: • Commits de cambios puntuales. • Se puede buscar en el historial localmente. • Branching y merging se convierten en una tarea natural (no algo a lo que temer). • Permite mejores organizaciones de trabajo (workflows). Diseño, Desarrollo y Depuración 120 60 31/10/13 Conceptos Clave Comandos Clave Locales: • hg commit: guarda el estado actual del directorio de trabajo en el repositorio (local). • hg update: actualiza el directorio de trabajo. • hg merge: une distintas líneas (branches) del historial. • Directorio de trabajo: Es un directorio donde están los archivos que queremos administrar. • Changeset: Conjunto de cambios en los archivos entre una revisión y la siguiente. • Repositorio: Guarda el historial de nuestro trabajo (almacena los changesets). Diseño, Desarrollo y Depuración Interacción con otro repositorio: • hg pull: trae changesets desde otro repositorio. • hg push: envía tus changesets hacia otro repositorio. • hg clone: crea un repositorio igual a otro. 121 Diseño, Desarrollo y Depuración 122 61 31/10/13 Conceptos Clave 2 Diseño, Desarrollo y Depuración Trabajando Solo 123 Diseño, Desarrollo y Depuración 124 62 31/10/13 Moviendo Changesets o chancho va Diseño, Desarrollo y Depuración 125 Moviendo Changesets o chancho va Diseño, Desarrollo y Depuración 126 63 31/10/13 Control de versiones distribuido Diseño, Desarrollo y Depuración Control de versiones distribuido 127 Diseño, Desarrollo y Depuración 128 64 31/10/13 Trabajo en Equipo Diseño, Desarrollo y Depuración Trabajo en Equipo 129 Diseño, Desarrollo y Depuración 130 65 31/10/13 Branches Merging Son un concepto Fundamental • Lineas de desarrollo paralelas • Usadas para hacer releases • Usadas para aislar cambios invasivos Diseño, Desarrollo y Depuración Es lo opuesto al branch • Combina dos branches • Usado para traer arreglos realizados en otros branches • Usado para integrar cambios invasivos una vez terminados 131 Diseño, Desarrollo y Depuración 132 66 31/10/13 El modelo Subyacente La historia es inmutable Un conjunto de cambios o changeset consiste en: • Los ID de los padres (0, 1 ó 2): Usar hashes SHA-1 como ID de los changesets tiene sus consecuencias: • Un ID de un changeset es un hash de la historia completa. • Cambiar la historia cambia todos los changesets siguientes. • No se puede cambiar la historia, sólo se puede crear nueva historia: • el changeset raíz no tiene padres • los changesets normales sólo tienen un padre • los merge changesets tienen dos padres • Fecha, nombre de usuario, mensaje del cambio • La diferencia que hay con el primer padre • El ID del changeset se calcula haciendo un SHA-1 de todo lo de arriba • Hace imposible inyectar código sin cambiar el historial Diseño, Desarrollo y Depuración 133 Diseño, Desarrollo y Depuración 134 67 31/10/13 La historia es inmutable Conociendo la historia de un archivo Usar hashes SHA-1 como ID de los changesets tiene sus consecuencias: • Un ID de un changeset es un hash de la historia completa. • Cambiar la historia cambia todos los changesets siguientes. • No se puede cambiar la historia, sólo se puede crear nueva historia: El comando hg annotate es muy valioso: • Se puede ver en qué momento cada línea fue introducida. • Podemos volver rápidamente a una versión anterior. Historial del archivo README de Mercurial: Podemos verlo más detallado usando hg serve Diseño, Desarrollo y Depuración 135 Diseño, Desarrollo y Depuración 136 68 31/10/13 Detección de aparición de bugs Detección de aparición de bugs ¡Encontraste un bug! ¿En qué momento se introdujo al código? ¡Encontraste un bug! ¿En qué momento se introdujo al código? Usando hg bisect para marcar buenas y malas revisiones: Usando hg bisect para marcar buenas y malas revisiones: Diseño, Desarrollo y Depuración 137 Diseño, Desarrollo y Depuración 138 69 31/10/13 Editando la historia Inspirado en git rebase -i, histedit te permite: • Reordenar changesets: • unir changesets: • descartar changesets: • editar changesets: Diseño, Desarrollo y Depuración 139 70