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