Investigación | FIUBA - FACULTAD DE...

Post on 07-Jul-2020

4 views 0 download

Transcript of Investigación | FIUBA - FACULTAD DE...

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

Agenda

1. Introducción

2. Diseño e implementación.

3. Demostración.

4. Ensayos y Resultados.

5. Conclusiones.

1

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

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.

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

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

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

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

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.

Descripción general

9

10

Partes independientes del Hardware

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

ComponentWithDriver, IpCore, entre otros.

Modelo de plataforma de hardware

Se modelaron:

11

Diagrama de clases de board

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

13

14

Partes dependientes del Hardware

15

16

Se genera:

Documentación de la

biblioteca en lenguaje

Markdown.

Código de la biblioteca en

lenguaje C.

17

3. Demostración.

18

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.

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

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

22

Tests automáticos: generador de biblioteca en JavaScript

Verificación de los requerimientos de implementación

23

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

Verificación de los requerimientos de implementación

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

25

Verificación de los requerimientos de implementación

Tests en hardware

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

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:

28

5. Conclusiones.

5.1. Sobre el trabajo realizado.

5.2. Próximos pasos.

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

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)

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

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

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

¿Preguntas?

?

¡Muchas gracias!

Esp. Ing. Eric Nicolás Pernia[ericpernia@gmail.com]