Linux系统中使用Xbox360手柄
最近一个项目中需要用到Xbox360游戏手柄,硬件平台为周立功A7开发板,EPC-6G2C-L,折腾半天,终于弄好了;
正常电脑Ubuntu系统是自带手柄驱动的,将手柄插上电脑USB接口,将自动出现设备接口文件,路径为/dev/input/js0;
只要电脑能找到js0,则手柄可以正常使用,直接读写文件即可获取手柄各个按钮及旋钮的值;
但是A7板卡上并不是完整的Ubuntu系统,而只是一个Linux内核,所以无论怎么插拔360手柄,都无法找到js0;进而也
无法操作手柄,究其原因就是内核驱动不支持,Joystick驱动程序并未加载内核中,知道原因了,就好搞了,方法就是重新
编译内核,将驱动加载其中,然后给板卡重新烧录内核文件,步骤如下:
1、在周立功官网下载相应板卡的系统源文件,解压tar zxvf linux-src-bsp-4.1.15-09-12.tar.gz;
2、进入linux-src目录,修改built-zImage.sh文件,增加一行代码menuconfig,如下:
3、执行命令:./built-zImage.sh,运行一段时间后,会弹出窗口,如下:
4、仅此进入:Device Drivers--->Input device support,分别选择Joystick interface和Joysticks/Gamepads;
5、同时进入Joysticks/Gamepads下级目录,选中如下三项:
6、选完之后,保存退出,内核将继续编译;
7、大概十几分钟后,编译完成,生成内核编译文件:arch/arm/boot/zImage;
8、将zImage文件拷贝到板卡中,tftp -gr zImage 192.168.1.100
9、擦除内核Flash,命令如下:
10、烧写内核文件,如下:
11、重启板卡系统后,将手柄插到板卡USB接口上,查看设备接口,如下:
12、如上图,已经可以看到js0了,说明手柄驱动已装好,可以正常使用了;
(插播一条:更新完内核文件后,可能还是看不到js0设备,这是可以手动加载驱动命令:sudo modprobe joydev)
13、网上搜一个Joystick的驱动代码(容易搜到),编译后,在板卡中执行,即可实时观察手柄各旋钮及按钮的值了,如下:
14、完毕!