一種自動識別主機(jī)操作系統(tǒng)的方法、裝置及usb設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及嵌入式開發(fā)領(lǐng)域,涉及一種外接設(shè)備自動識別主機(jī)操作系統(tǒng)的方法、裝置及USB設(shè)備。
【背景技術(shù)】
[0002]現(xiàn)今,USB設(shè)備越來越多,其被廣泛應(yīng)用在各種操作系統(tǒng)之上。但是,不同的操作系統(tǒng)對同一個USB設(shè)備的需求可能會有所不同。因此,USB設(shè)備如何能識別出當(dāng)前接入主機(jī)的操作系統(tǒng)類型便成為一個問題。
[0003]目前已有的自動識別操作系統(tǒng)的方法主要有兩種。一種是在主機(jī)上預(yù)先安裝USB設(shè)備的過濾驅(qū)動,并且在驅(qū)動中預(yù)先實現(xiàn)和USB設(shè)備約定的識別碼,比如WINDOS系統(tǒng)下主機(jī)驅(qū)動會下發(fā)Oxal,MAC系統(tǒng)下主機(jī)驅(qū)動下發(fā)0xa2等。一種是利用微軟擴(kuò)展的MODS消息做區(qū)別,由于WINDOWS系統(tǒng)會下發(fā)該消息給支持MODS的設(shè)備,而非WINDOWS系統(tǒng)不會下發(fā)該消息給設(shè)備,從而達(dá)到識別操作系統(tǒng)的目的。
[0004]以上兩種方法,第一種需要用戶在使用USB設(shè)備前必須預(yù)先安裝過濾驅(qū)動,對用戶的使用造成不便。第二種需要在USB設(shè)備中擴(kuò)展對MODS消息的支持,同時該方案的缺陷就是無法達(dá)到對LINUX系統(tǒng)與MAC系統(tǒng)的更細(xì)粒度的區(qū)分。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明提供了一種自動識別主機(jī)操作系統(tǒng)的方法、裝置及USB設(shè)備,以解決現(xiàn)有技術(shù)中主機(jī)操作系統(tǒng)識別方法復(fù)雜及對某些主機(jī)操作系統(tǒng)無法識別的問題。
[0006]為解決上述問題,本發(fā)明提供了一種自動識別主機(jī)操作系統(tǒng)的方法,用于一外接設(shè)備,所述外接設(shè)備中保存有所述外接設(shè)備支持的各種操作系統(tǒng)各自不同的系統(tǒng)判別參數(shù)標(biāo)準(zhǔn)值,每個操作系統(tǒng)對應(yīng)于一消息序列,所述消息序列由所述操作系統(tǒng)在所述外接設(shè)備配置完成前應(yīng)該發(fā)送的消息組成,每個操作系統(tǒng)對應(yīng)的所述系統(tǒng)判別參數(shù)標(biāo)準(zhǔn)值根據(jù)所述操作系統(tǒng)對應(yīng)的消息序列計算得到,所述方法包括:
[0007]獲取步驟,獲取所述外接設(shè)備在配置完成前從當(dāng)前主機(jī)接收到的所有消息;
[0008]計算步驟,根據(jù)收到的所述消息,計算所述系統(tǒng)判別參數(shù)的實際值;
[0009]識別步驟,確定對應(yīng)的系統(tǒng)判別參數(shù)標(biāo)準(zhǔn)值等于所述實際值的操作系統(tǒng)為所述當(dāng)前主機(jī)的操作系統(tǒng)。
[0010]優(yōu)選地,所述消息序列中的消息為請求描述符消息,所述獲取步驟中獲取的消息為請求描述符消息。
[0011]優(yōu)選地,每個所述請求描述符消息具有各自對應(yīng)的權(quán)值,且每個操作系統(tǒng)的系統(tǒng)判別參數(shù)標(biāo)準(zhǔn)值根據(jù)所述操作系統(tǒng)對應(yīng)的消息序列中的請求描述符消息的權(quán)值計算得到,所述計算步驟具體包括:
[0012]第一計算步驟,確定接收到的每個請求描述符消息的權(quán)值;
[0013]第二計算步驟,根據(jù)接收到的每個請求描述符消息的權(quán)值計算所述系統(tǒng)判別參數(shù)的實際值。
[0014]優(yōu)選地,所述外接設(shè)備可能接收到的所有所述請求描述符消息按照任意方式排序后,第η個請求描述符消息對應(yīng)的權(quán)值為211-1,其中η大于或等于1,所述系統(tǒng)判別參數(shù)的實際值為接收到的所有請求描述符消息的權(quán)值的和。
[0015]優(yōu)選地,所述外接設(shè)備為USB3.0設(shè)備。
[0016]本發(fā)明還提供一種自動識別主機(jī)操作系統(tǒng)的裝置,用于一外接設(shè)備,所述外接設(shè)備中保存有所述外接設(shè)備支持的各種操作系統(tǒng)各自不同的系統(tǒng)判別參數(shù)標(biāo)準(zhǔn)值,每個操作系統(tǒng)對應(yīng)于一消息序列,所述消息序列由所述操作系統(tǒng)在外接設(shè)備配置完成前應(yīng)該發(fā)送的消息組成,每個操作系統(tǒng)對應(yīng)的系統(tǒng)判別參數(shù)標(biāo)準(zhǔn)值根據(jù)所述操作系統(tǒng)對應(yīng)的消息序列計算得到,所述裝置包括:
[0017]獲取模塊,獲取所述外接設(shè)備在配置完成前從當(dāng)前主機(jī)接收到的所有消息;
[0018]計算模塊,根據(jù)收到的所述消息,計算所述系統(tǒng)判別參數(shù)的實際值;
[0019]識別模塊,確定對應(yīng)的系統(tǒng)判別參數(shù)標(biāo)準(zhǔn)值等于所述實際值的操作系統(tǒng)為所述當(dāng)前主機(jī)的操作系統(tǒng)。
[0020]優(yōu)選地,所述消息序列中的消息為請求描述符消息,所述獲取步驟中獲取的消息為請求描述符消息。
[0021]優(yōu)選地,每個所述請求描述符消息具有各自對應(yīng)的權(quán)值,且每個操作系統(tǒng)的系統(tǒng)判別參數(shù)標(biāo)準(zhǔn)值根據(jù)所述操作系統(tǒng)對應(yīng)的消息序列中的請求描述符消息的權(quán)值計算得到,所述計算模塊具體包括:
[0022]第一計算模塊,確定接收到的每個請求描述符消息的權(quán)值;
[0023]第二計算模塊,根據(jù)接收到的每個請求描述符消息的權(quán)值計算所述系統(tǒng)判別參數(shù)的實際值。
[0024]優(yōu)選地,所述外接設(shè)備可能接收到的所有所述請求描述符消息按照任意方式排序后,第η個請求描述符消息對應(yīng)的權(quán)值為211-1,其中η大于或等于1,所述系統(tǒng)判別參數(shù)的實際值為接收到的所有請求描述符消息的權(quán)值的和。
[0025]優(yōu)選地,所述外接設(shè)備為USB3.0設(shè)備。
[0026]本發(fā)明還提供一種自動識別主機(jī)操作系統(tǒng)的USB設(shè)備,所述USB設(shè)備中保存有所述USB設(shè)備支持的各種操作系統(tǒng)各自不同的系統(tǒng)判別參數(shù)標(biāo)準(zhǔn)值,每個操作系統(tǒng)對應(yīng)于一消息序列,所述消息序列由所述操作系統(tǒng)在所述USB設(shè)備配置完成前應(yīng)該發(fā)送的消息組成,每個操作系統(tǒng)對應(yīng)的系統(tǒng)判別參數(shù)標(biāo)準(zhǔn)值根據(jù)所述操作系統(tǒng)對應(yīng)的消息序列計算得至IJ,所述USB設(shè)備包括:
[0027]USB協(xié)議棧模塊,獲取所述USB設(shè)備在配置完成前從當(dāng)前主機(jī)接收到的所有消息;
[0028]計算模塊,根據(jù)收到的所述消息,計算所述系統(tǒng)判別參數(shù)的實際值;
[0029]識別模塊,確定對應(yīng)的系統(tǒng)判別參數(shù)標(biāo)準(zhǔn)值等于所述實際值的操作系統(tǒng)為所述當(dāng)前主機(jī)的操作系統(tǒng);
[0030]切換模塊:根據(jù)確定的所述當(dāng)前主機(jī)的操作系統(tǒng)類型,切換所述USB設(shè)備的當(dāng)前狀態(tài),以適應(yīng)所述當(dāng)前主機(jī)的操作系統(tǒng)的需求。
[0031]本發(fā)明利用所述外接設(shè)備在配置完成前從當(dāng)前主機(jī)接收到的所有消息計算而出的結(jié)果一實際值,來判別當(dāng)前主機(jī)的操作系統(tǒng)類型,因而無需預(yù)先在主機(jī)安裝過濾驅(qū)動即可獲知當(dāng)前主機(jī)的操作系統(tǒng)類型;再者,由于不同操作系統(tǒng)下發(fā)的消息不同,從而計算得到的所述實際值也能確保不同,因而其優(yōu)于通過微軟下發(fā)的MODS消息來進(jìn)行操作系統(tǒng)的區(qū)分,可以對MAC系統(tǒng)和LINUX系統(tǒng)達(dá)到更細(xì)顆粒的區(qū)分。通過對不同操作系統(tǒng)的區(qū)分,以使所述外接設(shè)備切換到不同的設(shè)備類型,來滿足不同操作系統(tǒng)對同一設(shè)備的需求。
【附圖說明】
[0032]圖1為本發(fā)明的實施例的自動識別主機(jī)操作系統(tǒng)的方法的一流程示意圖;
[0033]圖2為本發(fā)明的實施例的自動識別主機(jī)操作系統(tǒng)的裝置的一結(jié)構(gòu)示意圖;
[0034]圖3為本發(fā)明的實施例的自動識別主機(jī)操作系統(tǒng)的USB設(shè)備的一結(jié)構(gòu)示意圖;
[0035]圖4為本發(fā)明的實施例的自動識別主機(jī)操作系統(tǒng)的方法的另一流程示意圖。
【具體實施方式】
[0036]為使本發(fā)明要解決的技術(shù)問題、技術(shù)方案和有益效果更加清楚,下面將結(jié)合附圖及具體實施例進(jìn)行詳細(xì)描述。
[0037]圖1為本發(fā)明的實施例的自動識別主機(jī)操作系統(tǒng)的方法的一流程示意圖。如圖1所示,本發(fā)明提供一種自動識別主機(jī)操作系統(tǒng)的方法,用于一外接設(shè)備,所述外接設(shè)備中保存有所述外接設(shè)備支持的各種操作系統(tǒng)各自不同的系統(tǒng)判別參數(shù)標(biāo)準(zhǔn)值,每個操作系統(tǒng)對應(yīng)于一消息序列,所述消息序列由所述操作系統(tǒng)在外接設(shè)備配置完成前應(yīng)該發(fā)送的消息組成,每個操作系統(tǒng)對應(yīng)的系統(tǒng)判別參數(shù)標(biāo)準(zhǔn)值根據(jù)所述操作系統(tǒng)對應(yīng)的消息序列計算得至1J,所述方法包括:
[0038]獲取步驟101,獲取所述外接設(shè)備在配置完成前從當(dāng)前主機(jī)接收到的所有消息;
[0039]計算步驟102,根據(jù)收到的所述消息,計算所述系統(tǒng)判別參數(shù)的實際值;
[0040]識別步驟103,確定對應(yīng)的系統(tǒng)判別參數(shù)標(biāo)準(zhǔn)值等于所述實際值的操作系統(tǒng)為所述當(dāng)前主機(jī)的操作系統(tǒng)。
[0041]采用上述實施例的自動識別主機(jī)操作系統(tǒng)的方法,由于利用所述外接設(shè)備在配置完成前從當(dāng)前主機(jī)接收到的所有消息計算而出的結(jié)果一實際值,來判別當(dāng)前主機(jī)的操作系統(tǒng)類型,因而無需預(yù)先在主機(jī)安裝過濾驅(qū)動即可獲知當(dāng)前主機(jī)的操作系統(tǒng)類型;再者,由于不同操作系統(tǒng)下發(fā)的消息不同,從而計算得到的所述實際值也能確保不同,因而其優(yōu)于通過微軟下發(fā)的MODS消息來進(jìn)行操作系統(tǒng)的區(qū)分,可以對MAC系統(tǒng)和LINUX系統(tǒng)達(dá)到更細(xì)顆粒的區(qū)分。通過對不同操作系統(tǒng)的區(qū)分,以使所述外接設(shè)備切換到不同的設(shè)備類型,來滿足不同操作系統(tǒng)對同一設(shè)備的需求。
[0042]所述主機(jī)可以是個人計算機(jī),也可以是支持USB的其它設(shè)備,例如具有操作系統(tǒng)的掌上電腦等。所述消息序列中的消息可以為所述操作系統(tǒng)在所述外接設(shè)備配置完成前發(fā)送的任何消息,例如可以為數(shù)碼攝像機(jī)通過IEEE1394接口接收到的請求消息。
[0043]作為優(yōu)選,所述消息序列中的消息為請求描述符消息,所述獲取步驟中獲取的消息為請求描述符消息。
[0044]所述請求描述符消息的特點(diǎn)在于所有操作系統(tǒng)都會對外接設(shè)備發(fā)送請求描述符消息,并且不同操作系統(tǒng)下發(fā)的所述請求描述符消息各不相同,這對于通過所述請求描述符消息來進(jìn)行操作系統(tǒng)的判別,達(dá)到更細(xì)顆粒的區(qū)分提供了便利。
[0045]本實施例的自動識別主機(jī)操作系統(tǒng)的方法,通過收到的所述消息,計算所述系統(tǒng)判別參數(shù)的實際值,這里的計算是指任意形式的數(shù)學(xué)運(yùn)算,例如可以是每個所述請求描述符消息具有各自對應(yīng)的權(quán)值,且每個操作系統(tǒng)的系統(tǒng)判別參數(shù)標(biāo)準(zhǔn)值根據(jù)所述操作系統(tǒng)對應(yīng)的消息序列中的請求描述符消息的權(quán)值計算得到,所述計算步驟具體包括:
[0046]第一計算步驟1021,確定接收到的每個請求