[Suzaku:00274] Re: SUZAKU-VのuClinuxについて

email@hidden
2005年 4月 9日 (土) 16:36:49 JST


Minobeです.


SUZAKU-Vに関しては
ユーザプログラムから直接IO等をいじるには基本的にドライバを作成する
という認識でよろしいでしょうか?


そこでSUZAKU-Vで下記のようなドライバを書いております.
単純にOPB接続されたOPB_GPIOへ出力しLEDを光らすようなドライバ
を書いています.OPB_GPIO 1.00.aを使っております.

/***********************************************************/
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <asm/io.h>
#include <asm/uaccess.h>

#define GPIO_DATA 0x00
#deifne GPIO_TRI  0x04
#define GPIO_1_ADDR 0xF0FFA000
#define GPIO_1_DATA_ADDR (GPIO_1_ADDR + GPIO_DATA)
#define GPIO_1_TRI_ADDR (GPIO_1_ADDR + GPIO_TRI)

static int gpio_write(struct file *filp, const char *user_buf, size_t count, loff_t*)
{
        /*  GPIO_1へのIO出力文を書きたい.
            *((volatile unsigned int *) GPIO_1_TRI_ADDR) = 0x00000000;
            *((volatile unsigned int *) GPIO_1_DATA_ADDR) = 0xFFFFFFFF;
           のようなことがしたい.
         */
}

//他省略

static struct file_operations testgpio_fops = {
        write:gpio_write,
        open:gpio_open,
        release:gpio_close
}

/***********************************************************/


上記のようなvolatileアドレスへ直接出力するプログラム文で
コンパイルしinsmod後
# echo 1 > /dev/gpio
でドライバのwrite関数を立ち上げた時,volatile出力文の箇所で
カーネルアクセスエラーが起きました.
(現在このドライバは/dev/gpioに割り当ています.)

MMUなどの仮想化の問題でしょうか?
なにか別にマップする必要がありますでしょうか?

直接アドレスへ出力する場合,どのように書いたらよいでしょうか?






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