Mexendo com drivers ⚙️
Como expectativa da aula, eu e minha dupla terminamos nossas coisas na aula e isso é muito bom porque trocamos experiências que tivemos fora da disciplina também. Derick estava me explicando um pouco mais sobre os drivers e isso foi muito bom para entender o exercicio no todo.
Hoje fizemos um tutorial de criar um drive de character na árvore do iio (https://flusp.ime.usp.br/kernel/char-drivers-intro/). Só teve um momento que eu travei… no momento de buildar o modulo, onde quando fui copiar o arquivo .ko
para dentro da vm acabei copiando para um arquivo e não para a pasta:
# Errado sem o barra no final
cp simple_char.ko /lib/modules/`uname -r`/kernel/drivers/char
# Certo com o barra no final
cp simple_char.ko /lib/modules/`uname -r`/kernel/drivers/char/
Após isso foi muito tranquilo terminar o tutorial… por fim ao rodar os arquivos .c
o buffer rodou umas saidas estranhas, os monitores (David e Rafael) respoderam que pode ser algo da execução da vm.
root@localhost:~# ./read_prog simple_char_node
Read buffer: ���
root@localhost:~# ./write_prog simple_char_node
Error: 9wrote -1 bytes to buffer
Mas finalizaram que tava tudo certo, que no final tanto o driver que criamos quando o código estão 10.
Sugestões de correções
@host
aarch64-linux-gnu-gcc read_prog.c -o read_prog
scp read_prog root@<VM-IP-ADDRESS>:~/
@VM
root@localhost:~# ./read_prog simple_char_node
Esse código em cima não segue uma consistência dos outros tutoriais, acredito que deva separar entre o que é rodado no host e o que é rodado na VM
Além disso, como o tutorial é para primeiro contato do desenvolvedor acredito que pode ser referenciado os arquivos de tutoriais anteriores quando necessário, como no momento em que precisamos copiar o modulo para dentro da vm e buildar.