This is an old revision of the document!
Table of Contents
GPIO bit-bang driver for Linux
The GPIO bit-bang driver creates an interface to Linux GPIOs using the IOCTL API.
Basic 1-bit input and output is available along with accelerated multiple bit shift I/O.
GPIO bit-bang is well suited to PICMicro ICSP but not exclusively.
Build
This module is built out of kernel and depends on the header files and tools found locally or may be cross compiled.
For cross compilation, an example Makefile named `cross-compile.mk' is provided which should work for Raspberry PI OS as explained here.
If the linux source directory was cross compiled and then copied to the target system to build the module, `scripts.sh' is provided to rebuild certain kernel header scripts locally. This is needed because some scripts are actually binary files on the foreign architecture.
Raspberry Pi OS
First install development tools and the kernel headers when using a regular kernel.
apt-get install raspberrypi-kernel-headers
If you updated the kernel with rpi-update, install rpi-source
Now install headers for kernel installed with rpi-update.
rpi-source --skip-space
Now install the kernel module.
hg clone http://hg.kewl.org/pub/gpio-bb cd gpio-bb make make install
Armbian
BPI
apt install linux-headers-current-sunxi hg clone http://hg.kewl.org/pub/gpio-bb cd gpio-bb make make install
Configuration
Update the modprobe configuration to create the gpio-bb device node when the module is loaded. For example, add the following to /etc/modprobe.d/modprobe.conf
install gpio-bb modprobe --ignore-install gpio-bb && modprobe gpio-bb && mknod /dev/gpio-bb c 180 0 && chmod 666 /dev/gpio-bb
Lastly, add the following to /etc/modules and reboot.
gpio-bb
Obsolete documentation
Troubleshooting
gpio-bb uses the kernel API to access pins, this API demands exclusive access to a pin per process. This means you cannot use gpio-bb and sysfs export simultaneously for a single pin.