最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

如何在嵌入式系統(tǒng)中利用SL811HS實現(xiàn)對U盤的操作

出處:維庫電子市場網(wǎng) 發(fā)布于:2023-07-17 11:49:43

    引 言
          USB(通用串行總線)用于將適用USB的外圍設備(device)連接到主機(host),實現(xiàn)二者之間數(shù)據(jù)傳輸?shù)耐獠靠偩€結構;是一種快速、靈活的總線接口。它   大的特點是易于使用,主要是用在中速和低速的外設。
          隨著USB規(guī)范的完善和成熟,USB外設的種類不斷豐富,應用領域也不斷擴大。在傳統(tǒng)的應用中,主要是PC扮演著主機的角色。根據(jù)USB的規(guī)范,可以看到在USB的拓樸結構中居于   地位的是主機,每   的數(shù)據(jù)傳輸都必須由主機發(fā)起和控制。但是隨著嵌入式產(chǎn)品應用領域的日益增長,USB外設的應用范圍也隨之擴大,為此在嵌入式系統(tǒng)中實現(xiàn)對USB外設控制也變得日益迫切。
          本文針對USB外設中的U盤,說明如何在嵌入式系統(tǒng)中利用SL811HS實現(xiàn)對其的操作。
          1 海量存儲類
          USB設備分為五個大類,即顯示器(monitors)、通信設備(communications devices)、音頻設備(audio)、人機輸入(human input)和海量存儲(mass storage)。
          通常所用的U盤、移動硬盤均屬于海量存儲類。
          海量存儲類的規(guī)范中包括四個獨立的子規(guī)范,即CBI Transprot、Bulk-Only Transport、ATA Command Block、UFI Command Specification。前兩個協(xié)議定義了數(shù)據(jù)/命令/狀態(tài)在USB總線上的傳輸方法,Bulk-Only傳輸協(xié)議僅僅使用Bulk端點傳送數(shù)據(jù)/命令/狀態(tài),CBI傳輸協(xié)議則使用Control/Bulk/Interrupt三種類型的端點進行數(shù)據(jù)/命令/狀態(tài)的傳送。后兩個協(xié)議定義了存儲介質(zhì)的操作命令,ATA協(xié)議用于硬盤,UFI協(xié)議則針對USB移動存儲。
          本設計中所使用的U盤遵循Bulk-Only傳輸協(xié)議和UFI命令規(guī)范。
          2 實現(xiàn)方法
          2.1 硬件設計
          本設計采用SL811HS芯片完成對U盤的操作。SL811HS是Cypress公司推出的具有主/從兩種工作模式的USB控制器,遵循USB1.1規(guī)范;可自動檢測總線速率,支持全速12Mbps和低速1.5Mbps設備;具有8位雙向的數(shù)據(jù)總線,易與單片機連接;片內(nèi)256字節(jié)的SRAM(其中16字節(jié)用于工作寄存器),用于數(shù)據(jù)傳輸;可自動產(chǎn)生SOF和CRC5/16,簡化軟件工作量;片內(nèi)具有根Hub;支持掛起/喚醒工作模式,減少功耗;支持自動加1功能,減少數(shù)據(jù)讀寫周期;3.3V工作電源,接口可承受5V的工作電壓,可與多種規(guī)格的單片機連接。
          單片機與SL811HS接口的原理如圖1所示。

  

          2.2 軟件設計
          通過USB主控芯片對U盤操作的主要工作是在軟件方面,它需要對眾多規(guī)范、協(xié)議透徹的理解。下面主要通過軟件的工作流程來說明設計過程。
          2.2.1 SL811HS初始化
          SL811HS共有15個配置寄存器,其中0~4、8~C是USB-A、USB-B的工作配置寄存器,5、F是控制寄存器,6是中斷使能寄存器,D為狀態(tài)寄存器,E、F為SOF計數(shù)寄存器。

          在SL811HS上電開始工作后,首先對USB總線復位(置寄存器5的位3為1,延時30ms后清零),然后使能設備檢測中斷(置寄存器6為0x61)。
          2.2.2 設備檢測
          (1)軟件協(xié)議
          在設備檢測階段,主要通過setup結構的數(shù)據(jù)包(8字節(jié)長)向USB設備的控制端點0(默認端點)發(fā)送命令。數(shù)據(jù)包結構 

