免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2206 | 回复: 0
打印 上一主题 下一主题

请问一个关于Linux的Input子系统的丢失发送数据的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-08-12 18:55 |只看该作者 |倒序浏览
这几天被老板弄来搞I2C设备,读取的坐标需要用Input子系统上报应用。但是代码写好以后测试中发现上报的三个坐标值经常会丢失1-2个,有时连input_sync都没发。我的代码:

    相关代码:
    input子系统注册:
        bma->input_dev = input_allocate_device();
        if (!bma->input_dev)
        {
                err = -ENOMEM;
                printk(KERN_DEBUG "Input Request Error.\n");
                goto probe_err_reg;      
        }
        printk(KERN_DEBUG "Input Request Successful.\n");
        
        bma->input_dev->open       = input_open;
        bma->input_dev->close      = input_release;
        bma->input_dev->name       = SXA_I2C_NAME;
        bma->input_dev->phys       = "sxa/input7";
        bma->input_dev->id.bustype = BUS_I2C;
        bma->input_dev->id.vendor  = SXA_VENDOR;
        bma->input_dev->id.product = 1;
        bma->input_dev->id.version = 1;

        __set_bit(EV_ABS,    bma->input_dev->evbit);
        __set_bit(ABS_X,     bma->input_dev->absbit);
        __set_bit(ABS_Y,     bma->input_dev->absbit);
        __set_bit(ABS_Z,     bma->input_dev->absbit);
        __set_bit(ABS_MISC,  bma->input_dev->absbit);

        err = input_register_device(bma->input_dev);

    工作队列内发送坐标数据:
        input_report_abs(dd->input_dev, ABS_X, x);
        input_report_abs(dd->input_dev, ABS_Y, y);
        input_report_abs(dd->input_dev, ABS_Z, z);
        input_sync(dd->input_dev);

    在工作队列内发送数据时,上层报告数据丢失。采用evbug.ko调试发现数据确定丢失,以下是报告:
        <7>[ 3224.267441] Enter irq.
        <7>[ 3224.267484] dd has get.
        <7>[ 3224.267529] work scheduled.
        <7>[ 3224.267589] work_q Entered.
        <7>[ 3224.268473] X Regs: -3.
        <7>[ 3224.268504] Y Regs: 31.
        <7>[ 3224.268519] Z Regs: 2.
        <7>[ 3224.268534] TILT Regs: 96.
        <7>[ 3224.268551] *******************************
        <7>[ 3224.268669] evbug.c: Event. Dev: input3, Type: 3, Code: 0, Value: -3      应该有3个数据,-3、31、2,结果31丢失
        <7>[ 3224.270979] evbug.c: Event. Dev: input3, Type: 3, Code: 2, Value: 2
        <7>[ 3224.272001] evbug.c: Event. Dev: input3, Type: 0, Code: 0, Value: 0

        另外,发现同事正常应用的触摸屏上报的坐标数据也是有丢失的,不过似乎没影响正常使用……迷惑中……

        还望高手们能指点迷津,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP