说明:在内核源码里会有很多已经实现的驱动,对于我们来说只需要写好设备文件即可,但是我们如何知道驱动需要那些数据,以及有哪些驱动呢?
解决:
1.首先在内核源码目录下执行执行菜单配置命令:
make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
产生菜单如下
2.然后进入要用到驱动,如我要编译按键驱动,所以在 Device Drivers/ Input device support /Keyboards/GPIO BUTTON ,选中后编译<*>进内核,然后我们写device数据即可。但是我们怎么知道驱动需要用哪些数据呢?
3.我们可以在GPIO BUTTON下选择下面的Help,可以查看驱动代码的存放路径,如图:
4.有上图可以看到驱动文件在源码下的路径为 drivers/input/keyboard/ ,但是下面有很多文件,具体在哪里呢?
5.在源码目录下打开上面路径下的Makefile文件,命令:vim drivers/input/keyboard/Makefile ,在里面搜索上面 的宏 KEYBOARD_GPIO,结果如下
6.其中gpio_keys.c即是按键驱动文件,
7.进去后查看probe函数和对应的结构体,写device文件。
8.设备文件加载后,可以通过命令 “cat /proc/bus/input/device" 查看有没有标准输入事件
9.通过 "exec 0</dev/tty1" 来在终端进行测试,测试完成后需要重启板子才可以恢复。