新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于μC/OS-Ⅱ的嵌入式USB控制軟件的實(shí)現(xiàn)

        基于μC/OS-Ⅱ的嵌入式USB控制軟件的實(shí)現(xiàn)

        作者: 時間:2011-08-16 來源:網(wǎng)絡(luò) 收藏

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

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

        m.jpg


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

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


        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 西华县| 慈溪市| 靖西县| 三门峡市| 福安市| 铁岭市| 裕民县| 萍乡市| 平山县| 濉溪县| 广南县| 沙田区| 集贤县| 江口县| 普定县| 息烽县| 夹江县| 怀安县| 怀柔区| 弥渡县| 普定县| 余江县| 视频| 云阳县| 景德镇市| 抚州市| 延安市| 南阳市| 介休市| 江安县| 阿城市| 新乡县| 攀枝花市| 惠安县| 仲巴县| 海原县| 建昌县| 洛阳市| 庆云县| 深圳市| 苍梧县|