In the libraries there're two ways of GPIO usage: using sys files (implemented here) and with memory mapping. This issue is regarding the status of /dev/mem / /dev/gpiomem method support.
Libraries:
| Name |
Target Language |
Board |
/sys files |
/dev/mem |
Interrupts |
Notes |
| bcm2835 |
C |
RPi |
❌ |
✅ |
❌ |
|
| wiringPi |
C |
RPi |
✅ |
✅ |
✅ 1 |
|
| RPi.GPIO |
Python |
RPi |
❓ |
✅ 2 |
✅ 3 |
It looks like /sys files are used for interrupts only. Needs further research 3 |
| gpiozero |
Python |
RPi |
✅ |
✅ |
✅ |
There're two strategies in the code: GPIOFS and GPIOMemory 4. By default the GPIOMemory one is used 5. |
| onoff |
NodeJS |
RPi, C.H.I.P., BeagleBone |
✅ |
❌ |
✅ |
|
| rpi-gpio.js |
NodeJS |
RPi |
✅ |
❌ |
✅ |
Interrupts implemented using epoll 6 |
TODO:
- explain how can we implement supporting the
/dev/mem method
- highlight the importance of
/dev/mem method support