版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Usb開發(fā)的經驗開發(fā)的經驗前段時間接手了課題組的一個開發(fā)USB接口的項目。當時幾乎是白手起家的狀況,除了老板給我PDIUSBD12的一些英文的PDF文檔和一些源代碼之外,就幾乎沒有其他任何資料。經過幾個月的摸索,可以說已經基本上對Usb開發(fā)的框架有了比較深入的了解,而且可以初步應用到實際的設備中。其中可以說走了不少彎路?,F在想開發(fā)USB的網友越來越多,我也不妨把這幾個月以來自己開發(fā)中的經歷告訴大家,也許少走些彎路。也許我的一些想法也是很
2、不成熟的,讓內行見笑了。我個人覺得,要想搞USB的話起碼得有以下幾方面的知識:計算機硬件技術基礎,單片機原理以及Windows程序設計。當然你的設備不一定非得用Phil的PDIUSBD12接口芯片,還有很多可以供選擇的接口芯片。大俠們可以舉例,呵呵。不過既然導師給我D12芯片的資料,所以我一開始也不得不選擇它,現在看來D12芯片還是比較好用的,不過最大的缺點就是市場上太難買到了。我的這片也是老板通過朋友才搞到的,所以到現在我還一直舍不得
3、用,唉……剛開始的時候大概看了一下USB2.0的英文規(guī)范,不過實在是太痛苦了。不過現在網上到處可以下1.1的中文規(guī)范,而且不少“開發(fā)指南”的書就是1.1規(guī)范的翻譯,可以拿來看看,了解一下Usb到底是什么東西,有些什么特點。作為應用,我覺得了解一下也就可以了,至于里面那些電氣特性和Hub的規(guī)范,先不看也罷。還有其中一些細節(jié)的東西,也不用看得太仔細,有了點實踐經驗之后再回頭看看也許效果會更好。不過最好還是了解一點USB設備的“配置”,“接口
4、”,“端點”,“管道”的一些概念。因為以后的軟件方面的開發(fā)和這些概念的是密不可分的。由于我現在弄的還是比較簡單的單功能設備,一般來說都是一個配置,一個接口,多個端點或管道的設備。所以我對“配置”和“接口”的概念還不是特別理解,但我覺得對于入門來說,理解EndPoint,Pipe這兩個概念還是很有必要的。起碼你得知道Usb支持哪幾種類型的端點,管道,它們都有什么特點。而你的設備的端點又是什么類型的。照我的理解,USB其實就是一種外設與計算
5、機通訊的協(xié)議。而且現在的大部分的機器都支持USB設備,具體協(xié)議是怎么電氣化的實現,我們可以根本不用知道。不管是PC端還是外設,都可以用專用的芯片來實現USB傳輸的電氣特性和其中主要的協(xié)議。PDIUSBD12就是一種這樣的芯片,當然這種芯片提供的僅僅是接口的功能,而另外有一些系列的芯片如Intel系列的本身就是一個微處理器。相比之下,D12芯片需要用單片機(通常就是51系列)和它配合工作才能起作用,這種情況下你甚至可以把它當作8255A,
6、8279那樣的芯片,單片機和它們的通訊方式都是類似,只不過作為USB的接口芯片,D12的控制要復雜的多。當然,這時你最好得對C51語言有一定的了解,畢竟用匯編來實現8051的USB傳輸實在是不敢想象。另外,要知道你的51單片機還要做很多其他的事情的,Usb只是實現就是,這個設備是你設計的,賣主就是你。呵呵整個程序的框架就是這樣。而照我自己理解,系統(tǒng)的整個工作原理應該是這樣:當系統(tǒng)連接到PC的Usb端口上時PC的Usb控制器采用默認的地址
7、0和你這個新接入系統(tǒng)的設備進行通訊(大部分工作應該都是USB的總線驅動干的)。我想設備干的第一件事情應該是Reset吧(也可能不是)然后Pc向D12的端點0(默認的控制端點,無需進行特殊的配置)發(fā)送一些標準請求,也就是前面提到的Chap9里定義的一些標準的設備請求。比如查詢設備的狀態(tài),設備的描述符,設置設備的狀態(tài),設置設備的地址等。這些請求應該是由系統(tǒng)的總線驅動發(fā)送到D12,然后51響應D12的中斷,判斷檢測到是端點的輸入中斷,然后再根
8、據請求的一些參數來調用Chap9里定義的函數來實現這些主機的請求,比如設置地址。因為地址0是Usb設備默認的地址,所有新接入的Usb設備都通過這個地址和主機進行通訊,所以你不能占用這個地址太久,必須迅速的給你分配一個合適的地址,以后主機就通過這個地址和你進行通訊,地址0就讓出來給新的設備。這時51檢測到D12的中斷之后調用SetAddress函數為設備設置地址,地址的參數當然是從主機傳過來的了。完成初始化系統(tǒng)的配置之后,主機就可以和設備
9、提供的各個端點進行通訊了,也可以實現一些“賣主”定義的特殊的請求。比如,讓51外接一個小發(fā)光二極管,可以定義幾個自己的請求,比如點亮小燈LedOn,熄滅LedOff和閃動小燈LedFlash,這些函數實現起來應該很簡單,就可以把它們加入你的VendRequest函數集中,以后可以在驅動中進行調用。雖然簡單,但是當你看到通過你的Windows中的一個小程序可以控制設備的小燈一亮一滅閃閃發(fā)光的,是不是很有成就感啊?呵呵,雖然只是你的一小步,
10、卻是人類的一大步呀,hiahia。BTW:C51的編譯環(huán)境推薦使用KeilC51uVision6.20版的完全解密版。沒有解密的版本用起來有很多的不便。而且會有寫bug,當然這個版本據說也是有一些bug,但是至少現在覺得還是比較好用的。說了那么多,其實設備端的Firmware的設計相比于整個“工程”來說只是很小的一部分,真正的困難的地方是開發(fā)Windows端的驅動。在我自己的經歷中,研究驅動的開發(fā)這段過程幾乎占據了80%的時間,可以說現
11、在也在研究,以后還得繼續(xù)研究。有點慶幸自己大一的時候C語言學得還可以,現在的整個工程幾乎沒有那個環(huán)節(jié)和c語言沒有關系的。從設備端的Firmware開發(fā),設備驅動的開發(fā)和驅動程序的編寫,沒有一樣離得開C語言的。當然,開發(fā)驅動所用到的C語言環(huán)境有和以前所接觸到的C語言的環(huán)境有很大的不一樣,也許語法結構是一樣的。但是以前很多標準的有用的C庫函數就不能隨便亂用了。剛開始的時候,包括我和我的老板都有那樣的想法,Windows本身已經有了Usb總線
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- usb的開發(fā)之標準篇
- usb通信程序開發(fā)
- USB的開發(fā)和設計.pdf
- USB實驗系統(tǒng)的研究與開發(fā).pdf
- USB接口開發(fā)的應用研究.pdf
- USB數字攝像平臺的軟件開發(fā).pdf
- USB系統(tǒng)驅動及固件開發(fā).pdf
- USB接口開發(fā)及功能實現.pdf
- 基于USB的FPGA實驗系統(tǒng)開發(fā).pdf
- usb2.0接口系統(tǒng)的開發(fā)與研究
- USB接口驅動程序的設計與開發(fā).pdf
- usb2.0接口ip核的設計與開發(fā)
- USB系統(tǒng)結構研究及設備開發(fā).pdf
- 基于USB的數據采集系統(tǒng)的研究與開發(fā).pdf
- 基于USB接口的CAPI驅動程序開發(fā).pdf
- USB高速虛擬儀器的開發(fā)平臺研究.pdf
- USB設備固件升級系統(tǒng)的設計與開發(fā).pdf
- 成片開發(fā)的經驗總結
- 基于PDA系統(tǒng)的USB接口的研究與開發(fā).pdf
- 基于USB的光傳操縱系統(tǒng)開發(fā).pdf
評論
0/150
提交評論