36
sAPI (simpleAPI): diseño e implementación de una biblioteca para sistematizar la programación de sistemas embebidos Esp. Ing. Eric Nicolás Pernia FACULTAD DE INGENIERIA Universidad de Buenos Aires MAESTRÍA EN SISTEMAS EMBEBIDOS MSc. Ing. Félix Gustavo Emilio Safar (UNQ) • Dr. Ing. Pablo Martín Gómez (FIUBA) • Mg. Ing. Pablo Oscar Ridolfi (UTN-FRBA, FIUBA) • Ing. Juan Manuel Cruz (FIUBA,UTN-FRBA) Jurados: Director: Trabajo Final Diciembre 2018

Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

sAPI (simpleAPI): diseño e implementación

de una biblioteca para sistematizar

la programación de sistemas embebidos

Esp. Ing. Eric Nicolás Pernia

FACULTADDE INGENIERIAUniversidad de Buenos Aires

MAESTRÍA EN SISTEMAS EMBEBIDOS

MSc. Ing. Félix Gustavo Emilio Safar (UNQ) • Dr. Ing. Pablo Martín Gómez (FIUBA)• Mg. Ing. Pablo Oscar Ridolfi (UTN-FRBA, FIUBA)• Ing. Juan Manuel Cruz (FIUBA,UTN-FRBA)

Jurados:Director:

Trabajo Final

Diciembre 2018

Page 2: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

Agenda

1. Introducción

2. Diseño e implementación.

3. Demostración.

4. Ensayos y Resultados.

5. Conclusiones.

1

Page 3: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

2

1.1. Motivación y contexto.

1.2. Objetivos.

1.3. Plataformas del Proyecto CIAA.

1.4. Requerimientos y planificación.

1. Introducción

Page 4: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

Motivación y contexto

¡Son todos distintos!

Lenguajes de programación.

Arquitecturas de MCUs y SoCs

y sus bibliotecas provistas.

En sistemas embebidos:

3

Programar todas las plataformas del proyecto CIAA

utilizando la misma biblioteca.

Necesidad de automatizar tareas repetitivas.

Page 5: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

Objetivos

Uso para educación e industrial.

Independiente de la arquitectura y lenguajes de programación.

Implementar en C para las plataformas del Proyecto CIAA.

Definir una API sencilla.

Diseñar e implementar una biblioteca con las siguientes características:

4

Page 6: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

NXP

Microcontrolador:

Fcpu: 204 MHz.

NXP LPC4337 JDB144

(Cortex M4F y M0).

SRAM: 136 KB.

Flash: 1 MB.

CIAA-NXP:

Uso industrial.

EDU-CIAA-NXP:

Uso educativo y

prototipado.

5

Plataformas del proyecto CIAA

Page 7: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

Plataformas del proyecto CIAA

Microcontrolador:

Flash: 512 KB.

Adquisición y procesamiento en

tiempo real para una SBC.

NXP LPC 54102 J512 BD64

(Cortex M4F y M0+).

picoCIAA:

Fcpu: 100 MHz.

SRAM: 104 KB.

Fcpu: 25 MHz.

Silicon Labs EFM32HG 322F64

QFP48 (Cortex M0+).

Uso educativo y prototipado

(robótica y aplicaciones de bajo

consumo).

Microcontrolador:

Flash: 64 KB.

SRAM: 8 KB.

CIAA-Z3R0:

6

Page 8: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

7

Requerimientos:

REQ.2. Diseño de la biblioteca.

Planificación:

REQ.3. Implementación de la biblioteca.

REQ.1. Fecha de finalización: 19/11/2018.

REQ.4. Documentación y difusión.

Requerimientos y planificación

Page 9: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

8

2.1. Descripción general.

2.2. Modelo de plataforma de hardware.

2.3. Módulos de biblioteca.

2.4. Implementación de drivers específicos.

2.5. Generador de biblioteca.

2. Diseño e implementación.

Page 10: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

Descripción general

9

Page 11: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

10

Partes independientes del Hardware

Page 12: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

Board, Component, Connection, Terminal, SoC, Connector,

ComponentWithDriver, IpCore, entre otros.

Modelo de plataforma de hardware

Se modelaron:

11

Diagrama de clases de board

Page 13: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

Módulos de biblioteca

12

Los módulos de biblioteca definen:

API: modos de uso de bajo y alto nivel.

Manejo de eventos (encuesta e interrupción).

Nombre, descripción, versión, dependencias autor y licencia.

Tipos de datos, constantes y modos de acceso de parámetros

de métodos, propiedades y métodos.

Periféricos: GPIO, ADC, DAC, UART, SPI, I2C, RTC y TIMER.

Ejemplos: init() read[ | ]( [ ] )Sync timeoutAsync . write[ | ]( [ ] )Sync timeoutAsync

Page 14: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

13

Page 15: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

14

Partes dependientes del Hardware

Page 16: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

15

Page 17: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

16

Se genera:

Documentación de la

