1. gzyueqian
      18529173453
      首頁 > 新聞中心 > > 正文

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

      更新時間: 2007-05-09 10:15:01來源: 粵嵌教育瀏覽量:1052


        摘 要:本文簡要介紹由三星ARM7內核的S3C44B0X為嵌入式處理器, mClinux為嵌入式操作系統平臺的專用PDA設備的USB控制Host/Slave模式的應用。

        關鍵詞:嵌入式系統;mClinux;USB控制; Host/Slave模式

      引言

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

      系統介紹

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

      硬件設計

        三星公司的S3C44B0X是一款專為手持設備和通用設備而設計的,16/32位RISC 結構的嵌入式處理器。

      CYPRESS公司的SL811HST是嵌入式的USB 主機或外設接口控制器。其基本功能如下:

      1) 支持USB 1.1 的全速和低速設備;

      2) 虛擬的外部總線,使得僅需占用和外接CPU 的1 根地址線A0,數據線為8位;

      3) 16 個內部寄存器,可以對USB Host 進行充分的控制;內部多達256 字節的RAM,為USB 傳輸建立了足夠的緩沖區;

      4) 操作電壓為3.3V,但是I/O 端口為5V Tolerant,因此可以自由地和5V 或3.3V 的CPU 系統連接;

      5) 可接12MHz 或48MHz外置晶振,對其操作通過16個寄存器來完成。 

        GPE5是Host/Slave模式控制管腳,它同時同步控制USB接口的負載方式。GPE4口可以監視USB接口上是否有主USB設備插入,如果有,VUSB為高電平;沒有則為低電平。GPE3口用于顯示USB設備是否處于就緒或相應的Host/Slave模式工作狀態。 

      軟件設計

        在Linux操作系統中,驅動程序的加載方式為:

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

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

        本系統就是采用第二種方式加載USB驅動的。由于本系統的mClinux包來自于英蓓特公司的包,因此節省了很多工作,具體編譯過程如下:

        1) 在mClinux內核的USB驅動目錄中添加如下三個文件:sl811h-usb.c 、sl811h.h、 sl811husb.h。這兩個頭文件中主要定義了一些關于811HS/T寄存器的宏。

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

      首先在config.in文件開頭添加如下語句:

      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中增加一個設備文件。因為USB設備主要都是通過快速串行通訊來讀寫數據, 故一般作為字符設備。在/usr/local/src/uClinux-s3cev40/fs/devfs 下執行:

      mknod usb0 c 127 0

      mknod usb1 c 127 1

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

      5) 執行make dep。

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

      在嵌入式系統啟動時,USB設備驅動就自動執行了。

      結語

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

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲人成网站观看在线播放 | 亚洲精品日韩综合观看成人91 | 色一情一区二区三区四区 | 亚洲国产日韩欧美另类卡通动漫 | 亚洲欧美成aⅴ人在线 | 一区二区三区不卡视频 |