Criando um driver linux
Iremos abordar neste artigo, como criar um device driver em linux.
Pré requisitos
Instale os seguintes pacotes:
sudo apt-get install linux-headers-generic
apt-get install linux-headers-`uname -r`
Instale o gcc:
sudo apt-get install gcc
sudo apt-get install build-essential
apt-get install linux-virtual
GIT do Projeto
https://github.com/marcelomaurin/devicedriver_sample
Compilando o projeto
Abaixo o vídeo explicativo do tópico que será abordado aqui:
Agora vamos ao nosso código, crie um programa hello.c, conforme o código abaixo:
/*
* hello.c - The simplest kernel module.
*/
#include <linux/init.h>
#include <linux/module.h> /* Needed by all modules */
#include <linux/kernel.h> /* Needed for KERN_INFO */
static int hello_init(void)
{
printk(KERN_INFO "Hello world 1.\n");
/*
* A non 0 return means init_module failed; module can't be loaded.
*/
return 0;
}
static void hello_exit(void)
{
printk(KERN_INFO "Goodbye world 1.\n");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("MARCELO MAURIN MARTINS");
Agora crie o Makefile:
obj-m += hello.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
Carregando o Módulo do Kernel
Para carregar o módulo é necessário primeiro entender alguns comandos:
lsmod
Lista os módulos carregados do kernel.
insmod
Carrega um módulo no kernel.
dmesg
Mostra mensagens do sistema
rmmod
Remove um modulo da memória do kernel
Referências
Este artigo esta sendo baseado em vários artigos, o principal é esse:
https://tldp.org/LDP/lkmpg/2.6/html/x181.html
How to Write a Hello World Program in Linux Device driver
Linux Device Driver – Alessandro Rubini