Documentos de Académico
Documentos de Profesional
Documentos de Cultura
31/08/2018
Calendario
Dı́a Fecha Horario
Viernes 31/08/2018 9:00 - 18:00
Sábado 01/09/2018 9:00 - 13:00
Viernes 14/09/2018 9:00 - 18:00
Sábado 15/09/2018 9:00 - 13:00
Viernes 28/09/2018 9:00 - 18:00
Viernes 19/10/2018 9:00 - 18:00
Sábado 20/10/2018 9:00 - 13:00
Calendario
Dı́a Fecha Horario
Viernes 31/08/2018 9:00 - 18:00
Sábado 01/09/2018 9:00 - 13:00
Viernes 14/09/2018 9:00 - 18:00
Sábado 15/09/2018 9:00 - 13:00
Viernes 28/09/2018 9:00 - 18:00
Viernes 19/10/2018 9:00 - 18:00
Sábado 20/10/2018 9:00 - 13:00
Calendario
Dı́a Fecha Horario
Viernes 31/08/2018 9:00 - 18:00
Sábado 01/09/2018 9:00 - 13:00
Viernes 14/09/2018 9:00 - 18:00
Sábado 15/09/2018 9:00 - 13:00
Viernes 28/09/2018 9:00 - 18:00
Viernes 19/10/2018 9:00 - 18:00
Sábado 20/10/2018 9:00 - 13:00 Presentación de TPs y coloquio
Evaluación
La evaluación final del curso se realizará a través de los trabajos prácticos asociados a cada tema
tratado.
Los trabajos prácticos deberán realizarse de modo individual.
En cada trabajo se deberán incluir observaciones relativas a los temas tratados.
La evaluación se realizará a través de la presentación de los trabajos realizados mediante un
coloquio.
Desarrollo de firmware
Alternativas
Método clásico (compilado):
Aplicaciones binarias (baremetal y/o
RT OS).
Flujo de desarrollo:
Codificación
Compilación
Grabación
Depuración
Estructura estática.
Herramientas: Gcc, Eclipse, OpenOCD
(lpcOpen/Newlib)
Desarrollo de firmware
Alternativas
Método clásico (compilado): Scripting (interpretado)
Aplicaciones binarias (baremetal y/o Intérprete binario (baremetal)
RT OS).
Extensión del intérprete a través de
Flujo de desarrollo: módulos
Codificación
Compilación Aplicación interpretadas en tiempo real
Grabación (archivos de texto)
Depuración
Alojamiento de entidades dinámico
Estructura estática.
Lenguajes: Micro Python, Lua
Herramientas: Gcc, Eclipse, OpenOCD
(lpcOpen/Newlib)
Ejemplo scripting
Ejemplo scripting
Ejemplo scripting
Ejemplo scripting
Ejemplo scripting
Ejemplo scripting
Ejemplo scripting
Ejemplo scripting
Una aplicación
Aplicación script
POO
El paradigma de la programación orientada a objetos se basa en 3 elementos:
Abstracción: extraer las caracterı́sticas principales de las entidades significativas en el dominio
del problema.
Encapsulamiento: encerrar los atributos significativos de cada entidad de modo que su acceso
sea controlado.
POO
El paradigma de la programación orientada a objetos se basa en 3 elementos:
Abstracción: extraer las caracterı́sticas principales de las entidades significativas en el dominio
del problema.
Encapsulamiento: encerrar los atributos significativos de cada entidad de modo que su acceso
sea controlado.
Modularidad: proceso de descomposición de elementos significativos, de modo independiente,
favoreciendo la reutilización.
POO
El paradigma de la programación orientada a objetos se basa en 3 elementos:
Abstracción: extraer las caracterı́sticas principales de las entidades significativas en el dominio
del problema.
Encapsulamiento: encerrar los atributos significativos de cada entidad de modo que su acceso
sea controlado.
Modularidad: proceso de descomposición de elementos significativos, de modo independiente,
favoreciendo la reutilización.
POO
Terminologı́a de POO y relaciones:
Objetos
Clases
POO
Terminologı́a de POO y relaciones:
Objetos
Clases
Herencia
POO
Terminologı́a de POO y relaciones:
Objetos
Clases
Herencia
Agregación
POO
Terminologı́a de POO y relaciones:
Objetos
Clases
Herencia
Agregación
Composición
POO
Terminologı́a de POO y relaciones:
Objetos
Clases
Herencia
Agregación
Composición
Polimorfismo
POO
Terminologı́a de POO y relaciones:
Objetos
Clases
Herencia
Agregación
Composición
Polimorfismo
POO
POO y C++
Ejemplo de representación de periféricos a través de clases en C++
# endif // HWIO_H
POO y C++
Una aplicación utilizando polimorfismo
# include " hwio . h "
# include " gpio . h "
# include " serialuart . h "
int main ()
{
int i ;
HwIO * perif [5] =
{
new gpio (0 x0000A00F ) ,
new gpio (0 x0000A01F ) ,
new gpio (0 x0000A02F ) ,
new gpio (0 x0000A03F ) ,
new serialUart (0 x0000B000 )
};
for ( i = 0; i < 5; i ++)
perif [ i ] - > write (0 x00 );
. . .
}
POO y C++
Una aplicación utilizando polimorfismo
# include " hwio . h "
# include " gpio . h "
# include " serialuart . h "
int main ()
{
int i ;
HwIO * perif [5] =
{
new gpio (0 x0000A00F ) ,
new gpio (0 x0000A01F ) ,
new gpio (0 x0000A02F ) ,
new gpio (0 x0000A03F ) ,
new serialUart (0 x0000B000 )
};
for ( i = 0; i < 5; i ++)
perif [ i ] - > write (0 x00 );
. . .
}
Algunos detalles...
•RTTI
POO y C++
Una aplicación utilizando polimorfismo
# include " hwio . h "
# include " gpio . h "
# include " serialuart . h "
int main ()
{
int i ;
HwIO * perif [5] =
{
new gpio (0 x0000A00F ) ,
new gpio (0 x0000A01F ) ,
new gpio (0 x0000A02F ) ,
new gpio (0 x0000A03F ) ,
new serialUart (0 x0000B000 )
};
for ( i = 0; i < 5; i ++)
perif [ i ] - > write (0 x00 );
. . .
}
Algunos detalles...
•RTTI •Excepciones
POO y C++
Una aplicación utilizando polimorfismo
# include " hwio . h "
# include " gpio . h "
# include " serialuart . h "
int main ()
{
int i ;
HwIO * perif [5] =
{
new gpio (0 x0000A00F ) ,
new gpio (0 x0000A01F ) ,
new gpio (0 x0000A02F ) ,
new gpio (0 x0000A03F ) ,
new serialUart (0 x0000B000 )
};
for ( i = 0; i < 5; i ++)
perif [ i ] - > write (0 x00 );
. . .
}
Algunos detalles...
•RTTI •Excepciones •Diseño
Representación
Algunas ideas
UML no es un lenguaje de programación, sı́ es un lenguaje de modelado de propósito general
para sistemas discretos tales como los compuestos por software, firmware o lógica digital.
Se desarrolló como un esfuerzo para simplificar y estandarizar las metodologı́as de desarrollo
de aplicaciones utilizando POO.
Utiliza diferentes tipos de diagramas para representar diferentes aspectos de los sistemas.
Los más representativos para sistemas embebidos son, dependiendo del tipo de herramientas
utilizadas, diagrama de clases, de secuencia y de estados.
Programación estructurada
Todo programa estructurado se puede escribirse utilizando tres estructuras básicas:
Secuencia: Ejecución secuencial de un conjunto de acciones.
Selección: Ejecución condicional de un conjunto de acciones.
Iteración: Repetir la ejecución de un conjunto de acciones según una condición.
Todo algoritmo tendrá necesariamente un punto de entrada y un punto de finalización.
Estas ideas nos llevan a la no utilización de saltos dentro de las aplicaciones (goto) ni interrupción
de bucles.