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