隨著USB接口性能的不斷增強,USB接口被廣泛應用到各種硬件設備上。如今在Linux操作系統中,針對USB設備的驅動編程工作越來越受到重視。本課題在以S3C2410處理器為基礎的硬件平臺上,對Linux操作系統環境下USB設備驅動工作原理進行了研究。在理解USB協議的基礎上完成了S3C2410處理器內置USB設備控制器固件和驅動程序的編寫調試等方面的工作。 固件程序工作在硬件設備上,通過它控制設備的正常工作,負責與主機端的通信會話。由于本課題中的USB設備控制器是3C2410處理器的片內外設,因此固件程序要管理整個S3C2410處理器的工作。在處理器開機工作時,固件程序首先完成包括USB設備控制器在內的整個處理器的初始化,然后與主機共同進行USB設備的枚舉,最后進入循環等待主機端發起通信。當主機發起通信時,處理器產生USB中斷,固件程序調用中斷處理函數。 在Linux操作系統中,內核通過調用驅動中提供的標準接口將應用程序中對設備的操作映射到具體的硬件設備。驅動程序中包括向驅動注冊,驅動支持設備列表信息以及各種系統調用具體實現等方面。USB接口所支持的四種傳輸方式,根據S3C2410內置USB設備控制器的功能屬性,在驅動中采用了塊傳輸的傳輸方式,通過URB的方式實現對設備的讀寫操作。 最后設計一個簡單文件傳輸系統對固件和驅動程序進行了測試。測試系統中主機端通過USB接口傳輸一個wav格式的音頻文件,設備端接收到數據保存在內存中。
標簽:
Linux
ARM
USB
驅動實現
上傳時間:
2013-04-24
上傳用戶:liuchee