Propuestas de Tesis y Proyecto final de carrera
En el mes de abril de 2016 lanzaremos una nueva búsqueda de estudiantes que quieran desarrollar su tesis o trabajo final de carrera en relación con el Proyecto CIAA. Esta búsqueda será canalizada a través de la lista de correos embebidos32@googlegroups.com.
Temas de trabajo propuestos
Los siguientes son sólo algunos de los temas de trabajo propuestos:
CIAA Firmware
Diseño de un nuevo proceso de desarrollo para CIAA-Firmware con Gerrit/Github/Jenkins.
Analizar la calidad del CIAA Firmware mediante tools como: gcov,
BALAST sonar|, SPLINT, etc.
Diseñar una metodología de configuración para el CIAA-Firmware.
Versionamiento de los distintos módulos en diferentes repositorios incluyendo la autoinstalación con dependencias.
Implementación de sockets.
Biblioteca sAPI
Implementar la biblioteca sAPI (v0.5.0 o superior) en la PicoCIAA o en la CIAA-PIC.
Biblioteca sAPI para USB (Device y Host).
Biblioteca sAPI de CAN, CANOpen.
Biblioteca sAPI de manejo de String, o más general de Streams.
Biblioteca sAPI de manejo de displays gráficos y touch. Sería deseable que además hacer una herramienta que permita dibujar pantallas a msotrar en el display en la PC (por ejemplo en formato SVG o JSON) y exportarlas a algún formato o generar el código compatible con el driver.
IDE4PLC (requiere saber C y Smalltalk, en este último contactar a ericpernia@gmail.com).
Agragado de bloques de funciones para manejo UART, SPI, I2C.
Agragado de entradas y salidas analógicas.
Manejo de archivos de proyecto.
Embedded IDE (CIAA IDE) (requiere saber C++).
Completar el Debugger.
Autocompletado/indexado: utiliza ctags para indexar y clang para autocompletar. Es deseable combinar todo en uno solo. Hay varios candidatos, clangd, rtags, etc.
Repensar el sistema de templates: Actualmente esta basado en diff y patch. Esto requiere que todos los archivos del proyecto sean texto (no se puede poner binarios, imgágenes o pdf de documentación, etc.).
Mover todo lo que se pueda de la configuración al workspace: Hoy usamos QSettings, es mejor usar un json general con la ubicación del proyecto y todos los parámetros dentro de otro json en el proyecto.
Agregado de plugins: Buscar la forma de que el IDE acepte plugins (en scripting) que no impacte en la performance.
CIAABOT IDE (requiere saber Node.js, Electron.js y Angular).
Eclipse IDE (requiere saber Java y plugins de Eclipse).
Linux de CIAA-NXP (requiere saber de arquitecturas de microcontroladores y Linux Embebido).
Implementar un mecanismo de protección entre procesos usando la MPU del CPU.
Explotar el core M0 para implementar multiprocesamiento asimétrico (AMP).
Implementar un IPC entre 2 Cores uno corriendo Linux y otro CIAA-Firmware.
Ideas de tecnologías a portar para la CIAAs
¡Algo nuevo!
Metodología de trabajo
En la realización de estos trabajos se aplica la metodología de gestión de proyectos establecida por el Project Management Institute y realizar el trabajo completo en un plazo no mayor a un año corrido.
Para lograr esto la propuesta es la siguiente:
Durante diciembre 2014 y enero 2015 los interesados definieron su tema de tesis e hicieron una investigación preliminar al respecto, con ayuda del equipo de desarrolladores del Proyecto CIAA y los tutores locales que correspondan a sus respectivas Unidades Académicas.
Durante febrero y marzo 2015 los interesados están recibiendo en forma gratuita un curso básico de gestión de proyectos a cargo del Coordinador General del Proyecto CIAA, Dr. Ing. Ariel Lutenberg, y la Responsable de Sistema del Proyecto CIAA, Ing. Paola Pezoimburu en el marco del cual preparan el plan de trabajo para la realización de su trabajo de tesis.
Entre abril 2015 y diciembre 2015 los interesados ejecutarán el plan trazado, de acuerdo a los hitos definidos y a los plazos establecidos para cada etapa, debiendo ser la defensa del trabajo con fecha máxima el 15 de diciembre de 2015.
Tareas comunes a los trabajos
En líneas generales los trabajos seguirán una serie de etapas, cada una compuesta por un conjunto de tareas:
Diseño:
Análisis de requerimientos.
Diagramas en UML.
Especificación del software.
Concepto de verificación mediante tests.
Conocimientos y aptitudes
Para desarrollar cada trabajo se requiere una serie de conocimientos y aptitudes. No es necesario contar con todos ellos de manera previa, sino que a lo largo del trabajo se podrán ir adquiriendo y profundizando. ¡Hay mucho para aprender!
Programación en C/C++, Perl.
Uso de guidelines de programación y herramientas de documentación.
Experiencia en Debugging preferentemente OpenOCD.
Entorno de trabajo en Linux y Eclipse.
Conocimientos de GNU Makefile.
Capacidad de trabajar en equipo.
Pensamiento analítico.
Capacidad de abstracción.
¿Interesado?
Si estás interesado en participar en el apasionante Proyecto CIAA y embarcarte en el mundo de los Sistemas Embebidos, contanos qué proyecto te interesa y envianos tu CV a tesis@proyecto-ciaa.com.ar.