Habilitando e Carregando o Módulo
O primeiro passo foi habilitar o iio_dummy no .config do kernel usando o nconfig. As opções CONFIG_IIO_SIMPLE_DUMMY e CONFIG_IIO_DUMMY_EVGEN precisavam estar ativas.
Com o módulo compilado, carreguei o modprobe iio_dummy e verifiquei sua presença com lsmod. A confirmação final veio ao listar /sys/bus/iio/devices/, onde apareceu o diretório iio:device0 .
Explorando o sysfs e o configfs
O tutorial mostrou como o configfs permite criar dispositivos IIO dinamicamente. Montei o configfs em /mnt/iio_experiments/ e criei um novo dispositivo com:
sudo mkdir /mnt/iio_experiments/iio/devices/dummy/my_glorious_dummy_device
Isso fez com que um novo iio:device0 aparecesse no sysfs. Dentro dele, atributos como in_accel_x_raw e in_voltage0_raw já estavam disponíveis para leitura.
Um ponto importante: ao tentar descarregar o módulo com o dispositivo ainda ativo, recebi o erro modprobe: FATAL: Module iio_dummy is in use. A solução foi remover o diretório criado no configfs antes de descarregar.
Lições Aprendidas
- O sysfs: atributos como
*_rawe*_scalesão a interface padrão para leitura de sensores no IIO. - configfs: permite criar dispositivos IIO em tempo de execução, sem precisar reiniciar o kernel.
- Cuidado com índices: ao adicionar novos canais, é essencial garantir que
.scan_indexseja único. O uso de um enum ajuda a evitar conflitos.