今天调好了键盘驱动!

  还记得去年10月,我就买了块板子,准备学嵌入式开发。直到现在才开始认认真真地写驱动玩玩。这个键盘驱动我以前就弄过的,不过当时知识学的不扎实。光会纯搬别人的程序,出现了问题都不知道怎么解决。经过这么几个月的努力,现在做起来就舒服多了 。 在写和调试的过程中也遇到了许多的问题。下面就是一些记录:

 

POLL函数的实现方法:

static unsigned int key_dev_poll(
        struct file *file,
        struct poll_table_struct *wait)
{
    unsigned int mask = 0;
    poll_wait(file, &key_dev->wq, wait);
     if (key_dev->head!=key_dev->tail)
        mask |= POLLIN | POLLRDNORM;//mark the file can be read!
    return mask;
}

 

 

err = copy_to_user(buff,(const void*)key_dev->buf,count);
 //if success, return 0!!!!!!!!!!!!!!!!!!!

return ret ? -EFAULT : count;//it is vital!!!

这个函数弄了很久! 开始没有注意到它调用成功,就返回0!!!!导致应用程序一直出错(读不到数据)。

 

下一步,为了学习,我会尝试着实现更多的函数,来做这个键盘驱动。从而巩固我之前学到的很多理论知识。

最后提醒自己,一定要多注意函数运行成功或出错时的返回值/错误码!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值