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