<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > ARM和LINUX系統下嵌入式USB主機的設計

ARM和LINUX系統下嵌入式USB主機的設計

作者: 時(shí)間:2012-02-27 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要:根據實(shí)際應用中常需要具備 功能而大多數微處理芯片沒(méi)有集成這一功能的實(shí)際情況,提出了一套基于S3C44B0X 和SL811HST 的解決方案。本7 核心板加 擴展板為硬件實(shí)現方法;在ucLinux 系統下實(shí)現 驅動(dòng)程序的編寫(xiě)和加載。該系統成本低廉,運行穩定,適合應用于手持式設備上及野外工作場(chǎng)合。

本文引用地址:http://dyxdggzs.com/article/149563.htm

1 引言

通用串行總線(xiàn)(Universal Serial Bus,即USB)是一種新型的高速串行總線(xiàn),作為一種快速、靈活的總線(xiàn)接口,已經(jīng)在電子產(chǎn)品中廣泛應用。同時(shí)人們對USB的期望也越來(lái)越高,希望USB能應用在各種計算機領(lǐng)域中。但是,由于USB通信模型是一種Host/Slave主從式結構,經(jīng)由USB總線(xiàn)進(jìn)行通信的雙方必須有一方在通信控制中擔當,而兩個(gè)USB設備之間則無(wú)法直接進(jìn)行基于USB的數據交換。這就大大限制了USB在設備中的應用。

( Advanced RISC Machine)作為一種低功耗、高性能的32位微處理器,在中高端嵌入式設備開(kāi)發(fā)中有著(zhù)廣泛的應用。有些芯片的生產(chǎn)廠(chǎng)商在以ARM為內核的微處理器中集成了USB控制器,但是,更多的ARM處理器是不帶USB主機功能的。解決這一問(wèn)題的方法就是在需要使用USB設備的嵌入式系統中外擴一片USB主機控制器芯片,使之具有與USB設備進(jìn)行數據傳輸的能力。本考慮一種USB主、從機一體化的外部擴展模塊,通過(guò)簡(jiǎn)單地改變跳線(xiàn),使得ARM核心的嵌入式設備既可作為USB主機,又可以作為USB從機。

2 總體

由于目前USB從機的硬件及軟件方面的開(kāi)發(fā)已經(jīng)比較成熟,可以直接使用現有的資源,所以本設計主要討論USB主機功能的實(shí)現,目標任務(wù)是ARM核心板能夠讀寫(xiě)外接USB設備,這里選擇最常用的U盤(pán),實(shí)現讀、寫(xiě)U盤(pán)數據。

系統分為ARM核心板和SL811HST擴展板兩大部分。核心板是一個(gè)由ARM7微處理器、FLASH、SDRAM 、JTAG口和串口組成的最小系統。ARM處理器選用的是三星公司的S3C44B0X,這是一款基于A(yíng)RM7TDMI內核的微處理器,具有低功耗、高性能的特點(diǎn)。Flash用來(lái)存放ucLinux操作系統和一些十分重要的數據,SDRAM則是操作系統和應用程序的運行空間、數據及堆棧區,JTAG口和串口用于下載和調試。擴展板主要由USB主控芯片及其外圍電路和USB主、從接口構成。USB主控制芯片選用的是Cypress公司的SL811HST,這是一款雙功能的控制芯片,通過(guò)設置開(kāi)關(guān)既可以用來(lái)做主機又可以做從機。USB接口分為主機接口和從機接口,與主控芯片功能配套。

3 硬件電路

Flash存儲器是一種可在系統進(jìn)行電擦寫(xiě),掉電后信息不丟失的存儲器。常用的Flash為8位或16位的數據寬度,編程電壓為單3.3V。系統中選用一片16位的Flash存儲器SST39VF1601,單片存儲容量2M,用于存放操作系統和程序代碼,系統上電或復位后從此獲得第一條指令并開(kāi)始執行,因此,應將Flash存儲器配置到BANK0,即將S3C44B0X的nGCS0>接到其片選引腳CE#端;將S3C44B0X的OM[1:0]置為10,選擇BANK0為16位工作方式。與Flash存儲器不同,SDRAM不具有掉電保持數據的特性,但其存取速度大大高于Flash存儲器,因此,它在系統中主要用作程序的運行空間、數據及堆棧區,系統及用戶(hù)堆棧、運行數據也都存放在其中。系統中選用一片HY57V641620HG,它的存儲容量為8M,工作電壓為3.3V,16位數據寬度。1620的CS與S3C44B0X的nGCS6連接。

JTAG接口主要是用來(lái)實(shí)現芯片的嵌入式調試及在系統編程的功能,如對Flash器件進(jìn)行編程等。串口的主要作用是向計算機傳輸信息,這些信息可以在計算機的超級終端上顯示,以便于調試程序時(shí)監測程序的內部變量值;在ucLinux操作系統運行時(shí),串口將用來(lái)顯示它的啟動(dòng)信息和運行狀態(tài),向操作系統發(fā)送命令對其進(jìn)行控制也需要通過(guò)串口來(lái)完成。ARM核心板的硬件組成如圖1所示:

