一種usb嵌入式設備判斷主機操作系統的方法
【專利摘要】USB嵌入式設備判斷主機操作系統的方法,步驟如下,1)將USB設備當做是標準的USB大容量存儲設備CDROM來枚舉,也就是在枚舉過程中設備上報給主機的信息為大容量CDROM設備;2)USB設備插入主機,USB設備收到主機枚舉的第一個SETUP包時,判斷第七個字節是否是0x08:若是,則主機操作系統為蘋果系統;若不是繼續后續步驟3);3)USB設備在收到主機對設備進行配置的SETUP包時,判斷主機是否已經請求過制造商字符串描述符;若是,則為Linux系統;不是則為Windows系統。
【專利說明】—種USB嵌入式設備判斷主機操作系統的方法
【技術領域】
[0001]本發明涉及信息領域計算機主機技術,嵌入式USB設備技術。
【背景技術】
[0002]USB (Universal Serial BUS)技術是用于規范電腦與外部設備的連接和通訊技術,其即插即用和熱插拔的特性受到眾多產品廠家的青睞。各種各樣的電子設備大多都提供了 USB接口用于與計算機主機通訊,用以完成設備的相關產品功能。計算機操作系統多種多樣,傳統的微型計算機主要有Windows系統,Linux系統以及蘋果系統。近來流行的掌上型平板電腦主要使用的是蘋果系統和Android系統。USB嵌入式設備的主機可以是微型計算機也可以是平板電腦。主機以及操作系統的多樣性,有時要求設備需要判斷出主機安裝的是何種操作系統,以便設備產生不同的行為功能。比如在支持自動安裝驅動和應用的3G無線上網卡上,要求在不同操作系統的微型計算機上安裝不同的驅動和應用程序,在支持Android系統的平板電腦上要能直接進入到無線Modem狀態,以便平板上的無線上網功能使用。
[0003]CN201010213961.2公開了一種USB設備識別主機操作系統的方法,包括:A、USB設備上電并初始化;B、判斷第一個setup包是否是第一預設命令,是執行C,不是執行D;C、判斷第一預設命令中的第七個字節是否是第二預設值,是將操作系統標識置為第一預設標識執行F,否則執行E ;D、判斷第一個setup包是否是第二預設命令,是將操作系統標識置為第二預設標識,執行F否則執行E;E、按照默認操作系統標識與主機進行信息交互,直到接收到最后一個setup包,并判斷最后一個setup包是否是第三預設命令,是則將操作系統標識置為第三預設標識,不是,則將操作系統標識置為第四預設標識;F、根據當前操作系統標識與主機進行信息交互,之后并等待接收主機下發的指令。以上文件未涉及主機不同操作系統對USB設備的枚舉行為來判斷主機的操作系統的方法和細節,實際應用時的契合需要進一步研究。如未能及時完成USB嵌入式設備的主機以及操作系統的多樣性,要求設備需要判斷出主機安裝的是何種操作系統,以便USB設備產生不同的功能。
【發明內容】
[0004]本發明目的是,提供一種USB設備判斷主機操作系統的策略和方法,通過主機不同操作系統對USB設備的枚舉行為來判斷主機的操作系統。
[0005]本發明的技術方案是:USB嵌入式設備判斷主機操作系統的方法,步驟如下,I)將USB設備當做是標準的USB大容量存儲設備CDROM來枚舉;2) USB設備插入主機,USB設備收到主機枚舉的第一個SETUP包時,判斷第七個字節是否是0x08:若是,則主機操作系統為蘋果系統;若不是繼續后續步驟3);3) USB設備在收到主機對設備進行配置的SETUP包時,判斷主機是否已經請求過制造商字符串描述符。若是,則為Linux系統;不是則為Windows系統。
[0006]通過以上的實現思想,不難看出,其有以下關鍵幾點:[0007]1、在主機對USB設備枚舉的時候,USB設備要將自己上報為⑶ROM設備。
[0008]2、USB設備根據主機的第一條SETUP枚舉指令來判斷是否是蘋果系統。
[0009]3、Windows操作系統與Linux操作系統對USB⑶ROM設備的枚舉的差異性體現在主機請求制造商字符串描述符的先后。在SETUP C0NFIGARAT10N之前則為Linux系統。
[0010]本發明的有益效果是:微型計算機主要有Windows系統,Linux系統以及蘋果系統。近來流行的掌上型平板電腦主要使用的是蘋果系統和Android系統。USB嵌入式設備的主機可以是微型計算機也可以是平板電腦。基于主機以及操作系統的多樣性,本發明要求USB設備立即判斷出主機安裝的是何種操作系統,以便設備產生不同的行為功能。如高效響應并支持自動安裝驅動和應用的3G無線上網卡上。及時判斷在不同操作系統的微型計算機上安裝不同的驅動和應用程序,如及時支持Android系統的平板電腦上要能直接進入到無線Modem狀態,使平板上的無線上網功能使用。
【專利附圖】
【附圖說明】
[0011]圖1為USB設備判斷主機操作系統使用本發明方法的流程示意圖。
【具體實施方式】
[0012]下面通過一個3G USB無線上網卡的實例來說明本發明的具體實施方法。
[0013]根據USB上網卡的使用功能,要求:
[0014]I) USB上網卡(設備)插到主機上啟動時要能判斷出主機操作系統。
`[0015]2)根據不同的主機操作系統實施不同的后續功能行為。
[0016]根據本發明方法,如圖1所示,使用本發明方法的上網卡的主機操作系統的判斷流程為:
[0017]101將USB (上網卡,其它設備類同)設備插入到電腦主機USB 口,USB設備要將自己上報為⑶ROM設備,其過程包括I)設備在響應主機的獲取配置命令時,返回包含一個接口的配置描述符,該接口類型代碼是08,接口子類型代碼是06,接口協議是50。2)設備在收到INQUIRY SCSI指令時,返回的設備類型是05。
[0018]102電腦主機檢測到USB 口設備插入,發起對設備的USB枚舉過程;USB上網卡設備判斷主機發送過來的第一條SETUP指令,若第七個字節為0x08,則為蘋果系統;如下列枚舉過程數據(每條SETUP指令只截取前八個字節):
[0019]setup:80 06 00 01 00 00 08 00......1.第一條指令第7個字節是08,則主機為
蘋果系統;
[0020]setup:00 05 06 00 00 00 00 00......[0021]setup:80 06 00 01 00 00 12 00......[0022]setup:80 06 02 03 09 04 02 00......[0023]如果第7個字節不為08則轉向103;
[0024]103主機繼續對USB上網卡設備進行USB枚舉,當主機對USB進行配置時網卡設備判斷此時主機是否已經查詢過字符串描述的制造廠家信息指令,若是則為Linux系統,否則為Windows系統;如下列枚舉過程數據(每條SETUP指令只截取前八個字節):
[0025]setup:80 06 00 01 00 00 40 00......1.第一條 S E T U P指令,第 7 字節不為08
[0026]setup:00 05 01 00 00 00 00 00......[0027]setup:80 06 00 01 00 00 12 00......[0028]setup:80 06 00 02 00 00 09 00......[0029]setup:80 06 00 03 00 00 ff 00......[0030]setup:80 06 03 03 09 04 ff 00......[0031]setup:80 06 00 02 00 00 ff 00......[0032]setup:80 06 00 03 00 00 ff 00......[0033]setup:80 06 02 03 09 04 ff 00......[0034]setup:80 06 00 03 00 00 ff 00......[0035]setup:80 06 02 03 09 04 ff 00......[0036]setup:80 06 00 02 00 00 20 00......[0037]setup:80 06 00 02 00 00 20 00......[0038]setup:80 06 00 01 00 00 40 00......[0039]setup:80 06 00 01 00 00 12 00......[0040]setup:80 06 00 02 00 00 09 00......[0041]setup:80 06 00 02 00 00 20 00......[0042]setup:80 06 00 03 00 00 ff 00......[0043]setup:80 06 02 03 09 04 ff 00......[0044]setup:80 06 01 03 09 04 ff 00......2.主機獲得制造商字符串描述符
[0045]setup:80 06 03 03 09 04 ff 00......[0046]setup:00 09 01 00 00 00 00 00......3.主機對 USB 進行配置指令
[0047]在上述的枚舉過程中,第一步收到第一個SETUP指令第7字節不為08,則繼續后續的枚舉;當收到主機的配置指令時,前面2主機已查詢過制造商字符串指令,說明此主機系統為Linux系統。[0048]104當設備判斷完主機的操作系統,設備根據結果繼續后續的行為過程。
[0049]本發明所述的USB設備判斷主機操作系統的方法,并不僅僅限于說明書和【具體實施方式】中所列方式,它完全可以容易地根據USB特點進行修改,因此在不背離權利要求及等同范圍所限定的一般概念的精神和范圍的情況下,本發明并不限于特定的細節和這里示出與描述的圖示示例。
【權利要求】
1.USB嵌入式設備判斷主機操作系統的方法,其特征是步驟如下,I)將USB設備當做是標準的USB大容量存儲設備CDROM來枚舉,也就是在枚舉過程中設備上報給主機的信息為大容量⑶ROM設備;2) USB設備插入主機,USB設備收到主機枚舉的第一個SETUP包時,判斷第七個字節是否是0x08:若是,則主機操作系統為蘋果系統;若不是繼續后續步驟3) ;3)USB設備在收到主機對設備進行配置的SETUP包時,判斷主機是否已經請求過制造商字符串描述符;若是,則為Linux系統;不是則為Windows系統。
2.根據權利要求1所述的USB嵌入式設備判斷主機操作系統的方法,其特征是USB設備要將自己上報為⑶ROM設備,其過程包括I)設備在響應主機的獲取配置命令時,返回包含一個接口的配置描述符,該接口類型代碼是08,接口子類型代碼是06,接口協議是50;2)設備在收到INQUIRY SCSI指令時,返回的設備類型是05。
3.根據權利要求1所述的USB嵌入式設備判斷主機操作系統的方法,其特征是USB設備的主機操作系統的判斷流程為: 101將USB設備插入到電腦主機USB 口 ; 102電腦主機檢測到USB 口設備插入,發起對設備的USB枚舉過程;USB設備判斷主機發送過來的第一條SETUP指令,若第七個字節為0x08,則為蘋果系統;如下列枚舉過程數據(每條SETUP指令只截取前八個字節): setup:80 06 00 01 00 00 08 00……1.第一條指令第7個字節是08,則主機為蘋果系統; setup:00 05 06 00 00 00 00 00......setup:80 06 00 01 00 00 12 00......setup:80 06 02 03 09 04 02 00......如果第7個字節不為08則轉向103 ; 103主機繼續對USB設備進行USB枚舉,主機獲得USB設備制造商字符串描述符時,主機對USB進行配置指令;即當設備收到主機對U S B進行配置時判斷此時主機是否已經查詢過字符串描述的制造廠家信息指令,若是則為Linux系統,否則為Windows系統。
【文檔編號】G06F9/445GK103577231SQ201310532374
【公開日】2014年2月12日 申請日期:2013年10月31日 優先權日:2013年10月31日
【發明者】高建貞 申請人:南京熊貓電子股份有限公司, 南京熊貓通信科技有限公司