[Suzaku:00111] Re: パルス信号の解析方法

Yasushi SHOJI email@hidden
2004年 10月 10日 (日) 03:43:43 JST


At Sun, 10 Oct 2004 01:55:19 +0900,
吉田勤彦 wrote:
[...]
> 現在、パルス信号を入力し、そのテューティ比をFPGAで解析し、その値を 
> uClinux上に読み込みたいと考えております。
> 
> この場合、入力信号は1bitですので、UARTでないのでopb_gpioを使用するので 
> はないかと想像しているのですが実際はどうなのでしょうか。

opb_gpioで良いと思います。opbにつなぐ部分を自作するなら別ですが、gpio
と入力ピンの間に duty比を解析するロジックを入れると簡単だと思います。

> さらに uClinuxのdevice fileとしてアクセスする場合はどのようにすれば
> よいのでし ょうか。さすがにシリアル通信ではないので先日ありましたよ
> うな xmbserial.cの編集とは違いますよね。

ioctlを使って、こんな感じでできます。

#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <linux/ibm_ocp_gpio.h>

int main()
{
        int fd;
        int val;

        fd = open("/dev/gpio", O_RDWR);
        ioctl(fd, IBMGPIO_IN, &val);
        printf("%#x\n", val);
        val = 0xaa;
        ioctl(fd, IBMGPIO_OUT, &val);
        ioctl(fd, IBMGPIO_IN, &val);
        printf("%#x\n", val);
        return 0;
}

device driverや、vendor Makefileの patchは dist-suzaku3用です。
XPAR_SYSTEM_GPIO_BASEADDRは環境に合せて変えてください。
--
          yashi

 linux-2.4.x/include/asm-microblaze/xparameters.h |    4 ++--
 vendors/AtmarkTechno/SUZAKU/Makefile             |    2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

Index: uClinux-dist-20040408-suzaku3/linux-2.4.x/include/asm-microblaze/xparameters.h
===================================================================
--- uClinux-dist-20040408-suzaku3.orig/linux-2.4.x/include/asm-microblaze/xparameters.h	2004-01-20 09:17:24.000000000 +0900
+++ uClinux-dist-20040408-suzaku3/linux-2.4.x/include/asm-microblaze/xparameters.h	2004-10-10 03:12:56.759596848 +0900
@@ -54,8 +54,8 @@
 /******************************************************************/
 
 #define XPAR_XGPIO_NUM_INSTANCES 1
-#define XPAR_SYSTEM_GPIO_BASEADDR 0xFFFF5000
-#define XPAR_SYSTEM_GPIO_HIGHADDR 0xFFFF50FF
+#define XPAR_SYSTEM_GPIO_BASEADDR 0xFFFFb000
+#define XPAR_SYSTEM_GPIO_HIGHADDR 0xFFFFb0FF
 #define XPAR_SYSTEM_GPIO_DEVICE_ID 0
 
 #define XPAR_GPIO_0_BASEADDR XPAR_SYSTEM_GPIO_BASEADDR
Index: uClinux-dist-20040408-suzaku3/vendors/AtmarkTechno/SUZAKU/Makefile
===================================================================
--- uClinux-dist-20040408-suzaku3.orig/vendors/AtmarkTechno/SUZAKU/Makefile	2004-10-04 08:34:01.000000000 +0900
+++ uClinux-dist-20040408-suzaku3/vendors/AtmarkTechno/SUZAKU/Makefile	2004-10-10 03:26:46.063259011 +0900
@@ -32,7 +32,7 @@ endif
 DEVICES =								      \
 	tty,c,5,0      console,c,5,1   mem,c,1,1     kmem,c,1,2    null,c,1,3 \
 									      \
-	ttyS0,c,4,64							      \
+	ttyS0,c,4,64   gpio,c,10,185					      \
 									      \
 	zero,c,1,5     random,c,1,8    urandom,c,1,9			      \
 									      \



suzaku メーリングリストの案内