Posso rispondere a questo.
sudo chown root.gpio /dev/mem
Questo cambia il proprietario e il gruppo di /dev/memal roote gpio, rispettivamente.
sudo chmod g+rw /dev/mem
quindi fornisce al gruppo l'accesso in lettura e scrittura a questo /dev/memoggetto.
L' /dev/memoggetto è sostanzialmente l'intero spazio di memoria sul sistema. Ciò significa che ora il gruppo gpio, e tutti gli utenti, possono leggere e scrivere nello spazio di memoria.
Ora, nello spazio di memoria ci sono molte cose, inclusi i registri della CPU. Quando si attivano i pin GPIO, si cambia un po 'in uno di questi registri. Il kicker è che devi essere sicuro di farlo correttamente o che nel tuo sistema possono accadere cose brutte.
Per proteggere l'intero spazio di memoria, i poteri che devono essere mappati solo sulle parti di memoria a cui dobbiamo lavorare con i bit GPIO /dev/gpiomem. Ciò in effetti maschera / protegge il resto dello spazio di memoria dall'accesso e consente l'accesso solo ai bit GPIO. Ciò consente l'accesso agli indirizzi di memoria GPIO e non consente altre parti della memoria, come la memoria attualmente utilizzata da altri programmi.
In effetti, ciò crea un buco nelle protezioni di sicurezza e stabilità del sistema per consentire l'accesso alle cose GPIO, così come il resto della memoria, ma solo agli utenti del gruppo GPIO, di cui Pi è membro.
In futuro, driver come la bcm2835libreria e wiringPiverranno aggiornati di più (alcuni aggiornamenti sono già in corso) e le app che si basano su tali strumenti verranno ulteriormente aggiornate e, in futuro, si spera che tutta questa seccatura di GPIO come root sarà scompaiono.
Fino ad allora hai due scelte, apri il /dev/memgruppo to gpiocome lettura / scrittura o esegui come root, che ha la lettura completa in scrittura su tutti /dev/mem.
Spero che abbia un senso.
Al momento ci sono ancora molti problemi in cui è ancora necessario eseguire il comando root. Ad esempio, utilizzando il node-red-contrib-dht-sensormodulo, che dipende da node-dht-sensor, che dipende da BCM2835. Segrega i guasti usando /dev/gpiomemcome ha ancora alcuni bug nel node-dht-sensoro nel /dev/gpiomemmodo in cui lavorano insieme. Non so quale sia il caso, ma alla fine verrà risolto. Quando BCM2835 viene eseguito come "non root" ed /dev/gpiomemesiste, tenta di utilizzare /dev/gpiomeminvece di /dev/mem, quindi aprire il /dev/memgruppo to gpionon aiuta. Bummer.