基于μCLinux的USB驅動(dòng)程序實(shí)現
摘 要:μClinux是一種面向嵌入式微處理器的微型操作系統,已經(jīng)在嵌入式操作系統中占有重要地位。在此介紹FTDI公司的USB芯片FT245BL的主要性能、工作原理,并將其應用在Blackfin ADSP-BF533微處理器的嵌入式開(kāi)發(fā)平臺上,說(shuō)明在μClinux下編寫(xiě)與加載USB接口芯片FT245BL的驅動(dòng)程序方法,實(shí)現了DSP主板的 USB端口通信。
關(guān)鍵詞:μClinux;嵌入式系統;FT245BL;設備驅動(dòng)程序
0 引 言
μClinux是針對嵌入式控制領(lǐng)域的操作系統,它繼承了Linux內核的絕大部分特性,專(zhuān)為沒(méi)有內存管理單元MMU的嵌入式微處理器而設計。它內核小,效率高,源代碼開(kāi)放,包含了完整的TCP/IP網(wǎng)絡(luò )協(xié)議。ADSP-BF533是ADI公司Blackfin系列的高速數字信號處理器芯片。 Blackfin系列是ADI與Intel聯(lián)合開(kāi)發(fā)的體現高性能體系結構的首款第四代DSP產(chǎn)品,16位定點(diǎn)DSP內核,新型指令結構,支持C/C++編程,主頻達600 MHz,內核電壓1.2 V,具有動(dòng)態(tài)電源管理能力,功耗低,擴展能力強,被廣泛應用于各種信號處理。
這里使用基于Blackfin ADSP-BF533微處理器的μClinux開(kāi)發(fā)板,在對外通信時(shí)需用到USB接口。結合實(shí)際情況,選擇FTDI公司推出的USB芯片FT245BL。主要介紹USB芯片FT245BL的工作原理和電路設計,以及如何在μClinux操作系統下編寫(xiě)和添加其驅動(dòng)程序的方法。
1 FT245BL工作原理與電路設計
傳統USB芯片要求設計人員對USB的標準、Firmware編程及驅動(dòng)程序的開(kāi)發(fā)等有較深入的理解,工作量大,開(kāi)發(fā)周期長(cháng),需要經(jīng)驗豐富的設計者才能完成;而FTDI(Future Technology Devices Intl.Ltd.)公司推出的USB芯片FT245BL集成了微控制器,并且把實(shí)現USB通信協(xié)議的固件程序直接固化在芯片中,同時(shí)提供了PC端的沒(méi)備驅動(dòng)程序,用戶(hù)只需進(jìn)行必要的硬件設計和簡(jiǎn)單的軟件編程,所以大大降低了開(kāi)發(fā)難度。
1.1 功能結構
FT245BL是FTDI公司的一款并行FIFO雙向數據傳輸的USB芯片,對于微處理器它提供8位并行數據總線(xiàn)D0~D7,對于外部主機是標準串行總線(xiàn)或虛擬接口,其數據傳輸速率最高可達1 MB/s,提供USBl.1/2.O規范的全速物理接口,支持UHCI/OHCI/EHCI主控制器。
FT245BL芯片的內部系統結構框架圖如圖1所示,芯片主要由3.3 V穩壓器、USB收發(fā)器、串行接口引擎(SIE)、USB協(xié)議引擎和先進(jìn)先出(FIFO)控制器、6 MHz振蕩器、8×倍頻器、USB鎖相環(huán)、復位器、E。PROM接口等構成。其內部設置了2個(gè)FIFO數據緩沖區,一個(gè)是128 B的接收緩沖區;一個(gè)是384 B的發(fā)送緩沖區。串行接口引擎用來(lái)完成USB數據的串/并雙向轉換;USB協(xié)議引擎用于管理來(lái)自USB設備控制端口的數據流,實(shí)現USB主機控制器需要的 USB底層協(xié)議。
1.2 工作原理
DSP與FT245BL接口框圖如圖2所示。主板CPLD用AMS[0:3]和高5位地址線(xiàn)(A19~A15)進(jìn)行譯碼;FT245BL的TXE和RXF 信號在查詢(xún)地址有效時(shí),通過(guò)DSP讀取其狀態(tài),判斷是否發(fā)送數據或接收數據;TXE用于判斷發(fā)送FIFO是否滿(mǎn),0為不滿(mǎn),1為滿(mǎn),當TXE為0時(shí),外部 DSP向發(fā)送FIFO緩沖區寫(xiě)數據,直到發(fā)送數據全部寫(xiě)入;RXF用于判斷接收FIFO是否有數據,只要數據個(gè)數≥1,RXF就為低,通知DSP可以讀取數據。FT245BL的RD和WR信號在讀寫(xiě)地址有效時(shí),分別與DSP的ARE和AWE相連,DSP可以讀取接收數據和寫(xiě)入發(fā)送數據。
評論