Eu posso responder isso.
sudo chown root.gpio /dev/mem
Isso altera o proprietário e o grupo de /dev/mem
para root
e gpio
respectivamente.
sudo chmod g+rw /dev/mem
depois, fornece ao grupo acesso de gravação e leitura a esse /dev/mem
objeto.
O /dev/mem
objeto é basicamente todo o espaço da memória no sistema. Isso significa que agora o grupo gpio
, e todos os que estão nele, podem ler e escrever no espaço da memória.
Agora, no espaço da memória há muitas coisas, incluindo registros da CPU. Ao alternar os pinos GPIO, você está alterando um pouco em um desses registros. O problema é que você precisa ter certeza de que faz isso corretamente ou que coisas ruins e ruins podem acontecer ao seu sistema.
Para ajudar a proteger todo o espaço da memória, os poderes que são mapeados apenas as partes da memória nas quais precisamos trabalhar com os bits GPIO /dev/gpiomem
. Com efeito, isso oculta / impede o acesso ao restante do espaço da memória e permite apenas o acesso aos bits GPIO. Isso permite o acesso aos endereços de memória GPIO e não permite outras partes da memória, como a memória atualmente sendo usada por outros programas.
Com efeito, isso abre um buraco nas proteções de segurança e estabilidade do sistema para permitir o acesso ao material GPIO, bem como ao restante da memória, mas apenas aos usuários do grupo GPIO, do qual Pi é membro.
No futuro, drivers como a bcm2835
biblioteca wiringPi
serão atualizados mais (algumas atualizações já estão acontecendo) e os aplicativos criados sobre essas ferramentas serão atualizados ainda mais e, no futuro, esperamos que todo esse problema GPIO como root desaparecer.
Até então, você tem duas opções, abra o /dev/mem
grupo gpio
como leitura / gravação ou execute como raiz, que possui gravação de leitura completa para todos /dev/mem
.
Espero que isso faça sentido.
No momento, ainda existem muitos problemas nos quais você ainda precisa executar root
. Por exemplo, usando o node-red-contrib-dht-sensor
módulo, que depende do node-dht-sensor
, que depende do BCM2835. Ele falha com o uso /dev/gpiomem
, pois ainda existem alguns bugs, dentro node-dht-sensor
ou dentro, /dev/gpiomem
ou da maneira como eles estão trabalhando juntos. Não sei qual é o caso, mas será resolvido eventualmente. Quando o BCM2835 é executado como 'não raiz' e /dev/gpiomem
existe, ele tenta usar em /dev/gpiomem
vez de /dev/mem
, portanto, abrir o /dev/mem
grupo para gpio
não ajuda. Vadio.