预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共17页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

硬件: PC机 1台 MagicARM2410教学实验开发平台 1台 USB接口键盘 1个 USB接口鼠标 1个 软件: RedHatLinux9.0操作系统 Windows98/2000/XP操作系统(可选) 嵌入式Linux开发环境 (1)配置及编译链接输入设备驱动模块; (2)配置及编译链接USB接口键盘和鼠标驱动模块; (3)编写应用程序,将USB接口键盘或USB接口鼠标事件信息打印到终端。(1)熟悉嵌入式Linux应用程序的编写及其编译调试的方法。 (2)熟悉nfs文件系统的使用。 (3)复习USB主机驱动编译与加载实验内容; (4)了解Linux输入设备模块的配置及HID设备模块配置相关内容。Linux系统中集成了输入内核,通过输入内核管理各种各样的输入设备,如GPIO输入按键、PS2接口的键盘和鼠标、USB接口的键盘、鼠标和操纵杆等。不同类型的输入设备,输入内核都为上层软件提供了统一的接口,该接口称为事件接口。 输入内核中的事件接口对于不同的输入设备,输入内核根据检测到设备的先后顺序分配一个事件的节点,这些节点都是以设备的形式在/dev/input/文件夹下出现,设备的名称为event0~event31。应用程序通过open()函数打开事件设备,然后通过read()可以读出事件的数据。每个事件的数据固定为16字节,以structinput_event数据结构格式存储,该数据结构如程序清单1.1所示。程序清单1.1输入事件数据结构 structinput_event{ structtimevaltime; unsignedshorttype; unsignedshortcode; unsignedintvalue; }; time,为事件产生的时间,该时间以structtimeval结构体格式表示。 type,为事件的类型。EV_KEY(代码为0x01)为按键事件,如键盘按键和鼠标上的按键等;EV_REL(代码为0x02)为轨迹事件,如鼠标移动的轨迹等。code,事件的代码。如果事件的类型代码是EV_KEY,该代码code为设备键盘代码。代码植0~127为键盘上的按键代码,0x110~0x116为鼠标上按键代码,其中0x110(BTN_LEFT)为鼠标左键,0x111(BTN_RIGHT)为鼠标右键,0x112(BTN_MIDDLE)为鼠标中键。其它代码含义请参看/zylinux/kernel/include/linux/input.h文件。如果事件的类型代码是EV_REL,code值表示轨迹的类型。如指示鼠标的X轴方向REL_X(代码为0x00),指示鼠标的Y轴方向REL_Y(代码为0x01),指示鼠标中轮子方向REL_WHEEL(代码为0x08)。 value,事件的值。如果事件的类型代码是EV_KEY,当按键按下时值为1,松开时值为0;如果事件的类型代码是EV_REL,value的正数值和负数值分别代表两个不同方向的值。配置输入内核模块 在/zylinux/kernel目录下输入makemenuconfig命令配置内核,并进入“Inputcoresupport--->”菜单选项,然后将Inputcoresupport、Keyboardsupport、Mousesupport和Eventinterfacesupport配置为模块,如图1.1所示。配置USB键盘鼠模块 返回主菜单(MainMenu),再进入“USBsupport--->”菜单选项,然后将SupportforUSB、USBHIDBPKeyboard(basic)support和USBHIDBPMouse(basic)support设置为模块,如图1.2所示。编译连接模块 退出并保存配置,使用makedep命令建立文件依联关系,然后使用makemodules命令编译链接模块。编译链接完成后,在/zylinux/kernel/drivers/input/文件夹中生成input.o、evdev.o、keybdev.o和mousedev.o模块,在/zylinux/kernel/drivers/usb/文件夹中生成usbkbd.o和usbmouse.o模块。模块安装 执行以下命令安装输入模块: #insmodinput.o #insmodevdev.o #insmodkeybdev.o #insmodmousedev.o 执行以下命令安装输入设备驱动模块: #insmodusbcore.o #insmodusb-ohci-s3c2410.ko #insmodusbkbd.o #insmodusbmouse.o 由于使用的设备是USB接口的键盘和鼠标,所以在加载键盘鼠标驱动模块前,需要加载USB内核驱动和主机控