[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 メーリングリストの案内