IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Tiny4412 Linux驱动之按键(输入子系统)

    techbulo发表于 2015-12-16 23:59:12
    love 0

    前面的驱动程序无法应用到别人写的现成的应用程序上(比如QT),因为别人的应用程序肯定不会打开我们创建的设备文件(/dev/buttons),别人打开的也许是其他现成的设备,比如/dev/tty。设置别人什么都不打开,直接scanf就能获得按键的输入。

    以前写的驱动程序只能我们自己用,或自己公司内部用(因为别人不知道怎么用)。

    如果想通用,就需要把自己写的驱动程序融入到内核现有的驱动程序中,这个现成的驱动程序就是输入子系统。

    这一节我们把自己写的按键驱动融入到linux输入子系统中,输入子系统的原理我们已经在上一篇文章介绍了《Linux输入子系统(Input Subsystem)》

    下面开始做测试

    还是两个文件,1驱动相关:. key_input.c  Makefile

    实验步骤:

    1.首先查看现在系统中的输入设备:

    系统中现有输入设备

    系统中现有输入设备

    2.加载驱动:

    insmod key_input.ko

    加载我们自己的驱动

    加载我们自己的驱动

    可以看到加载之后相应的输入设备也创建出来了

    下面开始做测试:

    1.首先查看一下当前shell的标准输入是哪个设备:

    当前shell的标准输入设备

    当前shell的标准输入设备

    可以看到当前shell的标准输入是串口,我们需要将他修改为按键,执行以下命令;

    exec 0</dev/tty1

    执行完上述命令之后,就可以测试我们的按键了,Tiny4412一共4个按键,在驱动中做了如下的按键映射

    key0----------------------> shift

    key1----------------------> l

    key2----------------------> s

    key3----------------------> enter

     

    这样我们连着按下key1、key2、key3就相当于执行ls命令,下面看一下效果:

    按键测试

    按键测试



沪ICP备19023445号-2号
友情链接