技術頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動網(wǎng) > 技術頻道 > 技術百科 > 基于ARM和µCOS-II的嵌入式USB主機設計與應用

基于ARM和µCOS-II的嵌入式USB主機設計與應用

時間:2007-12-11 09:59:00來源:caojing

導語:?通過研究和設計嵌入式USB的host(主機),闡述了其工作機制和實現(xiàn)架構,并給出了在軟硬件平臺上的具體實現(xiàn)。
摘要:通過研究和設計嵌入式USB的host(主機),闡述了其工作機制和實現(xiàn)架構,并給出了在軟硬件平臺上的具體實現(xiàn)。首先,在三星的ARM7處理器S3C44B0X上移植了實時操作系統(tǒng)(RTOS)——µC/OS-II,然后結合具體的醫(yī)療設備的實際需要,利用SL811HS芯片實現(xiàn)了USB主機功能,并在此基礎上開發(fā)了USB接口的EPSON打印機、海量存儲類設備(U盤,移動硬盤)的嵌入式驅動程序。 關鍵詞:通用串行總線(USB) SL811HS µC/OS-II 海量存儲 打印語言 1 引 言 通常情況下,打印機、海量存儲等設備是由普通PC機來驅動的,由于大量的測控、醫(yī)療等系統(tǒng)需要存儲、打印數(shù)據(jù),因此開發(fā)這類設備的嵌入式驅動是非常有實用價值的。目前,各種嵌入式設備基本上是通過軟盤存儲,并口打印的,而它們的存儲容量、數(shù)據(jù)傳輸速度已大大落后當前各類嵌入式系統(tǒng)的需求。因此,開發(fā)基于USB接口的嵌入式海量存儲設備和打印機驅動已成當務之急。 USB(Universal Serial Bus)是最近幾年逐步在PC領域廣為應用的新型串行接口技術,它通用性好、實時性強、傳輸方式多樣、成本低、易于擴展和使用,這些優(yōu)點使它受到許多硬件廠商的青睞,各種類型的USB設備產(chǎn)品大量涌入市場。USB通訊必須是主機和外設通訊,每次通訊都是由主機發(fā)起,外設只是被動地執(zhí)行主機發(fā)過來的命令。而市場上所買到和使用的USB 移動設備, 都是USB 的外設(device) , 如USB 的移動硬盤、USB接口的數(shù)碼相機、打印機等。這些設備通常只能通過PC 來進行相互的文件和數(shù)據(jù)交換,沒有了PC 機, 這些設備就無法進行數(shù)據(jù)交換。而實際上并非每個地方都擁有PC機或者適合使用PC機,因此業(yè)界和用戶需求USB主機的嵌入式化。也就是開發(fā)和設計嵌入式的USB主機。 根據(jù)具體醫(yī)療儀器(酶標儀)的實際需要,我們在三星的ARM7處理器S3C44B0X上移植了實時操作系統(tǒng)(RTOS)——µC/OS-II,并編寫了基于USB主控制器芯片SL811的底層驅動。為了能將酶標儀所檢測的數(shù)據(jù)保存到外設(如U盤、移動硬盤)中,研究了對應的文件系統(tǒng)和UFI傳輸協(xié)議,實現(xiàn)了對FAT文件系統(tǒng)的海量存儲設備的讀寫。同時,為了打印霉標儀的檢測結果,研究了EPSON打印機的ESC/P打印語言,實現(xiàn)了EPSON C63系列、C65系列、ME1打印機基于USB通訊的嵌入式打印機驅動。 2 嵌入式USB主機的硬件設計 酶標儀的硬件平臺核心為三星公司的S3C44B0X(主頻最高可達66MHz),它集成了ARM7TDMI核,LCD控制器,是一款適用于中端應用的微控制器。系統(tǒng)擴展包括:存儲器(8MB SRAM、2MB NOR Flash)、USB主從機(SL811HS)和按鍵等硬件資源。其中USB部分硬件連接如圖1所示。
SL811HS是Cypress公司推出的一款嵌入式USB Host/S1ave芯片。支持USB1.1的全速和低速設備。提供USB主機的硬件接口及總線管理的物理機制。帶有在片的SIE和USB發(fā)送器以及在片的根集線器Hub。因此, 滿足了嵌入式USB 主機系統(tǒng)所需要的功能, 即由主機接口芯片來完成總線底層物理數(shù)據(jù)包的發(fā)送、接收, 并能檢測總線狀態(tài), 發(fā)出中斷請求。所以, 選擇SL811HS 作為本系統(tǒng)的USB接口芯片是合適的。
圖2:USB驅動程序棧
如圖2所示,ARM通過Cs3片選SL811HS來確定SL811HS的基地址。D0-D7為數(shù)據(jù)和地址的復用線,并通過A0來區(qū)分,當A0為“0”的時候,D0-D7上傳輸?shù)氖瞧频刂;反之,當A0為“1”的時候,D0-D7作為數(shù)據(jù)線用。 3 嵌入式USB主機的軟件設計 3.1 嵌入式USB主機的軟件總體框架 系統(tǒng)的軟件平臺核心為µC/OS-II,它是一個源碼公開的、占先式多任務管理的實時操作系統(tǒng)內(nèi)核,其性能完全可與許多商業(yè)產(chǎn)品競爭,已在相當多的系統(tǒng)中得到成功應用,是一個經(jīng)實踐證明穩(wěn)定可靠的內(nèi)核,且其核心代碼短小精悍,簡單易學。 USB主機為USB系統(tǒng)提供的功能有:(1)檢測USB 外設的接入和移出;(2)管理主機和外設之間進行的USB 標準流量控制;(3)枚舉外設;(4)管理主機和外設之間的數(shù)據(jù)流;(5)搜集系統(tǒng)狀態(tài)和性能的統(tǒng)計信息;(6)主機與外設之間的電氣接口,包括供電。 USB協(xié)議規(guī)定了人機接口設備HID類、MassStorage 類、音頻類和打印類等一系列的設備類型, 用于支持不同的設備。根據(jù)實際需要,我們開發(fā)了USB接口的海量存儲類設備和基于ESC/P打印語言的EPSON打印機嵌入式驅動程序。具體驅動程序棧如圖2所示。該系統(tǒng)支持熱插拔,可以知道識別插上是哪種設備,并調(diào)用對應的驅動。 3.2 USB Mass Storage 類協(xié)議框架的實現(xiàn) USB Mass Storage 類是USB 協(xié)議所定義的用來磁盤管理及大容量數(shù)據(jù)傳輸?shù)摹SB定義了兩種海量存儲傳輸協(xié)議,它們分別是Buck-only Transport和Control/Bulk/Interrupt(CBI)Transport。由于目前市場上所出現(xiàn)的海量存儲設備基本上都采用前者傳輸協(xié)議,即讀寫數(shù)據(jù)都是通過塊傳輸來實現(xiàn)通訊。在命令包CBW(Command Block Wrapper)中包含了標志信息,數(shù)據(jù)長度以及UFI命令等信息。其中UFI命令含有格式化磁盤、讀磁盤、寫磁盤和讀磁盤容量等一系列磁盤管理命令。 大部分移動存儲設備都采用FAT文件系統(tǒng)來管理文件。整個文件系統(tǒng)通過Mass Storage 的UFI 命令與外設的磁盤建立聯(lián)系。FAT文件系統(tǒng)將海量存儲設備上的數(shù)據(jù)大致分成5個部分:MBR區(qū)(主引導區(qū))、DBR區(qū)(系統(tǒng)引導區(qū))、FAT區(qū)(文件分配表)、FDT區(qū)(文件目錄表)和DATA區(qū)(數(shù)據(jù)區(qū))。當有USB接口的海量存儲設備插上后,系統(tǒng)讀取MBR區(qū)和DBR區(qū)來獲得每扇區(qū)字節(jié)數(shù),每簇扇區(qū)數(shù),F(xiàn)AT表個數(shù)等文件系統(tǒng)基本信息。獲取這些基本信息后從海量存儲設備讀取一個文件的流程如圖3示。因寫文件和讀文件的流程沒有很大的差別,在此就不累述了。
圖3讀文件流程圖
3.3 基于ESC/ P打印控制語言的打印機驅動設計 EPSON公司的打印機基本上都是基于ESC/ P打印控制語言的,不同系列的打印機的控制語言沒有太大的差別。因此,我們開發(fā)的驅動程序具有比較強的通用性,針對EPSON的C63系列打印機開發(fā)的驅動完全適用C65系列和ME1打印機。 各種型號打印機的編程手冊可以到EPSON的開發(fā)網(wǎng)站上下載。編程手冊對各種控制命令作了詳細介紹,如初始化打印機(ESC @)、選擇圖形方式( ESC(C nL nH m )、設置單元大小(ESC (U nL nH m)、打印光柵圖像命令(ESC . c v h m N1 Nh d1 ⋯dk)等。 EPSON打印機提供兩種打印方式,一種是用來打印文本文件,用該方式打印英文字母、阿拉伯數(shù)字、符合的時候向打印機發(fā)對應的控制命令后,只要直接發(fā)打印內(nèi)容的ASCII碼即可。另一種方式是用來打印光柵圖形,當需要打印表格、圖片和漢字的時候時往往會用到這種方式。在此,列出幾個關鍵API函數(shù)并予已說明: print_image_init ( void ):因為打印機初始化后默認為打印文本模式,所以要打印光柵圖形必須進行相關的初始化。 print_image_command(unsigned int horiz_position,unsigned int verti_position, unsigned char rows, unsigned int columns, char color):調(diào)用該函數(shù)之前必須事先至少調(diào)用過一次print_image_init(),它的功能是向打印機發(fā)打印圖片命令。其中,第一和第二個輸入?yún)?shù)是打印圖形的橫縱坐標,第三和第四個輸入?yún)?shù)分別是打印圖形的行數(shù)和列數(shù)(特別值得注意的是,C63系列和C65系列打印機一次最多可打16行,而EPSON M1一次只能打15行),第五個輸入?yún)?shù)color是選擇打印顏色。在調(diào)用該函數(shù)后,直接向打印機發(fā)打印的數(shù)據(jù)就可以實現(xiàn)打印圖片功能了。 由于打印文本模式和打印圖形的操作基本相同,而且更簡單,在此就不作說明。 3.4 USB協(xié)議的實現(xiàn) 這是整個USB 體系軟件的根基, 它負責主機和設備之間數(shù)據(jù)傳輸。其代碼都包含在文件sl811host.c中,可供上層驅動調(diào)用的API函數(shù)主要有: EnumUsbDev():該函數(shù)主要實現(xiàn)枚舉設備的功能。當有USB設備插上時,系統(tǒng)通過調(diào)用到該函數(shù)得到設備的標準描述符(接口、配置、端點)并識別是海量存儲設備還是打印機。設置地址(SetAdress),設置配置描述符(SetDecriptor),設置配置值(SetConfiguration),設置接口(SetInterface)也在該函數(shù)里實現(xiàn)。 BuckSend():該函數(shù)主要實現(xiàn)主機上的數(shù)據(jù)通過塊傳輸方式發(fā)送到設備上; BuckReceive():塊傳輸接受函數(shù); BuckSend()和BuckReceive()兩個函數(shù)是最調(diào)度最平凡的兩個函數(shù),因為對海量存儲設備的讀寫,對打印機發(fā)送控制命令、打印數(shù)據(jù)都是通過塊傳輸通訊的,也就是通過調(diào)用這兩個函數(shù)來實現(xiàn)的。 處理器讀寫SL811HS單個寄存器或數(shù)據(jù)存儲器的函數(shù)如下: void SL811Write(char a, char d){SL811_ADDR = a; SL811_DATA = d;} char SL811Read(char a){SL811_ADDR = a; return (SL811_DATA); } 這兩個函數(shù)是ARM處理器和SL811芯片進行數(shù)據(jù)交互的基石,所有控制寄存器和數(shù)據(jù)存儲器的讀寫都可以通過以上兩個函數(shù)來實現(xiàn)。當需要連續(xù)讀寫SL811中的儲存器時可以采用以下方式來實現(xiàn),可以加快讀寫速度。 void SL811BufWrite(BYTE addr, BYTE *s, BYTE c) {SL811H_ADDR = addr; while (c——) SL811H_DATA = *s++;} 4 結 論 在基于實時內(nèi)核µC/OS-II和32位RISC架構ARM7 Core的系統(tǒng)板上,我們實現(xiàn)了嵌入式USB主機設計和開發(fā),為酶標儀這一特定醫(yī)療設備提供了讀寫海量存儲設備和打印的功能。經(jīng)測試,本系統(tǒng)讀海量存儲設備數(shù)據(jù)的速度可達750kB/s,寫數(shù)據(jù)的速度最高可達450kB/s;打印功能也完全滿足系統(tǒng)要求,性能穩(wěn)定可靠,使用方便,是一種可行、實用的方案。

標簽:

點贊

分享到:

上一篇:基于AB變頻器的造紙機電氣控...

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動網(wǎng)版權與免責聲明:凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(wǎng)(www.connectcrack.com)獨家所有。如需轉載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉載使用時須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責任。

本網(wǎng)轉載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。

網(wǎng)站簡介|會員服務|聯(lián)系方式|幫助信息|版權信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網(wǎng)-工業(yè)自動化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務平臺

網(wǎng)站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權所有
粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報中心 | 粵公網(wǎng)安備 44030402000946號