Acredito que não consegui entender completamente os benefícios de escrever drivers de dispositivo em sistemas embarcados para alguns dispositivos específicos, como GPIO, quando há formas alternativas de fazer o mesmo trabalho.
Você pode acessar os GPIOs via sysfs e árvore de dispositivos.
- Escreva uma nova sobreposição de árvore de dispositivos e ative-a
- Vá para o /sys/class/gpio
- Exporte o pino necessário e comece a usá-lo (por meio de chamadas simples de shell ou dentro do aplicativo c/c++)
Escreva seu próprio driver.
- Codifique as funcionalidades reais.
- Exponha o driver a um nó (como /dev/tty) no espaço do usuário.
- Escreva outro código c/c++ para acessar o driver (também pode ser acessado por meio de chamadas simples de shell)
- Se você precisar de novas funcionalidades, primeiro altere o driver e depois o seu código. (Por que?)
Use diretamente /dev/mem;
- Inclua mman.he use o objeto /dev/mem para definir ou obter o status do GPIO.
Então,
- 1 -> será obsoleto e lento. (Ok, absolutamente benéfico para prototipagem rápida)
- 2 -> Como isso é mais rápido que 1? O primeiro também é outro driver GPIO, não é?
- 3 -> Não é o melhor e mais rápido caminho?
Fiz várias perguntas acima, mas aqui está a minha maior dúvida; por que não devo ir direto com a 3ª solução?