Página destinada à disciplina MAC0499 - Trabalho de Formatura Supervisionado do IME-USP.
Lucas Pires Stankus
Supervisor: Paulo Meirelles
Co-supervisor: Marcelo Schmitt
Drivers de dispositivos são uma das partes mais importantes do kernel Linux, compondo a maior parcela do seu código fonte. Todavia, ainda falta no kernel um arcabouço para validar e testar drivers. Como consequência, esses acabam concentrando mais erros que qualquer outra de suas partes. Dentro de várias soluções de curto prazo, emulação de dispositivos e utilização desses como alvo de drivers vem sendo uma tática para testá-los adotada por membros relevantes da comunidade do Linux. Este trabalho tem como objetivo analisar o uso de emulação como ferramenta para auxiliar o desenvolvimento de drivers de dispositivos no kernel Linux. Para atingir o objetivo proposto, o modelo ADXL313 foi usado como estudo de caso. Ele é uma especificação de circuito integrado que descreve um acelerômetro digital de três eixos, recomendado para aplicações em alarmes de carros e caixas-pretas. Durante este trabalho, um driver para controlar a operação de dispositivos ADXL313 no kernel Linux e um dispositivo ADXL313 emulado foram desenvolvidos. Ambas implementatações foram testadas contra a outra. Devido ao sucesso deste projeto, o driver desenvolvido foi aceito pela comunidade do Linux e vai estar disponível a partir da versão 5.16 do kernel Linux. O teste do driver contra a emulação também foi bem sucedido. Eles puderam ser testados um contra o outro em um ambiente virtual sem qualquer erro. Contudo, muitas deficiências desse processo foram encontradas em comparação com arcabouços de testes, invalidando o uso da configuração para integração contínua de drivers de dispositivos em ambientes de produção.
Device drivers are one of the essential parts of the Linux kernel, making up the most significant share of its source code. However, the kernel still lacks proper frameworks for validating and testing drivers. As a result, they end up concentrating more bugs than any other of its parts, and among many short-term solutions, emulating devices and using them as the drivers’ target has been an approach for testing adopted by relevant members of the Linux community. This work aims to analyse the use of device emulation as a tool for aiding device driver development in the Linux kernel. The ADXL313 device model was taken as a case study to achieve the proposed goal. This device is an integrated circuit specification that describes a 3-axis digital accelerometer recommended for car alarms and black boxes applications. During this work, a driver to control the operation of ADXL313 devices for the Linux kernel and an ADXL313 emulated device was developed. Both implementations were then tested against each other. Due to the success of this project, the driver developed has been accepted by the Linux community and will be available from version 5.16 onwards of the Linux kernel. The test of the driver against emulation was also successful. They were able to be executed against each other in a virtual environment without any errors. However, many shortcomings of the process were found compared to standard testing frameworks, invalidating the use of the setup for continuous integration of device drivers in a production environment.