• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 基于μC/OS-Ⅱ的嵌入式USB控制軟件的實現

    基于μC/OS-Ⅱ的嵌入式USB控制軟件的實現

    作者: 時間:2011-08-16 來源:網絡 收藏

    Host檢測到有Device插入后,進行總線復位。然后Host使用默認地址0讀取設備描述符。獲取設備描述符的設備請求命令結構體為:
    g.jpg
    h.jpg
    第1次讀取設備描述符時,Host首先發送setup包;之后進入主機讀取數據階段,Host發送in包,Device返回一個18 B的設備描述符,可以用一個結構體將其讀回。最后Host發送0 B的數據包作為狀態相應,設備返回ACK作為應答。用邏輯分析儀抓包,3個包如圖3所示。

    本文引用地址:http://www.czjhyjcfj.com/article/150349.htm

    m.jpg


    第1次讀取設備描述符后,Host依次進行地址分配、第2次讀取設備描述符、讀取配置描述符、讀取描述符集、設置配置、讀取配置狀態和讀取接口狀態,方法和第1次讀取設備描述符的方法一樣。
    i.jpg
    3.2 U盤兼容性
    在設備枚舉階段將會碰到很多關于U盤兼容性的問題。
    (1)總線復位時間。不同型號的U盤對于總線復位時間的要求是不同的,比如金士頓1 GB的U盤需要的復位時間至少280 ms。在中為保險起見,給予400 ms的復位時間。
    (2)有些U盤的端點0是8 B payload的,大多數是64 B。對于8 B payload的U盤,要嚴格從第1次獲取設備描述符時返回的第8字節獲取payload,否則盡管枚舉過程仍然能通過,但是后面在分析32字節的配置描述符時候會出現問題,沒有收到完整的配置描述符是分析不出端點1和端點2的地址以及端點payload的。
    (3)在枚舉階段獲取字符串描述符的時候,要進行判斷。因為有些U盤不支持返回字符串描述符,用if語句判斷,如果獲取不到字符串描述符就跳過,不要返回失敗。

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


    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 盐源县| 东兰县| 阳春市| 绥滨县| 左权县| 横山县| 长岛县| 织金县| 桑日县| 亳州市| 内乡县| 敦化市| 根河市| 杨浦区| 磴口县| 冕宁县| 句容市| 报价| 聂荣县| 龙井市| 马龙县| 娄烦县| 鲁甸县| 东光县| 郎溪县| 泰兴市| 金乡县| 东城区| 虎林市| 柳河县| 青龙| 宾川县| 靖边县| 宜章县| 静安区| 元谋县| 宁晋县| 洛宁县| 安乡县| 噶尔县| 双江|