Investigación | FIUBA - FACULTAD DE...
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[[email protected]]