LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1649|回复: 24

驱动程序如何识别硬件!?

[复制链接]
发表于 2003-8-26 19:46:25 | 显示全部楼层 |阅读模式
我刚刚才把我的ps/2鼠标的驱动程序调试出来,现在是不报错了,但是我insmod我的mymouse.o以后,一点反应都没有,用lsmod查看,显示为unused,但是我的鼠标已经是插上了的!
这是驱动程序的问题还是系统设置上的问题呢?搞不懂了!我还是刚刚开始学!
还请各位高手指教!!谢谢!
发表于 2003-8-26 21:03:12 | 显示全部楼层
你是在自己写鼠标驱动吗?
看看你的/etc/sysconfig/mouses配置是否正确。
 楼主| 发表于 2003-8-27 09:15:17 | 显示全部楼层
"FULLNAME="Microsoft - IntelliMouse (PS/2)"
MOUSETYPE="imps2"
XEMU3="no"
XMOUSETYPE="IMPS/2"
DEVICE=/dev/psaux"

你的意思是这个配置文件来识别我的鼠标吗?
其实我现在已经把内核中的"ps/2 aux device support"编出了内核
而且我现在还仅仅是想在console下面驱动我的鼠标
我的理解是系统把鼠标驱动分成了两层,由上层来获取鼠标的动作,下层来处理鼠标事件
现在的问题就是我不知道怎么样把我的驱动交给下层,其实我的驱动已经是有事件处理的了,但是就不知道怎么样和系统关联上,让系统使用我这个驱动来处理鼠标!
我现在真是晕惨了,写出来了确不能用!
还请各位高手指点一下!
为什么郁闷的总是我!
发表于 2003-8-27 10:07:51 | 显示全部楼层
console下,那你有没有运行gpm,console本身是不支持鼠标的。
发表于 2003-8-27 10:50:01 | 显示全部楼层
说说看吧我也想听听
 楼主| 发表于 2003-8-27 10:52:27 | 显示全部楼层
其实我现在连我的鼠标都没有检测到,我觉得可能是我的init()出问题了
int psaux_init(void)
{
        if (aux_device_present == 0xaa) {
                printk(KERN_INFO "S/2 auxiliary pointing device detected -- driver installed.\n");
                aux_present = 1;
                kbd_read_mask = AUX_OBUF_FULL;
        } else {
                return -EIO;
        }
        misc_register(&psaux_mouse);
        queue = (struct aux_queue *) kmalloc(sizeof(*queue), GFP_KERNEL);
        memset(queue, 0, sizeof(*queue));
        queue->head = queue->tail = 0;
        queue->proc_list = NULL;
        if (!qp_found) {
#if defined INITIALIZE_DEVICE
                outb_p(AUX_ENABLE,AUX_COMMAND);         /* Enable */
                aux_write_ack(AUX_SET_SAMPLE);
                aux_write_ack(100);                     /* 100 samples/sec */
                aux_write_ack(AUX_SET_RES);
                aux_write_ack(3);                       /* 8 counts per mm */
                aux_write_ack(AUX_SET_SCALE21);         /* 2:1 scaling */
                poll_aux_status_nosleep();
#endif /* INITIALIZE_DEVICE */
                outb_p(AUX_DISABLE,AUX_COMMAND);   /* Disable Aux device */
                poll_aux_status_nosleep();
                outb_p(AUX_CMD_WRITE,AUX_COMMAND);
                poll_aux_status_nosleep();             /* Disable interrupts */
                outb_p(AUX_INTS_OFF, AUX_OUTPUT_PORT); /*  on the controller */
        }
        return 0;
}
我把request_irq放到了psaux_write()里面,是不时这个问题??
而且还有一个问题就是我的鼠标到底需不需要INITIALIZE
帮我看看吧
谢谢了!
发表于 2003-8-27 11:35:17 | 显示全部楼层
你把gpm安装后看看吧。
正常情况下,如果内核检测到设备文件的存在,会给出一些提示信息,用dmesg可以查看。你在编写的程序中加入一些调试信息,也可以用这种方法查看。
 楼主| 发表于 2003-8-27 13:37:08 | 显示全部楼层
gpm已经安装
如何使它与驱动程序相链接呢?
还是gpm只是一个库,然后在驱动中调用:ask
发表于 2003-8-28 07:53:50 | 显示全部楼层
 楼主| 发表于 2003-8-28 08:58:44 | 显示全部楼层

正在研究中
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表