Vous êtes sur la page 1sur 5

UNIVERSIDADE FEDERAL DE ITAJUB UNIFEI CAMPUS ITABIRA

CURSO DE ENGENHARIA DA COMPUTAO - ECO


SISTEMAS OPERACIONAIS
PROF. JULIANO DE ALMEIDA MONTE-MOR

RELATRIO DO PROJETO NO 4
WRITTING DEVICE DRIVERS IN LINUX: A BRIEF TUTORIAL

ALUNOS: JOO GUILHERME DE SOUZA ALVES COSTA


ALEXANDRE SOUTO NOGUEIRA
FLAVIUS VINCIUS COIMBRA
FELIPE MARINHO TAVARES

RA: 28631
RA: 27452
RA: 28335
RA: 27305

1. INTRODUO

Considerando o funcionamento de um computador, o sistema operacional com


sua seo kernel tem o objetivo de comunicar hardware e software, assim para que
novos dispositivos se conectem e trabalhem em conjunto com a mquina so
implementados drivers que definem a interao entre dispositivo e computador por
meio de mdulos inseridos no kernel.
Este relatrio descreve os passos e seus respectivos resultados ao seguir um
tutorial para desenvolver drivers em sistemas operacionais Linux. Implementou-se um
driver categorizado como char device, qual realiza a comunicao de processo
processo que, embora realize uma funo simples, engloba os recursos e funes
padres necessrios para a implementao de drivers para este tipo de sistema.
Inicialmente, de acordo com o tutorial, necessrio um conhecimento prvio de
programao em C e programao em microprocessadores. Evidentemente,
importante tambm que o usurio tenha conhecimento em Sistemas Operacionais e que
entenda o funcionamento modular do Linux.

2.

OBJETIVOS
Compreender e desenvolver drivers em sistemas operacionais com base em

Linux.

3.

DESENVOLVIMENTO E RESULTADOS

O desenvolvimento do projeto pode ser resumido em algumas linhas de comando,


como possvel observar logo a baixo. Foi aplicado tanto para um cdigo hello.c e
memory.c.
nano hello.c
nano Makefile
<<
obj-m += hello.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD)
modules
>>
make
insmod hello.ko
lsmod
dmesg
nano memory.c
<<
remove/comenta o include do linux/config.h e asm/system.h
e
o resto do cdigo igual o do tutorial
>>
nano Makefile
<<
obj-m += memory.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD)
modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD)
clean
>>
make
insmod memory.ko
lsmod
dmesg ( resultado "Inserting memory module")
chmod 666 /dev/memory
echo [texto] >/dev/memory
cat /dev/memory (resultado, imprime o ultimo caractere do
texto)
Inicialmente, deve-se criar um arquivo em c com o cdigo padro de Hello
World, como mostrado na Figura 1. Em seguida, assim como da Figura 2, cria-se um
mdulo para o kernel atravs do makefile.

Com o mdulo gerado, basta instal-lo utilizando um comando (vide Figura 3) e


verificar se o mdulo de fato foi instalado com o comando lsmod.

Figura 1 Cdigo hello.c

Figura 2 Comandos para gerar o hello.ko

Figura 3 Instalao e verificao do mdulo

.Em seguida, realizou-se o teste com o memory.c (Figura 4), em que o processo
basicamente se repete. Pela Figura 5, pode-se notar que novamente utiliza-se o comando
Make para gerar o modulo e, em seguida, utiliza-se o comando insmod para instalar o
mdulo (Figura 6).
Por fim, possvel validar o funcionamento do mdulo instalado, assim como
mostra a Figura 7, em que tanto o hello.ko quanto o memory.ko funcionam.

Figura 4 Cdigo do memory.c

Figura 5 Gerao do mdulo memory

Figura 6 Instalao e verificao do mdulo memory.ko

Figura 7 Verificao final do funcionamento dos dois mdulos.


4.

CONCLUSES
Seguindo o tutorial possvel escrever um drive de dispositivo completo,

aprendendo conceitos por trs do kernel que o permita, de forma fcil e rpida,
compreender melhor a escrita de driver de dispositivo. Alm disso, estudaram-se outras
ferramentas que permitem interagir com o kernel pelo uso da linguagem C.
5.

REFERNCIAS BIBLIOGRFICAS

FREE SOFTWARE MAGAZINE. Writing device drivers in Linux: A brief


tutorial.[S.I.]

c2016.

Disponvel

em:

<http://www.freesoftwaremagazine.com/articles/drivers_linux>. Acesso em: 25 jun.


2016.