Aviso: para depositar documentos, por favor, inicia sesión e identifícate con tu cuenta de correo institucional de la UCM con el botón MI CUENTA UCM. No emplees la opción AUTENTICACIÓN CON CONTRASEÑA
 

Infraestructura hardware/software de bajo coste para implementación de dispositivos USB y drivers en Linux

Citation

Abstract

El objetivo de este Trabajo de Fin de Grado ha sido construir una infraestructura hardware y software de bajo coste que permita el prototipado de dispositivos USB con diferentes características, además del desarrollo de controladores software para dichos dispositivos. Esta infraestructura está orientada a la docencia, y más concretamente a la adquisición de los conocimientos necesarios para el desarrollo de drivers USB. La infraestructura permite también acercar a los estudiantes a ciertas partes del complejo protocolo USB, todo ello sin realizar una gran inversión económica, gracias al bajo coste de los dispositivos que la conforman. Asimismo, su flexibilidad ofrece un gran potencial para desarrollo de prácticas de laboratorio, permitiendo una fácil extensión y adaptación de estas a un amplio espectro de dispositivos de entrada-salida. La parte software de la infraestructura tiene dos componentes bien diferenciados. El primero de ellos es un firmware desarrollado en este proyecto (basado en V-USB) que permite la implementación de dispositivos USB por software. Este firmware hace posible la construcción de dispositivos USB empleando un microcontrolador, y uno o varios dispositivos periféricos básicos, que pueden ser expuestos al usuario como un único dispositivo USB. Esto, unido al sistema de perfiles hardware del firmware, proporciona gran flexibilidad, ya que con un solo producto hardware se puede obtener una amplia funcionalidad combinando las funciones de múltiples perifericos. En segundo lugar, como parte del proyecto se ha desarrollado una colección de drivers de ejemplo que interactúan con diferentes periféricos haciendo uso de la API del kernel Linux. Este paquete de drivers sencillos permite a los estudiantes iniciarse en aspectos de desarrollo de controladores software para dispositivos USB en Linux. En cuanto a la parte hardware, se han construido distintos prototipos basados en microcontroladores AVR de ATMEL. El prototipo final de la infraestructura hace uso de una placa con microcontrolador ATMega328p, y está provisto de un circuito extra que proporciona el puerto USB para la conexión a un ordenador o dispositivo móvil. Este prototipo permite la conexión de distintos periféricos sencillos (conjuntos de LEDs RGBs, zumbadores, displays 7 segmentos, pantallas LCD, etc.), y soporta la depuración de su firmware USB via puerto serie, acessible mediante un segundo puerto USB.
The objective of this Final Degree Project has been to build a low-cost hardware and software infrastructure that allows the prototyping of USB devices with different characteristics, as well as the development of software drivers for these devices. This infrastructure is oriented towards teaching, and more specifically to the acquisition of the necessary knowledge for the development of USB drivers. The infrastructure also allows to bring students closer to certain parts of the complex USB protocol, all this without making a large financial investment, thanks to the low cost of the devices that comprise it. Furthermore, its flexibility offers great potential for the development of laboratory practices, allowing easy extension and adaptation of these to a wide range of input-output devices. The software part of the infrastructure has two distinct components. The first one is a firmware developed in this project (based on V-USB) that allows the implementation of USB devices by software. This firmware makes it possible to build USB devices using a microcontroller, and one or several basic peripheral devices, which can be exposed to the user as a single USB device. This, coupled with the firmware hardware profiling system, provides great flexibility, since with a single hardware product a wide range of functionality can be obtained by combining the functions of multiple peripherals. Secondly, as part of the project, a collection of example drivers has been developed that interact with different peripherals making use of the Linux kernel API. This package of simple drivers allows students to get started in software driver development aspects for USB devices in Linux. On the hardware side, different prototypes based on ATMEL AVR microcontrollers have been built. The final prototype of the infrastructure makes use of an ATMega328p microcontroller board and is provided with an extra circuit that provides the USB port for connection to a computer or mobile device. This prototype allows the connection of different simple peripherals (RGB LED arrays, buzzers, 7-segment displays, LCD displays, etc.), and supports debugging of its USB firmware via serial port, accessible through a second USB port.

Research Projects

Organizational Units

Journal Issue

Description

Trabajo de Fin de Grado en Ingeniería del Software y en Ingeniería de Computadores, Facultad de Informática UCM, Departamento de Arquitectura de Computadores y Automática, Curso 2022/2023.

Keywords