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