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、完毕!

 

posted on 2019-05-27 17:57  知*行  阅读(5340)  评论(0编辑  收藏  举报