88
edits
Changes
From IGEP - ISEE Wiki
no edit summary
For this How-To I used [http://labs.isee.biz/index.php/IGEP_firmware_Yocto IGEP firmware Yocto] === Feedback and Contributing ===At any point, if you see a mistake you can contribute to this How-To. Edit yourself ! == Requirements ==For this How-to, I used:* IGEPv2 Board * Only for C-program example it also needed:** Add shortcircuit cable between J990:20 and J990:22 pins. By default, GPIO 156 (J990:20) and GPIO 157 (J990:22) are available on these J990 pins. Another boards tested: *IGEP COM MODULE *IGEP COM AQUILA == How to chek an GPIO == The gpio-int-test.c program shows one way of using the sysfs file /sys/class/gpio/gpioXX/value to block program execution using poll() until the input level on GPIOXX changes. [[CategoryFile:Work in progressGPIO_TEST.tar]] == Bash commandline ==Basic gpio operations could be done using bash and sysfs :* Export GPIOs <pre>echo "GPIO number NN" > /sys/class/gpio/export</pre>** For example: '''echo "156" > /sys/class/gpio/export'''<br><br>* Unexport GPIOs <pre>echo "GPIO number NN" > /sys/class/gpio/unexport</pre> * Set GPIO direction <pre>echo "out" > /sys/class/gpio/gpioNN/direction</pre>** For example: '''echo "out" > /sys/class/gpio/gpio156/direction'''<br><br>* Set GPIO value <pre>echo "1" > /sys/class/gpio/gpioNN/value</pre>* Get GPIO value <pre>cat /sys/class/gpio/gpioNN/value</pre>* Configure hardware interrupts <pre>echo "rising" > /sys/class/gpio/gpioNN/edge</pre> == C-program Example == C-program Example contains some C-functions to control GPIOs. These also 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 [Categoryhttp:Communications]//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 ===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 157gpio/direction: No such file or directory 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 > directionecho 0 > valueecho 1 > value</pre> === Result ===At first remote terminal you should read a message similar like this:<pre>poll() GPIO 157 interrupt occurred </pre>