Saya bisa menjawab ini.
sudo chown root.gpio /dev/mem
Ini mengubah pemilik dan grup /dev/mem
menjadi root
dan gpio
masing - masing.
sudo chmod g+rw /dev/mem
kemudian berikan grup akses tulis baca untuk ini /dev/mem
objek .
Itu /dev/mem
objek pada dasarnya adalah seluruh ruang memori pada sistem. Ini berarti bahwa sekarang grup gpio
, dan semua orang di dalamnya, dapat membaca dan menulis ke ruang memori.
Sekarang, di ruang memori ada banyak hal, termasuk register CPU. Saat Anda mengaktifkan pin GPIO, Anda mengubah sedikit di salah satu register ini. Kicker adalah, Anda harus yakin Anda melakukannya dengan benar atau hal-hal buruk dapat terjadi pada sistem Anda.
Untuk membantu melindungi seluruh ruang memori, kekuatan yang dipetakan hanya bagian memori yang kita perlukan untuk bekerja dengan bit GPIO untuk /dev/gpiomem
. Ini pada dasarnya menutupi / melindungi sisa ruang memori dari akses dan hanya memungkinkan bit GPIO diakses. Ini memungkinkan akses ke alamat memori GPIO dan melarang semua bagian lain dari memori, seperti memori yang saat ini digunakan oleh program lain.
Akibatnya, ini membuat lubang pada perlindungan keamanan dan stabilitas sistem untuk memungkinkan akses ke hal-hal GPIO, serta sisa memori, tetapi hanya untuk pengguna dalam grup GPIO, yang menjadi anggota Pi.
Di masa depan, driver seperti bcm2835
perpustakaan danwiringPi
akan diperbarui lebih (beberapa pembaruan sudah terjadi) dan aplikasi yang dibangun di atas alat-alat tersebut akan diperbarui lebih lanjut dan kemudian di masa depan, semoga semua kerumitan GPIO ini sebagai root akan menghilang.
Sampai saat itu Anda memiliki dua pilihan, buka /dev/mem
grup untuk gpio
membaca / menulis, atau jalankan sebagai root, yang memiliki baca tulis penuh untuk semua /dev/mem
.
Harapan itu masuk akal.
Saat ini masih ada beberapa masalah di mana Anda masih perlu menjalankannya root
. Misalnya, menggunakan node-red-contrib-dht-sensor
modul, yang tergantung pada node-dht-sensor
, yang tergantung pada BCM2835. Ini kesalahan menggunakan /dev/gpiomem
karena memiliki beberapa bug masih dalam node-dht-sensor
atau di /dev/gpiomem
atau cara mereka bekerja bersama. Saya tidak tahu yang mana masalahnya, tetapi akhirnya akan berhasil. Ketika BCM2835 berjalan sebagai 'non-root' dan /dev/gpiomem
ada, ia mencoba untuk digunakan /dev/gpiomem
alih-alih /dev/mem
, jadi membuka /dev/mem
grup to gpio
tidak membantu. Gelandangan.