Actualizado el 4 de Mayo del 2019 (Publicado el 18 de Febrero del 2018)
2.323 visualizaciones desde el 18 de Febrero del 2018
2,3 MB
60 paginas
Creado hace 8a (26/11/2016)
UNIVERSIDAD DE BUENOS AIRES
FACULTAD DE INGENIERÍA
CARRERA DE ESPECIALIZACIÓN EN SISTEMAS
EMBEBIDOS
MEMORIA DEL TRABAJO FINAL
Entorno de programación educativo en
lenguaje Python para la EDU-CIAA-NXP
Autor:
Ing. Ernesto Gigliotti
Director:
Esp. Ing. Eric Pernía (FIUBA)
Dr. Ing. Pablo Gomez (FIUBA)
Esp. Ing. Pablo Ridolfi (UTNFRBA, FIUBA)
Jurados:
Ing. Gerardo Sager (UNLP)
Este trabajo fue realizado en las Ciudad Autónoma de Buenos Aires, entre enero
de 2016 y diciembre de 2016.
III
Resumen
En este trabajo se presenta el desarrollo de un conjunto de herramientas que
permite aprender programación sobre sistemas embebidos. Esta orientado a
estudiantes y docentes de educación secundaria y universitaria. Se ha utilizado
el lenguaje Python junto con la versión educativa de la Computadora Industrial
Abierta Argentina (EDU-CIAA-NXP).
El conjunto de herramientas consta de un firmware que permite ejecutar código
Python sobre la EDU-CIAA-NXP, un software que permite escribir y grabar
programas en dicho lenguaje; y ejemplos didácticos para facilitar el aprendizaje.
Todas las herramientas y la documentación correspondiente se encuentran
disponibles en forma gratuita bajo licencias libres y abiertas.
Los objetivos del trabajo se han cumplido en su totalidad y el desarrollo del
mismo ha favorecido la formación profesional del autor. En el desarrollo del
presente trabajo se han aplicado conocimientos adquiridos en diversas materias
de la carrera. Para asegurar la calidad del mismo se utilizaron técnicas de
ingeniería de software, planificación y gestión de proyectos.
Agradecimientos
V
Al Dr. Ing. Ariel Lutemberg, quien me otorgó la beca que me permitió cursar la
carrera de especialización y hacer posible este trabajo.
A Martín Ribelotta, creador de la base sobre la que se desarrolló este trabajo y
quien me ha ayudado desde el comienzo contestando absolutamente todas mis
dudas.
A mis compañeros de la 3er cohorte, con quienes compartimos un año agotador
pero lleno de nuevos conocimientos que nos permitieron formarnos en esta espe-
cialidad.
Por último a mi director Esp. Ing. Eric Pernía y a mis jurados Dr. Ing. Pablo Go-
mez, Ing. Gerardo Sager y Esp. Ing. Pablo Ridolfi quienes han dedicado mucho
de su escaso tiempo en evaluar este trabajo.
Índice general
Resumen
1. Introducción General
1.1. Dificultades planteadas en la enseñanza de programación de siste-
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
1.2. Objetivo y solución propuesta.
mas embebidos.
.
2. Introducción Específica
2.1. La plataforma de Hardware . . . . . . . . . . . . . . . . . . . . . . .
2.2. Utilización de MicroPython . . . . . . . . . . . . . . . . . . . . . . .
2.3. Firmware: Punto de partida . . . . . . . . . . . . . . . . . . . . . . .
2.4. Software: Punto de partida . . . . . . . . . . . . . . . . . . . . . . . .
2.5. Requerimientos .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
VII
III
1
1
2
5
5
6
7
8
9
3. Diseño e Implementación
11
11
3.1. Diseño del Firmware . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.1. Creación de bibliotecas Python: Módulos y Clases . . . . . .
12
3.1.2. Diseño de bibliotecas para el manejo de periféricos desde C 14
3.1.3. Diseño de bibliotecas para el manejo de periféricos desde el
código Python . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2. Diseño del Software . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1. Desarrollo del IDE . . . . . . . . . . . . . . . . . . . . . . . .
3.2.2. Envío del archivo a la placa . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.1. Proyectos de ejemplo . . . . . . . . . . . . . . . . . . . . . . .
3.3.2. Bibliotecas implementadas
. . . . . . . . . . . . . . . . . . .
3.3. Documentación .
15
17
18
20
21
22
22
4. Ensayos y Resultados
.
.
.
.
.
.
Python .
23
4.1. Tests unitarios para bibliotecas para el manejo de periféricos desde C 23
4.2. Test unitarios para bibliotecas para el manejo de periféricos desde
26
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
4.3. Ejecución de los tests sobre la placa . . . . . . . . . . . . . . . . . . .
30
4.3.1. Requerimientos para la ejecución de los tests. . . . . . . . . .
31
4.4. Tests Unitarios para ventanas que componen el IDE . . . . . . . . .
32
4.5. Tests funcionales
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.5.1. Tests funcionales para el IDE . . . . . . . . . . . . . . . . . .
32
4.5.2. Tests funcionales para clases Python de manejo de periféricos 33
5. Conclusiones
5.1. Conclusiones generales
5.2. Próximos pasos .
. .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
A. Creación de un módulo y clase Python desde código C
A.1. Creación de un módulo . . . . . . . . . . . . . . . . . . . . . . . . . .
35
35
35
39
39
VIII
A.2. Incorporación de una clase al módulo . . . . . . . . . . . . . . . . .
A.3. Definición del constructor de una clase . . . . . . . . . . . . . . . . .
A.4. Definición de un método de una clase . . . . . . . . . . . . . . . . .
B. Módulos frozen
B.1. Código Python como parte del firmware . . . . . . . . . . . . . . . .
B.2.
Inclusión de casos de test escritos en Python . . . . . . . . . . . . .
Bibliografía
40
42
43
45
45
46
47
Índice de figuras
2.1. Diagrama en bloques de la plataforma EDU-CIAA-NXP . . . . . .
2.2. Foto de una placa EDU-CIAA-NXP . . . . . . . . . . . . . . . . . . .
2.3. Foto de una placa Pyboard . . . . . . . . . . . . . . . . . . . . . . . .
2.4. Conexión de la EDU-CIAA-NXP con la PC . . . . . . . . . . . . . .
2.5. Procesador de texto EDILE v0.2 . . . . . . . . . . . . . . . . . . . . .
3.1. Diagrama en bloques de la arquitectura del firmware . . . . . . . .
3.2. Anidamiento de llamadas a funciones desde Python a C . . . . . .
3.3. Relación entre las clases Python y los archivos del firmware . . . .
3.4. Diagrama de clases para manejo de periféricos . . . . . . . . . . . .
3.5. Diagrama en bloques de la arquitectura del software del IDE . . . .
3.6. Botones adicionales del IDE. . . . . . . . . . . . . . . . . . . . . . . .
3.7. Diagrama de clases de las funcionalidades agregadas al IDE. . . . .
3.8. Diagrama de secuencia que describe la comunicación entre el IDE
. . . . . . . . . . . . . . . . . . . . . . . . . . .
y el firmware.
.
.
.
.
pa uPython HAL.
4.1. Estructura de archivos para la ejecución de tests unitarios de la ca-
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2. Diagrama de clases del módulo unittest. . . . . . . . . . . . . . . . .
4.3. Diagrama de clases de tests unitarios para el IDE . . . . . . . . . . .
IX
5
6
6
7
8
11
13
14
16
17
18
19
21
25
27
31
Índice de Tablas
4.1. Conexiones de hardware requeridas para ejecutar los tests . . . . .
A.1. Relación entre métodos Python y funciones C . . . . . . . . . . . . .
XI
31
41
1
Capítulo 1
Introducción General
En este capítulo se aborda la problemática en la enseñanza de la programación de
sistemas embebidos y la solución propuesta en este trabajo.
1.1. Dificultades planteadas en la enseñanza de programa-
ción de sistemas embebidos.
Un alumno de nivel secundario o universitario que comienza su formación en el
ámbito de la informática o electrónica, y es instruído para adquirir conocimien-
tos de programación sobre sistemas embebidos, generalmente debe enfrentarse
a ciertos problemas a los que no debería enfrentarse en una etapa tan temprana
de aprendizaje. Estos problemas generalmente tienen que ver con el lenguaje ele-
gido para aprender a programar y la sintaxis del mismo, así como también a la
complejidad del IDE1 utilizado y la necesidad de conocimientos medianamente
avanzados sobre arquitecturas de microcontroladores [9].
Los típicos problemas a los que un estudiante inicial de informática debe enfren-
tarse, según un trabajo publicado por Kaczmarczyk, East, Petrick y Herman en
2010 [8], son modelos de datos, referencias, punteros, tipos de variables, bucles
y sentencias condicionales entre otros. Si a estos problemas se le suman los men-
cionados previamente (sintaxis, IDE y conocimientos de arquitectura de micro-
procesadores), se crea una situación en donde el alumno no puede focalizarse en
comprender y practicar algoritmia, y debe lidiar con problemas de sintaxis, com-
pilación, configuración del entorno de desarrollo, y complicados conocimientos
de arquitectura para configurar y utilizar los periféricos de un microcontrolador
como por ejemplo una entrada o salida digital y en muchos casos no pudiendo
acceder a la documentación adecuada o a ejemplos detallados.
En la publicación de Brito y de Sá-Soares en 2013 [1] se asegura que existe una alta
tasa de incomprensión en las materias de introducción a la programación e inves-
tigaciones demuestran que herramientas que permiten escribir un algoritmo en
forma simple y probar su ejecución de inmediato como Scratch2 dan resultados
mucho más favorables [11]. Este tipo de herramientas oculta las capas de bajo
nivel requeridas para la utilización de un hardware específico, permitiendo a los
alumnos de nivel inicial practicar programación con el incentivo extra de poder
1IDE: Entorno de Desarrollo Integrado.
2Scratch: Lenguaje de programación basado en bloques encastrables que permiten formar un
algoritmo evitando escribir texto.
2
Capítulo 1. Introducción General
crear fácilmente dispositivos electrónicos que realicen determinadas acciones, sin
caer en la necesidad de adquirir previamente conocimientos avanzados de siste-
mas embebidos [14].
1.2. Objetivo y solución propuesta.
El objetivo principal del presente trabajo es proveer un conjunto de herramien-
tas que permitan a estudiantes de educación secundaria y universitaria aprender
programación sobre sistemas embebidos evitando los típicos problemas que sur-
gen en los primeros acercamientos a esto
Comentarios de: Entorno de programación educativo en lenguaje Python para la EDU-CIAA-NXP (0)
No hay comentarios