圖1 ARM 核心板的構成

Cypress公司的SL811HST芯片是一款嵌入式的USB主機/從機控制器,它的雙功能端口既可作為USB主機又可作為從機來(lái)支持全速或低速的USB器件,能夠與單片機、DSP和ARM等實(shí)現無(wú)縫接口。數據線(xiàn)為8位,只需要9根線(xiàn)用于系統的數據通訊,16個(gè)內部寄存器,可以對USBHost進(jìn)行充分的控制。內部多達256字節的RAM,為USB傳輸建立了足夠的緩沖區。它的主要優(yōu)點(diǎn)有:通過(guò)其M/S引腳對主/從模式方便的進(jìn)行選擇;提供全速和低速2種USB總線(xiàn)速度方式;硬件自動(dòng)產(chǎn)生幀起始包SOF和CRC5/16校驗;片上集成了接口引擎(SIE)、單端口根Hub、USB收發(fā)器和256B的SRAM,其中0x00~0x0F共16個(gè)字節是寄存器區,其余的240B是數據緩沖區。

SL811HS只有一根地址線(xiàn)A0。A0=1用于設定偏移量,A0=0用于讀寫(xiě)數據。讀寫(xiě)數據應該首先指定偏移量,然后實(shí)現讀取時(shí)序。A0與ARM的ADDR0相連。nCS和ARM的nGCS2相連,即把SL811HST分配到ARM的外部I/O口02。SL811HST與S3C44B0X的連接如圖2所示:

圖 2 SL811HST 與S3C44B0X 連接圖

4 軟件系統

本設計的軟件系統是在Linux環(huán)境下編寫(xiě)調試運行的,前期工作為下載ucLinux內核包,打補丁包等。ucLinux是專(zhuān)門(mén)針對如ARM7這類(lèi)無(wú)MMU的CPU而設計的,它主要由以下幾個(gè)部分構成:BootLoader、內核初始化、系統調用函數/捕獲函數、設備驅動(dòng)和文件系統。其中BootLoader被用來(lái)初始化系統板上的硬件資源,必須根據系統板上不同的硬件資源進(jìn)行相應的配置。本系統中主要是更改了FLASH和SDRAM的容量及數據寬度,開(kāi)啟了外部I/O口2并設定為8位數據寬度以用來(lái)配置SL811HST,并把它的基地址設定為0x012000000完成對源代碼的修改之后就可以進(jìn)行內核的編譯。編譯是在裝有Linux及所需的交叉編譯工具鏈的計算機上來(lái)進(jìn)行的,編譯生成的image.ram文件可以下載到SDRAM中直接運行,image.rom文件可以燒寫(xiě)到FLASH中,系統上電或重啟后,將從FLASH的0x0地址處開(kāi)始執行,對硬件資源進(jìn)行初始化后進(jìn)入ucLinux。

從Linux2.4內核以后,Linux的設備驅動(dòng)中加入了對USB的支持,ucLinux也秉承了這一特點(diǎn)。本設計采用內核編譯的方式加載USB驅動(dòng),將驅動(dòng)程序的源代碼加進(jìn)ucLinux系統內核,編譯移植到嵌入式系統,系統啟動(dòng)后將自動(dòng)加載驅動(dòng)。

編譯過(guò)程如下:

1:在ucLinux內核的USB驅動(dòng)目錄中添加如下三個(gè)文件:s181lh-usb.c、sl8llh.h、s1811husb.h。;

2:編輯/uclinux-s2cev40/linux-2.4.x/drivers/usb/config.in文件。修改這個(gè)文件的內容加入對SL811HST的描述語(yǔ)句:

USB 設備驅動(dòng)程序被編譯進(jìn)ucLinux 內核,包含在image.bin 文件中。在系統啟動(dòng)時(shí),USB 設備驅動(dòng)就自動(dòng)執行了。

5 總結

本文作者創(chuàng )新點(diǎn):巧妙利用ucLinux 內核模塊,簡(jiǎn)化開(kāi)發(fā)過(guò)程,節約成本。本設計以uclinux 嵌入式操作系統為平臺,充分發(fā)揮了SL811HST 芯片的Host/Slave 兩種模式的作用, 整套系統上電運行結果證明,本系統設計能夠順利的讀寫(xiě)U 盤(pán)數據,并且達到USB1.1的全速。此系統價(jià)格低廉,實(shí)現簡(jiǎn)單有效。為嵌入式系統添加USB 主機接口,使得USB 能應用在沒(méi)有PC 的領(lǐng)域中,真正實(shí)現USB 點(diǎn)對點(diǎn)的通訊。在需要野外大量采集記錄數據的場(chǎng)合,如勘測,氣象等領(lǐng)域,嵌入式USB 主機方便攜帶;在需要遠距離傳輸數據的場(chǎng)合,在USB 設備上增加無(wú)線(xiàn)網(wǎng)卡,數據就可以實(shí)時(shí)傳送,等等。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


關(guān)鍵詞: 主機 設計 USB 嵌入式 LINUX 系統 ARM

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>