How to use GPIOs

From IGEP - ISEE Wiki

Revision as of 18:54, 14 September 2012 by Pau (talk | contribs)

Jump to: navigation, search

Overview

This How-To is meant to be a starting point for people to learn use GPIOs for IGEP devices as quickly and easily as possible. For this How-To I used IGEP firmware Yocto

There are more ways to use GPIOs, but this one is very simple.

Feedback and Contributing

At any point, if you see a mistake you can contribute to this How-To.

Requirements

For this How-to, I used:

Configure IGEPv2

By default, GPIO 156 (J990:20) and GPIO 157 (J990:22) are available, connect J990:20 and J990:22 with a cable.

Example program

Example program contains some libraries to control GPIOs, libraries can do:

  • Export and unexport GPIOs
  • Set GPIO direction
  • Set GPIO value
  • Get GPIO value
  • Configure hardware interrupts

Example program configures a GPIO to wait a hardware interrupt. Once the GPIO value change from 0 value to 1 value (rising), program gives you a message.

Compile example program

Download an Install IGEP SDK if you don't have it.

First of all you need to initialize a suitable environment in the bash shell console inside your machine.
You can do this sourcing once the environment-setup script.

jdoe@ubuntu ~ $ source /opt/poky/1.2/environment-setup-armv7a-vfp-neon-poky-linux-gnueabi 
  • Download source code
  • Extract source code
  • Build source code:

Cross toolchain tools are available into the built-in virtual machine Poky SDK. You only need open bash terminal prompt and write command:

jdoe@ubuntu ~/Desktop $ arm-poky-linux-gnueabi-gcc -o gpio_example gpio_examplebeta1.c
  • Copy binary file to IGEP Board

Execute program

Open a remote terminal and locate your program binary, execute program and pass like a parameter 157 value (GPIO 157):

root@igep00x0:~# ./gpio_example 157 

Result will be:

root@igep00x0:~# ./gpio_example 157
gpio/direction: No such file or directory

poll() GPIO 157 interrupt occurred
............. 

Generate interrupts

Open a second remote terminal and type:

cd /sys/class/gpio/
echo 156 > export 
cd gpio156/ 
echo out > direction
echo 0 > value
echo 1 > value

Result

At first remote terminal you should read a message similar like this:

poll() GPIO 157 interrupt occurred