Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de...

34
Generalidades Alternativas de desarrollo Paradigmas de programaci´ on UML Programaci´onestructurada Fundamentos de programaci´ on de Sistemas Embebidos Introducci´ on Mg. Ing. E. Sergio Burgos Universidad Nacional de Entre R´ ıos Facultad de Ingenier´ ıa Especializaci´ on en Sistemas Embebidos 31/08/2018 1 / 14 Fundamentos de programaci´on de Sistemas Embebidos Introducci´ on

Transcript of Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de...

Page 1: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

Fundamentos de programacion de Sistemas EmbebidosIntroduccion

Mg. Ing. E. Sergio Burgos

Universidad Nacional de Entre RıosFacultad de Ingenierıa

Especializacion en Sistemas Embebidos

31/08/2018

1 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 2: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

Calendario

Dıa Fecha Horario

Viernes 31/08/2018 9:00 - 18:00Sabado 01/09/2018 9:00 - 13:00

Viernes 14/09/2018 9:00 - 18:00Sabado 15/09/2018 9:00 - 13:00

Viernes 28/09/2018 9:00 - 18:00

Viernes 19/10/2018 9:00 - 18:00

Sabado 20/10/2018 9:00 - 13:00

Presentacion de TPs y coloquio

2 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 3: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

Calendario

Dıa Fecha Horario

Viernes 31/08/2018 9:00 - 18:00Sabado 01/09/2018 9:00 - 13:00

Viernes 14/09/2018 9:00 - 18:00Sabado 15/09/2018 9:00 - 13:00

Viernes 28/09/2018 9:00 - 18:00

Viernes 19/10/2018 9:00 - 18:00

Sabado 20/10/2018 9:00 - 13:00

Presentacion de TPs y coloquio

2 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 4: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

Calendario

Dıa Fecha Horario

Viernes 31/08/2018 9:00 - 18:00Sabado 01/09/2018 9:00 - 13:00

Viernes 14/09/2018 9:00 - 18:00Sabado 15/09/2018 9:00 - 13:00

Viernes 28/09/2018 9:00 - 18:00

Viernes 19/10/2018 9:00 - 18:00

Sabado 20/10/2018 9:00 - 13:00 Presentacion de TPs y coloquio

2 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 5: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

Evaluacion

La evaluacion final del curso se realizara a traves de los trabajos practicos asociados a cada tematratado.

Los trabajos practicos deberan realizarse de modo individual.

En cada trabajo se deberan incluir observaciones relativas a los temas tratados.

La evaluacion se realizara a traves de la presentacion de los trabajos realizados mediante uncoloquio.

3 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 6: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

Desarrollo de firmware

Alternativas

Metodo clasico (compilado):

Aplicaciones binarias (baremetal y/oRT OS).

Flujo de desarrollo:CodificacionCompilacionGrabacionDepuracion

Estructura estatica.

Herramientas: Gcc, Eclipse, OpenOCD(lpcOpen/Newlib)

Scripting (interpretado)

Interprete binario (baremetal)

Extension del interprete a traves demodulos

Aplicacion interpretadas en tiempo real(archivos de texto)

Alojamiento de entidades dinamico

Lenguajes: Micro Python, Lua

4 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 7: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

Desarrollo de firmware

Alternativas

Metodo clasico (compilado):

Aplicaciones binarias (baremetal y/oRT OS).

Flujo de desarrollo:CodificacionCompilacionGrabacionDepuracion

Estructura estatica.

Herramientas: Gcc, Eclipse, OpenOCD(lpcOpen/Newlib)

Scripting (interpretado)

Interprete binario (baremetal)

Extension del interprete a traves demodulos

Aplicacion interpretadas en tiempo real(archivos de texto)

Alojamiento de entidades dinamico

Lenguajes: Micro Python, Lua

4 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 8: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

Ejemplo scripting

5 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 9: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

Ejemplo scripting

5 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 10: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

Ejemplo scripting

5 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 11: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

Ejemplo scripting

5 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 12: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

Ejemplo scripting

5 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 13: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

Ejemplo scripting

5 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 14: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

Ejemplo scripting

5 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 15: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

Ejemplo scripting

5 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 16: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

Una aplicacion

Aplicacion script

-- Configura puertos

-- y conversor (ADC0 , Ch1)

function init()

adc.setup(adc.ADC_1 , adc.ENABLE)

gpio.setup(gpio.LED_1 , gpio.OUT)

gpio.setup(gpio.LED_2 , gpio.OUT)

gpio.setup(gpio.LED_3 , gpio.OUT)

gpio.write(gpio.LED_1 , gpio.LOW)

gpio.write(gpio.LED_2 , gpio.LOW)

gpio.write(gpio.LED_3 , gpio.LOW)

end

-- Verifica en que rango

-- se encuentra el argumento

function eval(val)

if (val <= 300) then

gpio.write(gpio.LED_1 , gpio.HIGH)

gpio.write(gpio.LED_2 , gpio.LOW)

gpio.write(gpio.LED_3 , gpio.LOW)

elseif (val >300) and (val <800) then

gpio.write(gpio.LED_1 , gpio.LOW)

gpio.write(gpio.LED_2 , gpio.HIGH)

gpio.write(gpio.LED_3 , gpio.LOW)

elseif (val >= 800) then

gpio.write(gpio.LED_1 , gpio.LOW)

gpio.write(gpio.LED_2 , gpio.LOW)

gpio.write(gpio.LED_3 , gpio.HIGH)

end

tmr.delay (1000)

end

-- Inicio del programa