biblioteca en lenguaje

Markdown.

Código de la biblioteca en

lenguaje C.

Page 18: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

17

3. Demostración.

Page 19: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

18

Page 20: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

19

4.1. Verificación del diseño de la biblioteca.

4.2. Verificación de implementación.

4.2.1. Herramientas y servicios utilizados.

4.2.2. Tests automáticos.

4.2.4. Tests en hardware.

4.2.5. Metodología de desarrollo.

4.3. Validación.

4.4. Documentación.

4. Ensayos y Resultados.

Page 21: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

Verificación del diseño de la biblioteca

Verificación de REQ.2 mediante revisión por pares.

Realizado de forma iterativa e incremental, con dos revisores

distintos.

Muchas gracias Martín Ribelotta y Alejandro Celery.

20

Page 22: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

Herramientas y servicios utilizados

Compilación de C/C++

Make + GNU ARMEmbedded Toolchain

Descarga a la plataformaMake + Open OCD

Tests unitarios en C

MinutMinimal Unit Testing for C

LocalC/C++ JavaScript

versiones de software

Servidor de Integracióncontínua

Servidor de control de

Remoto

IDE para C/C++

MCU

Tests unitarios en JS

Entorno de ejecuciónpara JavaScript

IDE para JavaScript

Visual Studio Code

ST

-LIN

K V

2S

TM

8 &

ST

M32

GN

DG

ND

3.3

V3.3

V

RS

T

SW

IM

5.0

V

SW

CL

K

SW

DIO

5.0

V

2 4 6 108

1 3 5 97

21

Verificación de los requerimientos de implementación

Page 23: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

22

Tests automáticos: generador de biblioteca en JavaScript

Verificación de los requerimientos de implementación

Page 24: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

23

Tests automáticos: compilación para ejemplos de uso en C

Verificación de los requerimientos de implementación

Page 25: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

24

Tests en hardware

Verificación de los requerimientos de implementación

ST

-LIN

K V

2S

TM

8 &

ST

M32

GN

DG

ND

3.3

V3.3

V

RS

T

SW

IM

5.0

V

SW

CL

K

SW

DIO

5.0

V

24610 8

1359 7

Page 26: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

25

Verificación de los requerimientos de implementación

Tests en hardware

Page 27: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

Se decide utilizar la siguiente metodología de trabajo:

26

Metodología de desarrollo

Verificación de los requerimientos de implementación

OriginFork

ST

-LIN

K V

2S

TM

8 &

ST

M32

GN

DG

ND

3.3

V3.3

V

RS

T

SW

IM

5.0

V

SW

CL

K

SW

DIO

5.0

V

24610 8

1359 7

Repo local

Pull

Pull

Push

Pull request

a develop

F D R M

r1.0.0

Page 28: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

Validación y documentación

Ejemplos de uso de la biblioteca diseñados independientes

de la arquitectura.

Utilización por parte de alumnos de CESE/MSE, IACI y CAPSE.

Documentos para usuario final.

Documentos para desarrolladores27

Validación:

Documentación:

Page 29: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

28

5. Conclusiones.

5.1. Sobre el trabajo realizado.

5.2. Próximos pasos.

Page 30: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

Sobre el trabajo realizado

Implementaciones de la biblioteca en lenguaje C para las

plataformas del proyecto CIAA.

Biblioteca portable.

Herramientas para ayudar a automatizar la implementación.

Ejemplos funcionales independientes del hardware.

Logros:

29

Page 31: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

Ensayo de una metodología que permite asegurar la calidad.

Resultados exitosos en el uso de la biblioteca en educación.

Documentación para usuarios y desarrolladores.

30

Sobre el trabajo realizado (continuación)

Page 32: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

Sobre el trabajo realizado (continuación)

Demandó la articulación de conocimientos adquiridos a lo largo

de la CESE y MSE.

Los objetivos planteados han sido alcanzados satisfactoriamente.

Se han obtenido conocimientos y experiencia muy importantes

para la formación profesional.

Conocimientos utilizados

Reflexión

31

Page 33: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

Próximos pasos

Implementar la biblioteca en otras plataformas.

Continuar afianzando la metodología de trabajo propuesta.

Concluir las implementaciones de sAPI para las plataformas

del proyecto CIAA.

Tareas estratégicas en el marco del proyecto CIAA

32

Page 34: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

Próximos pasos (continuación)

Analizar los archivos CMSIS-SVD para generar el modelo de

SoC.

Investigar los archivos de Kicad para generar el modelo

Board.

Tareas de investigación

33

Page 35: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

¿Preguntas?

?

Page 36: Investigación | FIUBA - FACULTAD DE INGENIERIAlaboratorios.fi.uba.ar/lse/tesis/LSE-FIUBA-Trabajo-Final... · 2019-02-16 · sAPI (simpleAPI): diseño e implementación de una biblioteca

¡Muchas gracias!

Esp. Ing. Eric Nicolás Pernia[[email protected]]