最近一個項目中需要用到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、完畢!
