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