[Armadillo:01627] Re: GPIOの割り込みについて
mizo
email@hidden
2007年 5月 31日 (木) 19:14:28 JST
溝渕です。
Armadillo-9のGPIOドライバは割り込みに対応していない為、ドライバの入れ替
えが必要になります。
以下の手順で、Armadillo-210のGPIOドライバを使用しているのは、
Armadillo-9とGPIOポートが同じである為です。
また、以下ではkernel2.6を使用しています。
・linux-2.6.x/drivers/Kconfig の編集
config ARMADILLO210_GPIO
tristate "Old version: Armadillo-210 GPIO driver"
depends on ARCH_ARMADILLO210 || ARCH_EP93XX ←追加
・make menuconfig でドライバの入れ替え
Device Drivers --->
Character devices --->
<*> Old version: Armadillo-210 GPIO driver ←選択
< > EP93xx GPIO support ←選択解除
こうして作成したkernelでフラッシュメモリの書き換えを行なうとGPIOの割り込
みを使うことができます。
以下、割り込みが入るか5秒経過するまで待つサンプルコードです。
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <fcntl.h>
#include <asm/arch/armadillo2x0_gpio.h>
#define DEVICE "/dev/gpio"
#define TIMEOUT 5000
int main(int argc, char *argv[])
{
int fd;
int ret;
struct gpio_param param;
struct wait_param wparam;
param.next = NULL;
param.no = GPIO0;
param.mode = MODE_INPUT;
param.data.i.value = 0;
param.data.i.int_enable = 1; /* 0:disable/1:enable */
param.data.i.int_type = TYPE_FALLING_EDGE;
fd = open(DEVICE, O_RDWR);
if (fd < 0) {
perror("open");
return -1;
}
ioctl(fd, PARAM_SET, ¶m);
wparam.list = GPIO0;
wparam.timeout = TIMEOUT;
ret = ioctl(fd, INTERRUPT_WAIT, &wparam);
if (ret) {
perror("ioctl");
return -1;
}
close(fd);
return 0;
}
armadillo メーリングリストの案内