Difference between revisions of "How to use GPIOs"
From IGEP - ISEE Wiki
m |
m |
||
Line 1: | Line 1: | ||
− | + | == Overview == | |
− | |||
− | |||
− | = Overview = | ||
− | This How-To is meant to be a starting point for people to learn use GPIOs for IGEP | + | 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 [http://labs.isee.biz/index.php/IGEP_firmware_Yocto IGEP firmware Yocto] |
− | There are more ways to use GPIOs | + | There are more ways to use GPIOs, but this one is very simple. |
− | = Feedback and Contributing = | + | == Feedback and Contributing == |
− | At any point, if you see a mistake you can contribute to this How-To. | + | At any point, if you see a mistake you can contribute to this How-To. |
− | = | + | == Requirements == |
− | + | For this How-to, I used: | |
+ | * IGEPv2 Board | ||
+ | * [http://labs.isee.biz/images/6/69/Gpio_examplebeta1.tar.bz2 GPIO example] | ||
− | + | == 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 === | |
+ | [http://labs.isee.biz/index.php/How_to_setup_a_cross_compiler#Download.2FInstall_IGEP_SDK 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. <br> You can do this sourcing once the environment-setup script. | |
+ | <pre>jdoe@ubuntu ~ $ source /opt/poky/1.2/environment-setup-armv7a-vfp-neon-poky-linux-gnueabi </pre> | ||
− | + | * Download [http://labs.isee.biz/images/6/69/Gpio_examplebeta1.tar.bz2 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: | |
+ | <pre>jdoe@ubuntu ~/Desktop $ arm-poky-linux-gnueabi-gcc -o gpio_example gpio_examplebeta1.c</pre> | ||
− | + | * Copy binary file to IGEP Board | |
− | + | == Execute program == | |
− | <pre> | + | Open a remote terminal and locate your program binary, execute program and pass like a parameter 157 value (GPIO 157): |
− | + | <pre>root@igep00x0:~# ./gpio_example 157 </pre> | |
− | + | Result will be: | |
− | + | <pre>root@igep00x0:~# ./gpio_example 157 | |
− | + | gpio/direction: No such file or directory | |
− | <pre>root@ | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | poll() GPIO 157 interrupt occurred | |
+ | ............. </pre> | ||
− | + | == Generate interrupts == | |
− | + | Open a second remote terminal and type: | |
− | + | <pre>cd /sys/class/gpio/ | |
− | + | echo 156 > export | |
− | + | cd gpio156/ | |
− | + | echo out > direction | |
− | + | echo 0 > value | |
− | + | echo 1 > value</pre> | |
− | + | == Result == | |
− | + | At first remote terminal you should read a message similar like this: | |
− | + | <pre>poll() GPIO 157 interrupt occurred </pre> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | = | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | </pre> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | <pre> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | < | ||
− | |||
− | |||
− | |||
− |
Revision as of 18:54, 14 September 2012
Contents
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:
- IGEPv2 Board
- GPIO example
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