(2)實現(xiàn)過程
          當U盤插入USB插座時,SL811HS產(chǎn)生中斷,通過讀取中斷狀態(tài)寄存器可判斷中斷類型。當中斷類型表示為檢測到設備插入時,就可對USB設備即U盤進行配置了。此時還需使能SL811HS的1ms SOF(配置SL811HS的寄存器E=0xE0、F=0xAE,然后置位寄存器5的位0和寄存器0的位5),以便進行數(shù)據(jù)幀的同步。
          在U盤未配置之前,其默認地址和默認控制端點均為0。利用setup數(shù)據(jù)包對U盤進行配置時,須將U盤的地址寫入SL811HS的寄存器4,將數(shù)據(jù)包的類型和U盤的控制端點寫入SL811HS的寄存器3。
          以下為對U盤配置過程的主要步驟。
          ① 設備描述符(GetDeviceDescriptor)。請求設備描述符的setup數(shù)據(jù)包為
          通過讀取設備描述符,可獲得設備的子類(通用海量存儲類)、端點0的   大包長(一般為8字節(jié))。

          ② 讀取配置描述符(GetConfigDescriptor)。
          對于請求配置描述符,可以先進行首次請求,要求數(shù)據(jù)包長為9(一個配置描述符的長度)。數(shù)據(jù)包內(nèi)容為

          接收到設備返回的數(shù)據(jù),獲得此描述符的總長,然后再發(fā)二次請求,獲得全部描述符數(shù)據(jù)。數(shù)據(jù)包內(nèi)容為

          此時返回的數(shù)據(jù)包括了設備配置、接口、端點的全部描述信息。
          此部分的內(nèi)容包括Configuration Descriptor、Interface Descriptor和所有端點的Endpoint Descriptor。在配置描述符中,可獲得設備的屬性(總線供電)以及   大功耗;在接口描述符,可獲得設備的接口數(shù)量(只有一個數(shù)據(jù)接口)、接口類型(海量存儲類)、接口子類代碼(UFI)、接口通信協(xié)議(Bulk-Only);在端點描述符,可獲得設備的In和Out端點號及此端點的   大數(shù)據(jù)包長。
          ③ 設置設備地址(SetAddress)。設置設備地址的setup數(shù)據(jù)包為

          設備地址為02或03(01一般用來表示設備為Hub)。
          到此,U盤的配置過程完成。此后的主機與USB設備之間的通信必須使用設置的地址,默認地址0不再有效,傳輸端點則為讀取的配置描述符中所定義的端點號。
          在配置過程中各類數(shù)據(jù)內(nèi)容的正確性,可借助BusHound軟件工具捕捉PC機與U盤之間的活動數(shù)據(jù),然后將自己獲得的數(shù)據(jù)包內(nèi)容與之相比較。
          2.2.3 U盤文件系統(tǒng)識別
          (1)軟件協(xié)議
          在與U盤之間進行大量數(shù)據(jù)傳輸時,需要利用描述符提供的In、Out端點進行數(shù)據(jù)傳送,并遵循Bulk-Only傳輸協(xié)議。
          根據(jù)USB的協(xié)議規(guī)范,所有的傳輸都須由主機啟動。即主機首先向設備的OUT端點發(fā)送一命令(CBW數(shù)據(jù)包),請求傳輸,格式如表3所列。
         
          在數(shù)據(jù)包中規(guī)定了下一步的數(shù)據(jù)傳輸方向。若為設備到主機,則當CBW發(fā)送成功后,從設備的In端點讀取CBW中規(guī)定長度的數(shù)據(jù);若為主機到設備,則當CBW發(fā)送成功后,向設備的Out端點發(fā)送CBW中規(guī)定長度的數(shù)據(jù)。
          當主機與設備之間的數(shù)據(jù)傳送完畢后,主機還需從設備的In端點讀取傳送狀態(tài),主機根據(jù)接收的CSW數(shù)據(jù)包即可判斷出通信是否正常。若返回的結果有錯誤,還須進行相應的出錯處理。CSW數(shù)據(jù)包結構如表4所列。
         
          (2)實現(xiàn)過程
          CPU向U盤發(fā)送CBW數(shù)據(jù)包,其中的命令塊為UFI規(guī)范所定義的Read(10)命令。讀取0柱0道1扇區(qū)共512字節(jié)的MBR數(shù)據(jù),前446字節(jié)為主引導記錄,接著的64字節(jié)為DPT(Disk Partition Table盤分區(qū)表),   后的2字節(jié)“55 AA”為有效結束標志。
          其中的DPT部分包含4個分區(qū)的數(shù)據(jù)結構,每個結構占16字節(jié),具體定義如下:
          typedef struct{
          uchar BootFlag; //活動標志,80h為活動分區(qū),0為非活動
          //分區(qū)
          CHS StartCHS; //分區(qū)開始的柱面、磁頭、扇區(qū)
          uchar SystemID; //分區(qū)類型
          CHS EndChs; //分區(qū)結束的柱面、磁頭、扇區(qū)
          ulong RelativeSectors; //分區(qū)起始扇區(qū)數(shù)
          ulong TotalSectors; //分區(qū)總扇區(qū)數(shù)
          }PartitionTable;
          從   個分區(qū)數(shù)據(jù)結構的分區(qū)起始扇區(qū)數(shù)(relative sectors)的位置讀取512字節(jié),為DBR(系統(tǒng)引導記錄),包括一個引導程序和BPB(本分區(qū)的參數(shù)記錄表)。BPB參數(shù)塊記錄本分區(qū)的起始扇區(qū)、結束扇區(qū)、文件存儲格式、介質(zhì)描述符、根目錄項數(shù)、FAT個數(shù)、保留扇區(qū)數(shù)、分配單元的大小等重要參數(shù)。
          根據(jù)保留扇區(qū)的數(shù)目可知FAT表的位置(RelativeSectors+保留扇區(qū)數(shù))。FAT表是文件組織結構的主要組成部分,反映了磁盤上所有簇的使用情況。在給一個文件分配空間時,總先掃描FAT,找到   個可用簇,將該空間分配給文件,并將該簇的簇號填到目錄的相應段內(nèi);若文件大于一個簇,則在FAT表中此文件的首簇號位置填入下一個可用簇號,直到   后一個簇填入“FFFF”,即形成了簇號鏈。對于FAT12文件系統(tǒng),簇號用12位表示;FAT16文件系統(tǒng)的簇號用16位表示;FAT32文件系統(tǒng)的簇號用32位表示。
          根據(jù)FAT的個數(shù)以及每個FAT表占用的扇區(qū)數(shù),即可推算出文件目錄表(FDT)的位置(FAT表位置+FAT表個數(shù)*FAT表所占扇區(qū)數(shù))。FDT是文件組織結構的又一重要組成部分。目錄可看作是一種特殊的文件,數(shù)據(jù)結構為32字節(jié),包括文件名、擴展名、文件屬性、時間、日期、開始簇號、文件長度等。
          根據(jù)根目錄中的目錄項數(shù)即可計算出數(shù)據(jù)區(qū)的起始扇區(qū)位置。這一部分占用了磁盤上的大部分空間,用于存儲各類文件的數(shù)據(jù)。
          對于FAT32文件系統(tǒng)來說,它的根目錄位置不單獨列出,而是等同于文件結構,保存在數(shù)據(jù)區(qū)中。這樣就沒有了目錄項的限制,不夠用的時候增加簇鏈,分配空簇即可。
          對于以上各類數(shù)據(jù)讀取內(nèi)容的正確判斷,可將U盤插入PC機,借助WinHex工具,讀取磁盤上相應位置的數(shù)據(jù)內(nèi)容,與之相比較。
          FAT16文件格式的U盤空間分配。
     
          2.2.4 文件操作
          因為U盤的容量不是特別大,所以基本上都使用FAT16文件系統(tǒng)??梢愿鶕?jù)FAT16系統(tǒng)的磁盤特性進行各種操作。
          ① 創(chuàng)建目錄。在根目錄區(qū)或指定的子目錄區(qū)中填加新目錄的數(shù)據(jù)結構。
          ② 刪除目錄。在根目錄區(qū)或指定的子目錄區(qū)中找到所需刪除的目錄,并置相應標志。
          ③ 寫文件。當寫一新文件時,需在FAT表中查找未使用的簇,并將該簇號寫入文件對應目錄數(shù)據(jù)結構中的起始簇號位置。當此文件長度大于一簇時,還需在FAT表中對應的起始簇號位置填入下一可用簇的簇號,直到文件的   后一簇(FAT表中的相應位置填FFFF)。
          若磁盤有備份FAT,還需在備份FAT表的相應位置填入正確的內(nèi)容。
          ④ 刪文件。刪除文件時,除了將該文件對應的目錄數(shù)據(jù)結構置相應標志外,還要修改FAT表及備份FAT表。將此文件使用的簇號位置清0,表示此簇當前未被使用。
          2.2.5 Bulk傳輸流程
          使用U盤的Bulk端點進行數(shù)據(jù)傳送,Bulk傳輸分為Bulk-In和Bulk-Out。其中Bulk-In指的是主機向外圍設備請求數(shù)據(jù),由外圍設備向主機發(fā)送數(shù)據(jù)。Bulk-Out的傳輸方向與Bulk-In相反,由主機向外圍設備發(fā)送數(shù)據(jù)。
          根據(jù)UFI規(guī)范的定義,每次讀寫操作都以邏輯塊(扇區(qū))為單位。一般U盤的一個扇區(qū)為512字節(jié),而Bulk端點的   大包長為64字節(jié),即一個扇區(qū)的讀寫操作需要8個循環(huán)才能完成。
          (1)Bulk-In流程       
          在接收設備數(shù)據(jù)的循環(huán)中,因為一個扇區(qū)的操作需要8次才能完成,因此要注意每接收一個數(shù)據(jù)包,都要將SL811HS寄存器0中的數(shù)據(jù)位(位6)變換   。data1和data0交替使用。
          (2)Bulk-Out流程
          與Bulk-In流程差不多,只是在CBW數(shù)據(jù)包中,注明了下一階段的傳輸方向為主機到外圍設備。在CBW發(fā)送ACK之后,向設備的Out端點發(fā)送PID-OUT數(shù)據(jù)包,使得設備接收所要傳送的數(shù)據(jù)。在數(shù)據(jù)傳輸完畢后,仍要向設備的In端點發(fā)送PID-IN數(shù)據(jù)包,讀取設備的CSW數(shù)據(jù)包,判斷傳輸結果,并進行相應處理。
          在發(fā)送數(shù)據(jù)的循環(huán)中,同樣要注意data0和data1的交替使用問題。
          結 語
          目前開發(fā)的在嵌入式系統(tǒng)中利用USB主控芯片實現(xiàn)與U盤的操作技術,已應用在我們自主開發(fā)研制的消防產(chǎn)品中。實現(xiàn)了消防控制器與U盤之間的各類信息的傳輸,為數(shù)據(jù)分析提供了有利的手段。在越來越多的消費類市場,這一技術必將有更為廣闊的應用前景。

關鍵詞:如何在嵌入式系統(tǒng)中利用SL811HS實現(xiàn)對U盤的操作嵌入式

版權與免責聲明

凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權均屬于維庫電子市場網(wǎng),轉載請必須注明維庫電子市場網(wǎng),http://www.udpf.com.cn,違反者本網(wǎng)將追究相關法律責任。

本網(wǎng)轉載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉載時,必須保留本網(wǎng)注明的作品出處,并自負版權等法律責任。

如涉及作品內(nèi)容、版權等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關權利。

2023全國大學生嵌入式芯片與系統(tǒng)設計競賽,海思賽道,工程機械遠程管理與安全檢測系統(tǒng)
廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機號碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務:
賣家服務:
技術客服:

0571-85317607

網(wǎng)站技術支持

13606545031

客服在線時間周一至周五
9:00-17:30

關注官方微信號,
第一時間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫提出的寶貴意見,您的參與是維庫提升服務的動力!意見一經(jīng)采納,將有感恩紅包奉上哦!