print("Prueba del ADC , canal 1")

init()

salir = false

while not salir do

dato=adc.read(adc.ADC_1 , adc.CH1)

io.write("ADC Ch. 1: ", dato , "\n")

eval(dato)

print("Continuar? \"fin\" para")

print(" terminar")

salir = (io.read() == "fin")

end

6 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 17: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

POO

El paradigma de la programacion orientada a objetos se basa en 3 elementos:

Abstraccion: extraer las caracterısticas principales de las entidades significativas en el dominiodel problema.

Encapsulamiento: encerrar los atributos significativos de cada entidad de modo que su accesosea controlado.

Modularidad: proceso de descomposicion de elementos significativos, de modo independiente,favoreciendo la reutilizacion.

7 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 18: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

POO

El paradigma de la programacion orientada a objetos se basa en 3 elementos:

Abstraccion: extraer las caracterısticas principales de las entidades significativas en el dominiodel problema.

Encapsulamiento: encerrar los atributos significativos de cada entidad de modo que su accesosea controlado.

Modularidad: proceso de descomposicion de elementos significativos, de modo independiente,favoreciendo la reutilizacion.

7 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 19: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

POO

El paradigma de la programacion orientada a objetos se basa en 3 elementos:

Abstraccion: extraer las caracterısticas principales de las entidades significativas en el dominiodel problema.

Encapsulamiento: encerrar los atributos significativos de cada entidad de modo que su accesosea controlado.

Modularidad: proceso de descomposicion de elementos significativos, de modo independiente,favoreciendo la reutilizacion.

7 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 20: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

POO

Terminologıa de POO y relaciones:

Objetos

Clases

Herencia

Agregacion

Composicion

Polimorfismo

8 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 21: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

POO

Terminologıa de POO y relaciones:

Objetos

Clases

Herencia

Agregacion

Composicion

Polimorfismo

8 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 22: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

POO

Terminologıa de POO y relaciones:

Objetos

Clases

Herencia

Agregacion

Composicion

Polimorfismo

8 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 23: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

POO

Terminologıa de POO y relaciones:

Objetos

Clases

Herencia

Agregacion

Composicion

Polimorfismo

8 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 24: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

POO

Terminologıa de POO y relaciones:

Objetos

Clases

Herencia

Agregacion

Composicion

Polimorfismo

8 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 25: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

POO

Terminologıa de POO y relaciones:

Objetos

Clases

Herencia

Agregacion

Composicion

Polimorfismo

8 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 26: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

POO

9 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 27: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

POO y C++

Ejemplo de representacion de perifericos a traves de clases en C++

#ifndef HWIO_H

#define HWIO_H

#include <cstdint >

class HwIO

{

protected:

uint32_t hwAddr;

public:

HwIO(uint32_t addr);

virtual void write(uint32_t data) = 0;

virtual uint32_t read(void) = 0;

virtual uint32_t availableData(void) = 0;

virtual bool ready(void) = 0;

};

#endif // HWIO_H

#ifndef SERIALUART_H

#define SERIALUART_H

#include "hwio.h"

class serialUart : public HwIO

{

public:

serialUart(uint32_t addr);

void write(uint32_t data);

uint32_t read(void);

uint32_t availableData(void);

bool ready(void);

};

#endif // SERIALUART_H

10 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 28: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

POO y C++

Una aplicacion 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 (0x00);

. . .

}

Algunos detalles...

•RTTI •Excepciones •Diseno

11 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 29: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

POO y C++

Una aplicacion 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 (0x00);

. . .

}

Algunos detalles...

•RTTI

•Excepciones •Diseno

11 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 30: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

POO y C++

Una aplicacion 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 (0x00);

. . .

}

Algunos detalles...

•RTTI •Excepciones

•Diseno

11 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 31: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

POO y C++

Una aplicacion 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 (0x00);

. . .

}

Algunos detalles...

•RTTI •Excepciones •Diseno

11 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 32: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

Representacion

¿Cual es el orden de ejecucion? ¿Y la aplicacion?

12 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 33: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

Algunas ideas

UML no es un lenguaje de programacion, sı es un lenguaje de modelado de proposito generalpara sistemas discretos tales como los compuestos por software, firmware o logica digital.

Se desarrollo como un esfuerzo para simplificar y estandarizar las metodologıas de desarrollode aplicaciones utilizando POO.

Utiliza diferentes tipos de diagramas para representar diferentes aspectos de los sistemas.

Los mas representativos para sistemas embebidos son, dependiendo del tipo de herramientasutilizadas, diagrama de clases, de secuencia y de estados.

13 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion

Page 34: Fundamentos de programación de Sistemas Embebidos … · 2018. 8. 31. · Fundamentos de programaci on de Sistemas Embebidos Introducci on Mg. Ing. E. Sergio Burgos Universidad Nacional

Generalidades Alternativas de desarrollo Paradigmas de programacion UML Programacion estructurada

Programacion estructurada

Todo programa estructurado se puede escribirse utilizando tres estructuras basicas:

Secuencia: Ejecucion secuencial de un conjunto de acciones.

Seleccion: Ejecucion condicional de un conjunto de acciones.

Iteracion: Repetir la ejecucion de un conjunto de acciones segun una condicion.

Todo algoritmo tendra necesariamente un punto de entrada y un punto de finalizacion.

Estas ideas nos llevan a la no utilizacion de saltos dentro de las aplicaciones (goto) ni interrupcionde bucles.

14 / 14 Fundamentos de programacion de Sistemas Embebidos Introduccion