新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于ARM的遠(yuǎn)距離便攜式無線傳輸系統(tǒng)

基于ARM的遠(yuǎn)距離便攜式無線傳輸系統(tǒng)

作者: 時(shí)間:2011-08-19 來源:網(wǎng)絡(luò) 收藏

2 USB及Linux USB驅(qū)動(dòng)
2.1 USB的基本原理
USB是一種快速、雙向的串行接口,它采用總線拓?fù)浣Y(jié)構(gòu),其主控制器通過USB集線器可擴(kuò)展主機(jī)的sub端口。USB具有4種傳輸方式:控制傳輸、中斷傳輸、批量傳輸、等時(shí)傳輸。其數(shù)據(jù)的通信是雙向的,數(shù)據(jù)從主機(jī)傳向USB設(shè)備稱下行通信,數(shù)據(jù)從USB設(shè)備傳向主機(jī)稱上行通信。控制權(quán)是在host方,不支持設(shè)備間的直接通信。
USB設(shè)備是由接口和端點(diǎn)構(gòu)成的,端點(diǎn)是USB通信最基本的形式,它只能往一個(gè)方向傳送數(shù)據(jù)。接口是用來綁定到設(shè)備上的,一個(gè)接口只處理一種USB邏輯連接。一個(gè)USB設(shè)備可以有多個(gè)接口,不同的接口可以代表不同的功能。USB驅(qū)動(dòng)程序是綁定到接口上的。此外,一個(gè)USB設(shè)備通常又有多個(gè)配置的,而且可以在配置之間切換以改變?cè)O(shè)備的狀態(tài);但是一個(gè)時(shí)刻只能激活一個(gè)配置,一個(gè)配置通常具有一個(gè)或者更多的接口,如圖3所示。

本文引用地址:http://butianyuan.cn/article/150321.htm

b.jpg


2.2 Linux的USB驅(qū)動(dòng)
由于數(shù)據(jù)記錄的USB接口采用FTDI公司開發(fā)的FT245 USB芯片,能單芯片實(shí)現(xiàn)并行FIFO緩存區(qū)的雙向數(shù)據(jù)傳輸,且支持VCP(虛擬串口)功能。本文以實(shí)際應(yīng)用出發(fā),針對(duì)FT245芯片介紹Linux環(huán)境下的USB驅(qū)動(dòng)程序。
在Linux的內(nèi)核源碼中有一個(gè)USB驅(qū)動(dòng)的框架程序,文件名為usb-skeleton.c,目錄在/drivers/usb下,大多數(shù)的USB驅(qū)動(dòng)都是在這個(gè)框架的基礎(chǔ)上修改的。這里針對(duì)FT245芯片修改這個(gè)USB驅(qū)動(dòng)的框架程序。
USB驅(qū)動(dòng)程序中有兩個(gè)宏:
c.jpg
這兩個(gè)宏的值是USB芯片制造商所提供的,VID是芯片制造商ID,PID是芯片的識(shí)別碼,不同廠商不同型號(hào)的USB芯片的VID和PID是不同的,F(xiàn)T245芯片的VID=0x0403,PID=0x6001。
file_operation是驅(qū)動(dòng)程序中一個(gè)很重要的類,它定義了一組常見文件I/O函數(shù),而這些函數(shù)的使用類似于普通文件的I/O操作。程序如下:
d.jpg
這里定義的函數(shù)是USB驅(qū)動(dòng)程序的入口點(diǎn),要打開USB設(shè)備時(shí),使用系統(tǒng)函數(shù)Open(),系統(tǒng)就會(huì)自動(dòng)調(diào)用驅(qū)動(dòng)中的ft245_open()函數(shù)。其他函數(shù)類似,如write()對(duì)應(yīng)ft245_write(),rcad()對(duì)應(yīng)ft245_rcad(),close()對(duì)應(yīng)ft245_release()。



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