嵌入式系統中USB控制的Host/Slave模式的應用

發(fā)布時(shí)間:2010-7-23 16:24    發(fā)布者:lavida
關(guān)鍵詞: Host , Slave , USB
閔華松  錢(qián)麗  

引言  

目前,USB 設備產(chǎn)品的應用非常廣泛,但市場(chǎng)上能夠提供Host/Slave兩種模式的USB控制芯片并不多,本系統采用CYPRESS公司的SL811HST芯片作為USB接口的控制芯片,實(shí)現Host/Slave兩種工作模式。  
  
系統介紹  

本系統是以三星公司的S3C44B0X為嵌入式處理器,mClinux為操作系統的專(zhuān)用PDA,通過(guò)無(wú)線(xiàn)方式實(shí)現與上位機的通信,同時(shí)也可通過(guò)USB接口直接控制USB打印機輸出。其中USB控制芯片采用CYPRESS公司的SL811HST芯片,它有兩種工作模式Host/Slave。模式的改變是由該芯片M/S腳的電平值決定,其值可以通過(guò)軟件設置來(lái)改變。當置M/S腳為低電平時(shí),它是Host模式,可以直接控制打印機;當置M/S腳為高電平時(shí),它是Slave模式,可以下載PC的最新資料,同時(shí)可對PDA充電電池充電。  
  
硬件設計  

三星公司的S3C44B0X是一款專(zhuān)為手持設備和通用設備而設計的,16/32位RISC 結構的嵌入式處理器。
  
CYPRESS公司的SL811HST是嵌入式的USB 主機或外設接口控制器。其基本功能如下:  

1) 支持USB 1.1 的全速和低速設備;  
2) 虛擬的外部總線(xiàn),使得僅需占用和外接CPU 的1 根地址線(xiàn)A0,數據線(xiàn)為8位;  
3) 16 個(gè)內部寄存器,可以對USB Host 進(jìn)行充分的控制;內部多達256 字節的RAM,為USB 傳輸建立了足夠的緩沖區;  
4) 操作電壓為3.3V,但是I/O 端口為5V Tolerant,因此可以自由地和5V 或3.3V 的CPU 系統連接;  
5) 可接12MHz 或48MHz外置晶振,對其操作通過(guò)16個(gè)寄存器來(lái)完成。  
  
GPE5是Host/Slave模式控制管腳,它同時(shí)同步控制USB接口的負載方式。GPE4口可以監視USB接口上是否有主USB設備插入,如果有,VUSB為高電平;沒(méi)有則為低電平。GPE3口用于顯示USB設備是否處于就緒或相應的Host/Slave模式工作狀態(tài)  

軟件設計  

Linux操作系統中,驅動(dòng)程序的加載方式為:  

1) 將驅動(dòng)程序作為可加載的模塊(Module),在系統超級用戶(hù)(Root)權限下使用insmod命令動(dòng)態(tài)加載,使之成為系統核心的一部分。對于USB 設備而言,由于可熱插拔,一般采用模塊化的設備驅動(dòng)程序。  

2) 將設備驅動(dòng)程序的源代碼加進(jìn)系統內核,編譯移植到嵌入式系統,系統啟動(dòng)后將自動(dòng)加載驅動(dòng)。USB 協(xié)議棧程序一般采用這種方法加入內核,進(jìn)而產(chǎn)生一個(gè)叫做“USB 核心”的子系統。這個(gè)子系統提供了許多數據結構、宏定義、功能函數和應用程序接口(API)來(lái)對硬件或設備進(jìn)行支持。  

本系統就是采用第二種方式加載USB驅動(dòng)的。由于本系統的mClinux包來(lái)自于英蓓特公司的包,因此節省了很多工作,具體編譯過(guò)程如下:
  
1) 在mClinux內核的USB驅動(dòng)目錄中添加如下三個(gè)文件:sl811h-usb.c 、sl811h.h、 sl811husb.h。這兩個(gè)頭文件中主要定義了一些關(guān)于811HS/T寄存器的宏。  

2) 編輯/uclinux-s3cev40/linux-2.4.x/drivers/usb/config.in文件。

首先在config.in文件開(kāi)頭添加如下語(yǔ)句:  

dep_tristate 'Support for USB' CONFIG_USB $CONFIG_PCI  
if [ "$CONFIG_USB" = "y" -o? "$CONFIG_USB" = "m" ]; then  
?? bool '? USB verbose debug messages' CONFIG_USB_DEBUG  
comment 'Miscellaneous USB options'  
?? bool '? Preliminary USB device filesystem' CONFIG_ USB_DEVICEFS  
?? if [ "$CONFIG_ EXPERIMENTAL" = "y" ]; then  
????? bool '? Enforce USB bandwidth allocation (EXPERIMENTAL)' CONFIG_USB_BANDWIDTH  
?? else  
??? define_bool CONFIG_USB_ BANDWIDTH n  
?? fi  
?? bool '? Long timeout for slow-responding devices (some MGE Ellipse UPSes)' CONFIG_USB_ LONG_TIMEOUT  
fi  

然后在makefile文件中添加  

ifeq ($(CONFIG_USB_ DEBUG),y)  
?????? L_OBJS+=sl811h-usb.o  
endif  

最后在/uclinux-s3cev40/linux-2.4.x/drivers/usb/sl811h_usb.c文件中添加如下代碼:
  
#ifdef CONFIG_USB_DEBUG  
?????? #define DEBUG  
#else  
?????? #undef DEBUG  
#endif  
#SL811HS/T----- USB Host Controller driver  
INCLUDEDIR = /usr/src/linux/include  
CFLAGS = -D__KERNEL__ -DMODULE -O -Wall -  
static -I$(INCLUDEDIR)  
VER = $(shell awk -F\" '/REL/ {print $$2}'  
$(INCLUDEDIR)/linux/version.h)  
all:sl811h-usb.o  
sl811h-usb.o:sl811h-usb.csl811h-usb.hsl811h.h  
gcc sl811h-usb.c -c $(CFLAGS)  
# End this file  

3) 在/usr/local/src/uClinux-s3cev40/fs/dev中增加一個(gè)設備文件。因為USB設備主要都是通過(guò)快速串行通訊來(lái)讀寫(xiě)數據, 故一般作為字符設備。在/usr/local/src/uClinux-s3cev40/fs/devfs 下執行:
  
mknod usb0 c 127 0  
mknod usb1 c 127 1  

4) 執行make xconfig,用戶(hù)內核設置選擇y。  

5) 執行make dep。  

6) 執行make。USB設備驅動(dòng)程序被編譯進(jìn)mClinux內核,包含在image.bin文件中。

在嵌入式系統啟動(dòng)時(shí),USB設備驅動(dòng)就自動(dòng)執行了。  
  
結語(yǔ)  

本設計以mClinux嵌入式操作系統為平臺,充分發(fā)揮了SL811HST芯片的Host/Slave兩種模式的作用,使其在實(shí)際使用中非常方便。隨著(zhù)嵌入式USB設備Host/Slave模式的研發(fā),USB設備的使用會(huì )更加普及。  

信息來(lái)源:武漢科技大學(xué)計算機科學(xué)與技術(shù)學(xué)院
本文地址:http://selenalain.com/thread-16395-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页