Buna cevap verebilirim.
sudo chown root.gpio /dev/mem
Bu kullanıcı ve grup değiştirir /dev/memiçin rootve gpiosırasıyla.
sudo chmod g+rw /dev/mem
daha sonra gruba bu /dev/memnesneye okuma yazma izni verir .
/dev/memNesne temelde sistemde tüm hafıza alanıdır. Bu, artık grubun gpiove içindeki herkesin bellek alanını okuyabildiği ve yazabildiği anlamına gelir .
Şimdi, bellek alanında CPU kayıtları da dahil olmak üzere birçok şey var. GPIO pinlerini değiştirdiğinizde, bu kayıtlardan birinde biraz değişiyorsunuz. Kicker, doğru yaptığınızdan emin olmanız gerekir, aksi takdirde sisteminizde kötü şeyler olabilir.
Tüm hafıza alanını korumaya yardımcı olmak için, sadece GPIO ile çalışmamız gereken hafıza parçalarının eşlendiği güçler /dev/gpiomem. Bu aslında hafıza alanının geri kalanını erişime karşı korur / korur ve sadece GPIO bitlerine erişime izin verir. Bu, GPIO belleğine erişime izin verir ve şu anda başka programlar tarafından kullanılmakta olan bellek gibi, belleğin diğer bölümlerine izin vermez.
Aslında bu, GPIO öğelerine ve ayrıca belleğin geri kalan kısmına erişime izin vermek için hem güvenlik hem de sistem kararlılığı korumalarında bir delik açar, ancak yalnızca Pi'nin üyesi olduğu GPIO grubundaki kullanıcılar için.
Gelecekte, bcm2835kütüphane gibi sürücüler wiringPidaha fazla güncellenecek (bazı güncellemeler zaten oluyor) ve bu araçların üzerine inşa edilmiş olan uygulamalar daha da güncellenecek ve daha sonra gelecekte, bu GPIO sorununu kök olacaktır kaybolmak.
O zamana kadar iki seçeneğiniz olacak, /dev/memgruba gpiookuma / yazma olarak açın veya hepsine tam okuma yazma olan bir root olarak çalıştırın /dev/mem.
Umarım anlamlı olur.
Halen, hala koşmanız gereken bazı konular var root. Örneğin, node-red-contrib-dht-sensorbağlı node-dht-sensorolan, BCM2835'e bağlı olan modülün kullanılması. Bu kullanarak-hatalarını seg /dev/gpiomemya hala bazı hatalar olduğu gibi node-dht-sensorveya /dev/gpiomemveya yolu birlikte çalışıyoruz. Hangisi olduğunu bilmiyorum, ama sonunda işe yarayacak. BCM2835 'root olmayan' /dev/gpiomemolarak çalıştığında ve mevcut olduğunda, /dev/gpiomemyerine onu kullanmaya çalışır /dev/mem, böylece /dev/memgrubun açılması gpioyardımcı olmaz. Aylak.