资 源 简 介
随着USB接口性能的不断增强,USB接口被广泛应用到各种硬件设备上。如今在Linux操作系统中,针对USB设备的驱动编程工作越来越受到重视。本课题在以S3C2410处理器为基础的硬件平台上,对Linux操作系统环境下USB设备驱动工作原理进行了研究。在理解USB协议的基础上完成了S3C2410处理器内置USB设备控制器固件和驱动程序的编写调试等方面的工作。 固件程序工作在硬件设备上,通过它控制设备的正常工作,负责与主机端的通信会话。由于本课题中的USB设备控制器是3C2410处理器的片内外设,因此固件程序要管理整个S3C2410处理器的工作。在处理器开机工作时,固件程序首先完成包括USB设备控制器在内的整个处理器的初始化,然后与主机共同进行USB设备的枚举,最后进入循环等待主机端发起通信。当主机发起通信时,处理器产生USB中断,固件程序调用中断处理函数。 在Linux操作系统中,内核通过调用驱动中提供的标准接口将应用程序中对设备的操作映射到具体的硬件设备。驱动程序中包括向驱动注册,驱动支持设备列表信息以及各种系统调用具体实现等方面。USB接口所支持的四种传输方式,根据S3C2410内置USB设备控制器的功能属性,在驱动中采用了块传输的传输方式,通过URB的方式实现对设备的读写操作。 最后设计一个简单文件传输系统对固件和驱动程序进行了测试。测试系统中主机端通过USB接口传输一个wav格式的音频文件,设备端接收到数据保存在内存中。