專利名稱:一種實現(xiàn)熱拔和熱插的方法以及電子設備的制作方法
技術領域:
本申請涉及計算機領域,尤其涉及一種實現(xiàn)熱拔和熱插的方法以及電子設備。
背景技術:
I2C(Inter-1ntegrated Circuit)總線是由PHILIPS公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設備。它是同步通信的一種特殊形式,具有接口線少,控制方式簡單,器件封裝形式小,通信速率較高等優(yōu)點。每個I2C總線上面連接有主機和從機,主機和從機間通過I2C總線進行數(shù)據(jù)傳輸,并且主機和從機上面都連接有多個部件。但是,I2C總線協(xié)議規(guī)范中是不支持熱插拔的。故而,當從機和主機分開時,會造成死鎖,從而使數(shù)據(jù)傳輸無法繼續(xù)進行。所謂死鎖:是指兩個或兩個以上的進程在執(zhí)行過程中,因爭奪資源而造成的一種互相等待的現(xiàn)象,若無另外的控制指令,它們都將無法推進下去。現(xiàn)有技術中還無法解決I2C總線不支持熱插拔的技術問題,
發(fā)明內容
本發(fā)明提供一種實現(xiàn)熱插和熱拔的方法,用以解決現(xiàn)有技術中I2C總線不支持熱插拔的問題。本發(fā)明通過本申請中的實施例,提供如下技術方案:一方面,本發(fā)明通過本申請中的一個實施例,提供如下技術方案:一種實現(xiàn)熱拔的方法,應用在第一設備中,所述第一設備通過I2C總線與第二設備相連,其中,所述第一設備具有M個I2C部件基于I2C協(xié)議連接所述I2C總線上,所述第二設備具有N個I2C部件基于所述I2C協(xié)議連接到所述I2C總線上,M和N為大于O的整數(shù),所述方法包括:獲得與所述第二設備進行I2C通信的錯誤信息;基于所述錯誤信息,對所述M個I2C部件以及所述N個I2C部件進行遍歷操作;基于所述遍歷操作,獲得多個反饋信息;在確定所述多個反饋信息全部來自所述M個I2C部件時,確定所述第一設備與所述第二設備間的所述I2C總線已經(jīng)斷開。進一步的,所述對所述M個I2C部件以及所述N個I2C部件進行遍歷操作,具體為:向所述M個I2C部件以及所述N個I2C部件中的每一個部件發(fā)送一個遍歷消息。進一步的,在所述確定所述第一設備與所述第二設備間的所述I2C總線已經(jīng)斷開之后,所述方法還包括:設置所述I2C總線,以使所述第一設備能夠獲得與所述第二電子設備連接的通知消息。進一步的,所述設置所述I2C總線,具體為:
將所述I2C總線中的CLOCK線設置為GPO狀態(tài),將DATA線設置為GPI中斷模式。進一步的,所述獲得與所述第二設備進行I2C通信的錯誤信息之前,還包括:當所述第一設備讀取到來自于所述第二設備的數(shù)據(jù)包時,將數(shù)據(jù)包中包含的校驗碼與保存于所述第一設備中的預設校驗碼進行匹配;如果匹配成功,則確定所述數(shù)據(jù)包中包含的數(shù)據(jù)為正確的數(shù)據(jù);如果匹配不成功,則確定所述數(shù)據(jù)包中包含的數(shù)據(jù)為錯誤的數(shù)據(jù)。進一步的,在所述確定所述數(shù)據(jù)包中包含的數(shù)據(jù)為錯誤的數(shù)據(jù)之后,所述方法還包括:將所述數(shù)據(jù)包對應的第一計數(shù)值加I ;判斷所述第一計數(shù)值是否大于一預設閾值,如果判斷結果為是,確定所述第一設備和所述第二設備之間的數(shù)據(jù)傳輸出現(xiàn)錯誤;如果判斷結果為否,繼續(xù)讀取所述數(shù)據(jù)包。另一方面,本發(fā)明通過本申請中的另一實施例提供如下技術方案:—種實現(xiàn)熱插的方法,應用在第一設備中,所述第一設備通過I2C總線與第二設備相連,其中,所述第一設備具有M個I2C部件基于I2C協(xié)議連接所述I2C總線上,所述第二設備具有N個I2C部件基于所述I2C協(xié)議連接到所述I2C總線上,M和N為大于O的整數(shù),在所述第一設備在與所述第二設備斷開狀態(tài)時,將所述I2C總線中的將DATA線設置為GPI中斷模式,所述方法包括:獲得所述DATA線上從高電平到低電平的下降沿;基于所述下降沿,產(chǎn)生一中斷事件;處理所述中斷事件,以對所述M個I2C部件以及所述N個I2C部件進行遍歷操作;基于所述遍歷操作,獲得多個反饋信息;確定所述多個反饋信息是否有來自所述N個I2C部件的反饋消息;如果有,則確定所述所述第一設備已通過所述I2C總線與所述第二設備連接。進一步的,所述對所述M個I2C部件以及所述N個I2C部件進行遍歷操作,具體為:向所述M個I2C部件以及所述N個I2C部件中的每一個部件發(fā)送一個遍歷消息。進一步的,所述確定所述第一設備已通過所述I2C中線與所述第二設備連接之后,還包括:設置所述I2C總線,以使在滿足預設條件時,所述第一設備能通過所述I2C總線與所述第二設備通信。進一步的,所述設置所述I2C總線,具體為:將所述I2C總線中的CLOCK線由GPO狀態(tài)設置為CLOCK狀態(tài),將DATA線設置為由GPI中斷模式設置為DATA狀態(tài)。另一方面,本發(fā)明通過本申請中的另一實施例提供如下技術方案:一種電子設備,所述電子設備通過I2C總線與另一設備相連,其中,所述電子設備具有M個I2C部件基于I2C協(xié)議連接所述I2C總線上,所述另一設備具有N個I2C部件基于所述I2C協(xié)議連接到所述I2C總線上,M和N為大于O的整數(shù),所述電子設備包括:獲得單元:用于獲得與所述另一設備進行I2C通信的錯誤信息;遍歷單元:用于基于所述錯誤信息,對所述M個I2C部件以及所述N個I2C部件進行遍歷操作;反饋信息獲得單元:用于基于所述遍歷操作,獲得多個反饋信息;確定單元:用于在確定所述多個反饋信息全部來自所述M個I2C部件時,確定所述電子設備與所述另一設備間的所述I2C總線已經(jīng)斷開。進一步的,所述電子設備還包括:匹配單元:用于在獲得與所述另一設備進行I2C通信的錯誤信息之前,當所述電子設備讀取到來自于所述另一設備的數(shù)據(jù)包時,將數(shù)據(jù)包中包含的校驗碼與保存于所述電子設備中的預設校驗碼進行匹配;匹配成功單元:用于如果匹配成功,則確定所述數(shù)據(jù)包中包含的數(shù)據(jù)為正確的數(shù)據(jù);匹配失敗單元:用于如果匹配不成功,則確定所述數(shù)據(jù)包中包含的數(shù)據(jù)為錯誤的數(shù)據(jù)。進一步的,所述電子設備還包括:設置單元:用于在確定所述電子設備與所述另一設備間的所述I2C總線已經(jīng)斷開之后,設置所述I2C總線,以使在滿足預設條件時,所述第一設備能通過所述I2C總線連接至所述第二設備。進一步的,所述匹配失敗單元,還包括:第一計數(shù)器模塊:用于在所述確定所述數(shù)據(jù)包中包含的數(shù)據(jù)為錯誤的數(shù)據(jù)之后,將所述數(shù)據(jù)包對應的第一計數(shù)值加I ;判斷模塊:用于判斷所述第一計數(shù)值是否大于一預設閾值,如果判斷結果為是,確定所述電子設備和所述另一設備之間的數(shù)據(jù)傳輸出現(xiàn)錯誤;如果判斷結果為否,繼續(xù)讀取所述數(shù)據(jù)包。另一方面,本發(fā)明通過本申請中的另一實施例提供如下技術方案:一種電子設備,所述電子設備通過I2C總線與另一設備相連,其中,所述電子設備具有M個I2C部件基于I2C協(xié)議連接所述I2C總線上,所述另一設備具有N個I2C部件基于所述I2C協(xié)議連接到所述I2C總線上,M和N為大于O的整數(shù),在所述設備設備在熱斷開狀態(tài)時,將所述I2C總線中的DATA線設置為GPI中斷模式,所述電子設備包括:獲得單元:用于獲得所述DATA線上從高電平到低電平的下降沿;中斷事件單元:用于基于所述下降沿,產(chǎn)生一中斷事件;處理單元:用于處理所述中斷事件,以對所述M個I2C部件以及所述N個I2C部件進行遍歷操作;反饋信息單元:用于基于所述遍歷操作,獲得多個反饋信息;確定單元:用于確定所述多個反饋信息是否有來自所述N個I2C部件的反饋消息;以及如果有,則確定所述所述電子設備已通過所述I2C總線與所述另一設備連接。進一步的,所述電子設備還包括:設置單元:用于確定所述電子設備已通過所述I2C中線與所述另一設備連接之后,設置所述I2C總線,以使在滿足預設條件時,所述電子設備能通過所述I2C總線與所述
另一設備通信。
通過上述技術方案中的一個或多個技術方案,具有如下技術效果或優(yōu)點:提供一種解決I2C總線無法實現(xiàn)熱插拔的問題,解決兩個設備之間通過I2C總線連接無法實現(xiàn)兩個設備間熱插拔的問題。更進一步解決了因兩個設備分離導致的I2C總線死鎖的問題。由于采用了在數(shù)據(jù)傳輸發(fā)生錯誤時,才向I2C總線上連接的部件發(fā)送查詢消息的技術方案,故而達到了減少查詢次數(shù)、降低系統(tǒng)功耗的技術效果;由于采用了基于硬件設置來判斷主機和從機是否連接上的技術方案,故而達到了判斷主機和從機是否連接上時完全采用硬件控制、故而提高了處理器效率的技術效果。
圖1為本申請實施例一中實現(xiàn)熱拔方法的流程圖;圖2為本申請實施例二中實現(xiàn)熱插方法的流程圖;圖3為本申請實施例三中檢測數(shù)據(jù)傳輸正確與否的流程圖;圖4為本申請實施例四中結合具體實現(xiàn)環(huán)境實現(xiàn)熱插和熱拔的流程圖;圖5為本申請實施例五中電子設備的方框圖;圖6為本申請實施例五中電子設備細化方框圖;圖7為本申請實施例五中電子設備進一步細化的方框圖;圖8為本申請實施例五中匹配失敗單元的方框圖;圖9為本申請實施例六中電子設備的方框圖;圖10為本申請實施例六中電子設備細化的方框圖。
具體實施例方式為了使本申請所屬技術領域中的技術人員更清楚地理解本申請,下面結合附圖,通過具體實施例對本申請技術方案作詳細描述?!矫妫旧暾垖嵤├惶峁┮环N實現(xiàn)熱拔的方法,應用在第一設備中,所述第一設備通過I2C總線與第二設備相連,其中,所述第一設備具有M個I2C部件基于I2C協(xié)議連接所述I2C總線上,所述第二設備具有N個I2C部件基于所述I2C協(xié)議連接到所述I2C總線上,M和N為大于O的整數(shù),如圖1所示,所述方法包括如下步驟:SlOl:獲得與所述第二設備進行I2C通信的錯誤信息;在本申請實施例中,第一設備為主機,第二設備為從機。當?shù)谝辉O備與第二設備進行I2C通信中出現(xiàn)錯誤信息,例如,第一設備提示:無法檢測到數(shù)據(jù)傳輸通道,那么產(chǎn)生這個錯誤信息,而造成該錯誤信息的原因可能是因為第一設備和第二設備之間已經(jīng)斷開,也可能是數(shù)據(jù)傳輸出現(xiàn)錯誤,也可能是其他原因造成的錯誤。在本申請中,對于第一設備和第二設備之間的通信出現(xiàn)何種錯誤不作限制。S102:基于所述錯誤信息,對所述M個I2C部件以及所述N個I2C部件進行遍歷操作;或者,S102’基于所述錯誤信息,對所述N個I2C部件進行遍歷操作。所述S102’的實現(xiàn)需要在第一設備和第二設備連接時,第一設備獲得第二設備的I2C部件。例如,N個I2C部件。在具體實施過程中,在發(fā)現(xiàn)第一設備和第二設備之間的通訊出現(xiàn)錯誤后,為了防止第一設備和第二設備之間的通訊出現(xiàn)死鎖,就要判斷第一設備和第二設備之間是否已經(jīng)斷開。在本申請中,當?shù)谝辉O備檢測到通信的錯誤信息后,就向基于I2C總線連接的多個部件中的每一個部件發(fā)送查詢消息,當然也可以只對第二設備連接的多個I2C部件發(fā)送查詢消息。S103:基于所述遍歷操作,獲得多個反饋信息;在具體實施過程中,如果第二設備與第一設備的連接沒有斷開,那么第二設備上面的每一個部件在接收到查詢消息后,會基于這個查詢消息,向第一設備發(fā)送一個反饋消息。例如,第一設備向所有部件分別發(fā)送一個消息詢問:是否能夠收到這條消息,如果任一部件收到這條消息,將反饋消息:收到。在本申請中,對于查詢消息和反饋消息的內容不作限制。S104:在確定所述多個反饋信息全部來自所述M個I2C部件時,確定所述第一設備與所述第二設備間的所述I2C總線已經(jīng)斷開。在具體實施過程中,如果連接于第二設備的所有部件都沒有向第一設備發(fā)送反饋消息,那么就說明第二設備和第一設備的連接已經(jīng)斷開。本發(fā)明的實施例提供一種實現(xiàn)熱拔的方法,解決兩個設備之間通過I2C總線連接無法實現(xiàn)兩個設備間熱插拔的問題。更進一步解決了因兩個設備分離導致的I2C總線死鎖的問題。由于采用了在數(shù)據(jù)傳輸發(fā)生錯誤時,才向I2C總線上連接的部件發(fā)送查詢消息的技術方案,故而達到了減少查詢次數(shù)、降低系統(tǒng)功耗的技術效果。在這種情況下,為了讓第二設備能夠再次連接于第一設備,同時同時該第一設備能夠得知第二設備連接上,第一設備就要對I2C總線做一些設置。主要包括如下設置:首先,為了第二設備連接于第一設備時,第一設備能夠得知,對I2C總線作如下設置:將I2C總線中的DATA線與第一設備連接部分設置為GPI中斷模式,也就是將DATA線設置為GPI狀態(tài),由于在第一設備與第二設備斷開時,將I2C總線與第二設備連接部分設置為GPO狀態(tài),故而當?shù)诙O備再次連接于第一設備時,第一設備的GPI就會收到一個高電平到低電平的下降沿,從而觸發(fā)中斷,退出熱斷開模式,從而讓第二設備連接于第一設備時,第一設備能夠知道連接消息。然后,為了讓第一設備退出熱斷開的同時,第二設備也能退出熱斷開,還要對I2C總線作如下設置:將I2C總線中的CLOCK線與第一設備連接部分設置為GPO狀態(tài),并且設置為高電平,并且將CLOCK線與第二設備連接部分設置為GPI狀態(tài),當?shù)谝辉O備和第二設備連接上時,該GPI能夠接收低電平到低高電平的上升沿,從而觸發(fā)中斷,退出熱斷開模式,從而讓第一設備連接于第二設備時,第二設備能夠知道連接消息。另一方面,本申請實施例二中,提供一種實現(xiàn)熱插的方法,應用在第一設備中,所述第一設備通過I2C總線與第二設備相連,其中,所述第一設備具有M個I2C部件基于I2C協(xié)議連接所述I2C總線上,所述第二設備具有N個I2C部件基于所述I2C協(xié)議連接到所述I2C總線上,M和N為大于O的整數(shù),在所述第一設備在與所述第二設備斷開狀態(tài)時,將所述I2C總線中的將DATA線設置為GPI中斷模式,如圖2所示,所述方法包括如下步驟:S201:獲得所述DATA線上從高電平到低電平的下降沿;在具體實施過程中,由于在對第一設備和第二設備經(jīng)行熱拔時,已經(jīng)對第一設備的DATA線進行了設置,也就是將DATA線設置為GPI中斷模式,第一就是將DATA線設置為GPI模式,第二是將GPI模式的DATA線設置為高電平。故而當?shù)诙O備插入第一設備時,第一設備的DATA線上會有一個從高電平到低電平的下降沿。S202:基于所述下降沿,產(chǎn)生一中斷事件;在具體實施過程中,當?shù)谝辉O備的DATA線檢測到這個下降沿的時候,就會觸發(fā)第一設備去判斷是否存在第二設備插入第一設備。S203:處理所述中斷事件,以對所述M個I2C部件以及所述N個I2C部件進行遍歷操作;這里的遍歷操作和前面所描述的檢測第一設備和第二設備斷開時的遍歷操作一樣。第一設備向第一設備以及第二設備連接的多個部件發(fā)送一查詢消息,然后如果設備有通過I2C總線與第一設備連接的話,將會向第一設備發(fā)送多個反饋消息。例如:第一設備發(fā)送如下消息:如果收到此消息請回復0K,然后任一部件收到上述消息后,會反饋:0K?;谶@條反饋消息,第一設備就能夠知道該部件與第一設備存在連接關系。在本申請中,對于查詢消息和反饋消息的內容不作限制。S204:基于所述遍歷操作,獲得多個反饋信息;在具體實施過程中,這里基于遍歷操作的不同,會有不同的反饋消息,比如如果只想第二設備連接的部件發(fā)送查詢消息,那么反饋消息要么不存在,要么全都來自第二設備連接的多個部件。如果既向第一設備連接的多個部件發(fā)送查詢消息也向第二設備連接的多個部件發(fā)送了查詢消息,那么這里的反饋消息既有來自第一設備連接的部件的,也可能有來自第二設備連接的部件的。S205:確定所述多個反饋信息是否有來自所述N個I2C部件的反饋消息;S206:如果有,則確定所述所述第一設備已通過所述I2C總線與所述第二設備連接。在具體實施過程中,如果第二設備沒有與第一設備通過I2C總線相連,那么第二設備上面的部件自然是無法發(fā)送至第一設備,故而只要第二設備連接的部件有反饋消息,比如反饋:0Κ。則表明第二設備一定通過I2C總線與第一設備相連。由于在第一設備和第二設備進行熱斷開,對I2C總線作了如下設置:將I2C總線中的CLOCK線與第一設備連接部分設置為GPO狀態(tài),并且設置為高電平,并且將CLOCK線與第二設備連接部分設置為GPI狀態(tài),當?shù)谝辉O備和第二設備連接上時,該GPI其會接收到一個由低電平到高電平的上升沿,故而第二設備能夠知道熱連接信息。在具體實施過程中,確定第一設備和第二設備連接上后,為了有效進行通信,要對I2C總線進行設置,具體為:將所述I2C總線的CLOCK線中與第一設備連接部分由GPO狀態(tài)恢復為CLOCK狀態(tài),與第二設備連接部分由GPI狀態(tài)恢復為DATA狀態(tài);將所述I2C總線的CLOCK線與第二設備連接部分由GPI狀態(tài)恢復CLOCK狀態(tài),將I2C總線的DATA線中與第二設備連接部分由GPO狀態(tài)恢復為DATA狀態(tài)。另一方面,本申請實施例三中,提供一種檢測數(shù)據(jù)傳輸?shù)姆椒?,用于當?shù)谝辉O備和第二設備進行數(shù)據(jù)傳輸時,判斷傳輸?shù)臄?shù)據(jù)是否出現(xiàn)錯誤,如圖3所示,具體包括:S301:當所述第一設備讀取到來自于所述第二設備的數(shù)據(jù)包時,將數(shù)據(jù)包中包含的校驗碼與保存于所述第一設備中的預設校驗碼進行匹配;
在具體實施過程中,第一設備和第二設備以約定好的格式進行數(shù)據(jù)傳輸,比如包頭+數(shù)據(jù)+CRC驗證碼;然后第一設備在接收到第二設備傳輸?shù)臄?shù)據(jù)后,首先校驗CRC驗證碼是否正確。當然,在具體實施過程中,第一設備和第二設備之間以何種約定格式進行數(shù)據(jù)傳輸,本申請不作限制,其格式可以是包頭+數(shù)據(jù)+校驗碼,也可以是數(shù)據(jù)+校驗碼,也可以是校驗碼+包頭+數(shù)據(jù),對于采用何種驗證碼驗證數(shù)據(jù)傳輸正確與否,本申請也不做限制,可以是CRC校驗碼,也可以是其他校驗碼。S302:如果匹配成功,則確定所述數(shù)據(jù)包中包含的數(shù)據(jù)為正確的數(shù)據(jù);S303:如果匹配不成功,則確定所述數(shù)據(jù)包中包含的數(shù)據(jù)為錯誤的數(shù)據(jù)。在具體實施過程中,為了避免出現(xiàn)錯誤,當發(fā)現(xiàn)CRC驗證錯誤時,第一設備會對該數(shù)據(jù)包的CRC驗證碼重新進行驗證,如果多次驗證CRC驗證碼都不正確,比如兩次、三次,則表明傳輸?shù)臄?shù)據(jù)確實錯誤。自然,對于CRC驗證碼出現(xiàn)錯誤后,還要重復驗證幾次,要視具體情況而定,本申請不作限制。同理,當?shù)诙O備接收到第一設備發(fā)送的數(shù)據(jù)包時,也采用的同樣的方法進行驗證。當然,第一設備和第二設備只是驗證流程相同,但是不代表具體參數(shù)也相同。另一方面,本申請實施例四中,將結合一個具體的應用環(huán)境對本申請中的技術方案做詳細描述。如圖4所示,在本實施例中,第一設備也就是主機為一 ARM系統(tǒng)401,從機也就是第二設備為一 X86系統(tǒng)402 ;主機與從機通過一 I2C總線相連,通過一電源403進行供電;當主機獲得和從機進行數(shù)據(jù)傳輸出現(xiàn)錯誤時,向主機和從機連接的每一個設備發(fā)送消息,如果沒有收到與從機相連的設備反饋的消息,那么確定第一設備和第二設備之間的連接已經(jīng)斷開;而從圖上可以看出,主機401和從機402都是由電源403供電的,故而由于斷開了,從機402沒有供電,故而會檢測到一個低電平,從而確定處于斷開狀態(tài)。在確定主機和從機之間的連接斷開后,為了主機和從機再次插上時,能夠連接,那么就要對I2C總線的CLOCK線404和DATA線405進行設置,主要包括如下設置:首先,為了從機402連接于主機401時,主機能夠得知,對I2C總線作如下設置:將I2C總線中的DATA線與主機401連接部分407設置為GPI中斷模式,也就是將DATA線設置為GPI狀態(tài),由于在主機401與從機402斷開時,將I2C總線與從機402連接部分409設置為GPO狀態(tài),故而當從機402再次連接于主機401時,主機401的GPI就會收到一個高電平到低電平的下降沿,從而觸發(fā)中斷,退出熱斷開模式,從而讓從機402連接于主機401時,主機401能夠知道連接消息。然后,為了讓主機401退出熱斷開的同時,從機402也能退出熱斷開,還要對I2C總線作如下設置:將I2C總線中的CLOCK線與主機連接部分406設置為GPO狀態(tài),并且設置為高電平,并且將CLOCK線與從機連接部分408設置為GPI狀態(tài),當主機和從機連接上時,該GPI能夠接收低電平到低高電平的上升沿,從而觸發(fā)中斷,退出熱斷開模式,從而讓主機401連接于從機402時,從機402能夠知道連接消息。由于采用了基于硬件設置來判斷第一設備和第二設備是否連接上的技術方案,故而達到了判斷第一設備和第二設備是否連接上時完全采用硬件控制、故而提高了處理器效率的技術效果。另一方面,本申請實施例五中,提供一種電子設備,所述電子設備通過I2C總線與另一設備相連,其中,所述電子設備具有M個I2C部件基于I2C協(xié)議連接所述I2C總線上,所述另一設備具有N個I2C部件基于所述I2C協(xié)議連接到所述I2C總線上,M和N為大于O的整數(shù),如圖5所示,所述電子設備包括:獲得單元501:用于獲得與所述另一設備進行I2C通信的錯誤信息;遍歷單元502:用于基于所述錯誤信息,對所述M個I2C部件以及所述N個I2C部件進行遍歷操作;反饋信息獲得單元503:用于基于所述遍歷操作,獲得多個反饋信息;確定單元504:用于在確定所述多個反饋信息全部來自所述M個I2C部件時,確定所述電子設備與所述另一設備間的所述I2C總線已經(jīng)斷開。進一步的,所述電子設備,如圖6所示,還包括:匹配單元505:用于在獲得與所述另一設備進行I2C通信的錯誤信息之前,當所述電子設備讀取到來自于所述另一設備的數(shù)據(jù)包時,將數(shù)據(jù)包中包含的校驗碼與保存于所述電子設備中的預設校驗碼進行匹配;匹配成功單元506:用于如果匹配成功,則確定所述數(shù)據(jù)包中包含的數(shù)據(jù)為正確的數(shù)據(jù);匹配失敗單元507:用于如果匹配不成功,則確定所述數(shù)據(jù)包中包含的數(shù)據(jù)為錯誤的數(shù)據(jù)。進一步的,所述電子設備,如圖7所示,還包括:設置單元508:用于在確定所述電子設備與所述另一設備間的所述I2C總線已經(jīng)斷開之后,設置所述I2C總線,以使在滿足預設條件時,所述第一設備能通過所述I2C總線連接至所述第二設備。進一步的,所述匹配失敗單元,如圖8所示,還包括:第一計數(shù)器模塊801:用于在所述確定所述數(shù)據(jù)包中包含的數(shù)據(jù)為錯誤的數(shù)據(jù)之后,將所述數(shù)據(jù)包對應的第一計數(shù)值加I ;判斷模塊802:用于判斷所述第一計數(shù)值是否大于一預設閾值,如果判斷結果為是,確定所述電子設備和所述另一設備之間的數(shù)據(jù)傳輸出現(xiàn)錯誤;如果判斷結果為否,繼續(xù)讀取所述數(shù)據(jù)包。由于本申請實施五中的電子設備為與實施本申請實施例一、三、四中的方法所對應的電子設備,所以基于本申請實施例一、三、四中的方法,本領域所屬技術人員能夠了解本申請實施五中的電子設備的具體實施方法以及本申請實施五的電子設備的各種變化形式。所以在此對于該電子設備的運行不再詳細介紹,只要本領域所屬技術人員基于本申請實施例一、三、四中的方法所采用的電子設備,都屬于本申請所欲保護的范圍。另一方面,本申請實施例六中,提供一種電子設備,所述電子設備通過I2C總線與另一設備相連,其中,所述電子設備具有M個I2C部件基于I2C協(xié)議連接所述I2C總線上,所述另一設備具有N個I2C部件基于所述I2C協(xié)議連接到所述I2C總線上,M和N為大于O的整數(shù),在所述設備設備在熱斷開狀態(tài)時,將所述I2C總線中的DATA線設置為GPI中斷模式,如圖9所示,所述電子設備包括:獲得單元901:用于獲得所述DATA線上從高電平到低電平的下降沿;中斷事件單元902:用于基于所述下降沿,產(chǎn)生一中斷事件;
處理單元903:用于處理所述中斷事件,以對所述M個I2C部件以及所述N個I2C部件進行遍歷操作;反饋信息單元904:用于基于所述遍歷操作,獲得多個反饋信息;確定單元905:用于確定所述多個反饋信息是否有來自所述N個I2C部件的反饋消息;以及如果有,則確定所述所述電子設備已通過所述I2C總線與所述另一設備連接。進一步的,所述電子設備,如圖10所示,還包括:設置單元906:用于確定所述電子設備已通過所述I2C中線與所述另一設備連接之后,設置所述I2C總線,以使在滿足預設條件時,所述電子設備能通過所述I2C總線與所
述另一設備通信。由于本申請實施六中的電子設備為與實施本申請實施例二、三、四中的方法所對應的電子設備,所以基于本申請實施例二、三、四中的方法,本領域所屬技術人員能夠了解本申請實施例六中的電子設備的具體實施方法以及本申請實施六的電子設備的各種變化形式。所以在此對于該電子設備的運行不再詳細介紹,只要本領域所屬技術人員基于本申請實施例二、三、四中的方法所采用的電子設備,都屬于本申請所欲保護的范圍。上述技術方案中的一個或多個技術方案,具有如下技術效果或優(yōu)點:由于采用了在數(shù)據(jù)傳輸發(fā)生錯誤時,才向I2C總線上連接的部件發(fā)送查詢消息的技術方案,故而達到了減少查詢次數(shù)、降低系統(tǒng)功耗的技術效果;由于采用了基于硬件設置來判斷主機和從機是否連接上的技術方案,故而達到了判斷主機和從機是否連接上時完全采用硬件控制、故而提高了處理器效率的技術效果。盡管已描述了本申請的優(yōu)選實施例,但本領域內的技術人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權利要求意欲解釋為包括優(yōu)選實施例以及落入本申請范圍的所有變更和修改。顯然,本領域的技術人員可以對本申請進行各種改動和變型而不脫離本申請的精神和范圍。這樣,倘若本申請的這些修改和變型屬于本申請權利要求及其等同技術的范圍之內,則本申請也意圖包含這些改動和變型在內。
權利要求
1.一種實現(xiàn)熱拔的方法,應用在第一設備中,所述第一設備通過I2C總線與第二設備相連,其中,所述第一設備具有M個I2C部件基于I2C協(xié)議連接所述I2C總線上,所述第二設備具有N個I2C部件基于所述I2C協(xié)議連接到所述I2C總線上,M和N為大于O的整數(shù),其特征在于,所述方法包括: 獲得與所述第二設備進行I2C通信的錯誤信息; 基于所述錯誤信息,對所述M個I2C部件以及所述N個I2C部件進行遍歷操作; 基于所述遍歷操作,獲得多個反饋信息; 在確定所述多個反饋信息全部來自所述M個I2C部件時,確定所述第一設備與所述第二設備間的所述I2C總線已經(jīng)斷開。
2.如權利要求1所述的方法,其特征在于,所述對所述M個I2C部件以及所述N個I2C部件進行遍歷操作,具體為: 向所述M個I2C部件以及所述N個I2C部件中的每一個部件發(fā)送一個遍歷消息。
3.如權利要求1所述的方法,其特征在于,在所述確定所述第一設備與所述第二設備間的所述I2C總線已經(jīng)斷開之后,所述方法還包括: 設置所述I2C總線,以使所述第一設備能夠獲得與所述第二電子設備連接的通知消息。
4.如權利要求3所述的方法,其特征在于,所述設置所述I2C總線,具體為: 將所述I2C總線中的CLOCK線設置為GPO狀態(tài),將DATA線設置為GPI中斷模式。
5.如權利要求1所述的方法,其特征在于,所述獲得與所述第二設備進行I2C通信的錯誤信息之前,還包括: 當所述第一設備讀取到來自于所述第二設備的數(shù)據(jù)包時,將數(shù)據(jù)包中包含的校驗碼與保存于所述第一設備中的預設校驗碼進行匹配; 如果匹配成功,則確定所述數(shù)據(jù)包中包含的數(shù)據(jù)為正確的數(shù)據(jù); 如果匹配不成功,則確定所述數(shù)據(jù)包中包含的數(shù)據(jù)為錯誤的數(shù)據(jù)。
6.如權利要求5所述的方法,其特征在于,在所述確定所述數(shù)據(jù)包中包含的數(shù)據(jù)為錯誤的數(shù)據(jù)之后,所述方法還包括: 將所述數(shù)據(jù)包對應的第一計數(shù)值加I ; 判斷所述第一計數(shù)值是否大于一預設閾值,如果判斷結果為是,確定所述第一設備和所述第二設備之間的數(shù)據(jù)傳輸出現(xiàn)錯誤;如果判斷結果為否,繼續(xù)讀取所述數(shù)據(jù)包。
7.一種實現(xiàn)熱插的方法,應用在第一設備中,所述第一設備通過I2C總線與第二設備相連,其中,所述第一設備具有M個I2C部件基于I2C協(xié)議連接所述I2C總線上,所述第二設備具有N個I2C部件基于所述I2C協(xié)議連接到所述I2C總線上,M和N為大于O的整數(shù),在所述第一設備在與所述第二設備斷開狀態(tài)時,將所述I2C總線中的將DATA線設置為GPI中斷模式,其特征在于,所述方法包括: 獲得所述DATA線上從高電平到低電平的下降沿; 基于所述下降沿,產(chǎn)生一中斷事件; 處理所述中斷事件,以對所述M個I2C部件以及所述N個I2C部件進行遍歷操作; 基于所述遍歷操作,獲得多個反饋信息; 確定所述多個反饋信息是否有來自所述N個I2C部件的反饋消息;如果有,則確定所述所述第一設備已通過所述I2C總線與所述第二設備連接。
8.如權利要求7所述的方法,其特征在于,所述對所述M個I2C部件以及所述N個I2C部件進行遍歷操作,具體為: 向所述M個I2C部件以及所述N個I2C部件中的每一個部件發(fā)送一個遍歷消息。
9.如權利要求7所述的方法,其特征在于,所述確定所述第一設備已通過所述I2C中線與所述第二設備連接之后,還包括: 設置所述I2C總線,以使在滿足預設條件時,所述第一設備能通過所述I2C總線與所述第二設備通信。
10.如權利要求9所述的方法,其特征在于,所述設置所述I2C總線,具體為: 將所述I2C總線中的CLOCK線由GPO狀態(tài)設置為CLOCK狀態(tài),將DATA線設置為由GPI中斷模式設置為DATA狀態(tài)。
11.一種電子設備,所述電子設備通過I2C總線與另一設備相連,其中,所述電子設備具有M個I2C部件基于I2C協(xié)議連接所述I2C總線上,所述另一設備具有N個I2C部件基于所述I2C協(xié)議連接到所述I2C總線上,M和N為大于O的整數(shù),其特征在于,所述電子設備包括: 獲得單元:用于獲得與所述另一設備進行I2C通信的錯誤信息; 遍歷單元:用于基于所述錯誤信息,對所述M個I2C部件以及所述N個I2C部件進行遍歷操作; 反饋信息獲得單元:用于基于所述遍歷操作,獲得多個反饋信息; 確定單元:用于在確定所述多個反饋信息全部來自所述M個I2C部件時,確定所述電子設備與所述另一設備間的所述I2C總線已經(jīng)斷開。
12.如權利要求11所述的電子設備,其特征在于,還包括: 匹配單元:用于在獲得與所述另一設備進行I2C通信的錯誤信息之前,當所述電子設備讀取到來自于所述另一設備的數(shù)據(jù)包時,將數(shù)據(jù)包中包含的校驗碼與保存于所述電子設備中的預設校驗碼進行匹配; 匹配成功單元:用于如果匹配成功,則確定所述數(shù)據(jù)包中包含的數(shù)據(jù)為正確的數(shù)據(jù); 匹配失敗單元:用于如果匹配不成功,則確定所述數(shù)據(jù)包中包含的數(shù)據(jù)為錯誤的數(shù)據(jù)。
13.如權利要求12所述的電子設備,其特征在于,還包括: 設置單元:用于在確定所述電子設備與所述另一設備間的所述I2C總線已經(jīng)斷開之后,設置所述I2C總線,以使在滿足預設條件時,所述第一設備能通過所述I2C總線連接至所述第二設備。
14.如權利要求12所述的電子設備,其特征在于,所述匹配失敗單元,還包括: 第一計數(shù)器模塊:用于在所述確定所述數(shù)據(jù)包中包含的數(shù)據(jù)為錯誤的數(shù)據(jù)之后,將所述數(shù)據(jù)包對應的第一計數(shù)值加I ; 判斷模塊:用于判斷所述第一計數(shù)值是否大于一預設閾值,如果判斷結果為是,確定所述電子設備和所述另一設備之間的數(shù)據(jù)傳輸出現(xiàn)錯誤;如果判斷結果為否,繼續(xù)讀取所述數(shù)據(jù)包。
15.一種電子設備,所述電子設備通過I2C總線與另一設備相連,其中,所述電子設備具有M個I2C部件基于I2C協(xié)議連接所述I2C總線上,所述另一設備具有N個I2C部件基于所述I2C協(xié)議連接到所述I2C總線上,M和N為大于O的整數(shù),在所述設備設備在熱斷開狀態(tài)時,將所述I2C總線中的DATA線設置為GPI中斷模式,其特征在于,所述電子設備包括:獲得單元:用于獲得所述DATA線上從高電平到低電平的下降沿; 中斷事件單元:用于基于所述下降沿,產(chǎn)生一中斷事件; 處理單元:用于處理所述中斷事件,以對所述M個I2C部件以及所述N個I2C部件進行遍歷操作; 反饋信息單元:用于基于所述遍歷操作,獲得多個反饋信息; 確定單元:用于確定所述多個反饋信息是否有來自所述N個I2C部件的反饋消息;以及 如果有,則確定所述電子設備已通過所述I2C總線與所述另一設備連接。
16.如權利要求15所述的電子設備,其特征在于,還包括: 設置單元:用于確定所述電子設備已通過所述I2C中線與所述另一設備連接之后,設置所述I2C總線,以使在滿足預設條件時,所述電子設備能通過所述I2C總線與所述另一設備通信。 ·
全文摘要
本申請公開了一種實現(xiàn)熱拔和熱插的方法以及電子設備,所述實現(xiàn)熱拔的方法應用在第一設備中,所述第一設備通過I2C總線與第二設備相連,其中,所述第一設備具有M個I2C部件基于I2C協(xié)議連接所述I2C總線上,所述第二設備具有N個I2C部件基于所述I2C協(xié)議連接到所述I2C總線上,M和N為大于0的整數(shù),所述方法包括獲得與所述第二設備進行I2C通信的錯誤信息;基于所述錯誤信息,對所述M個I2C部件以及所述N個I2C部件進行遍歷操作;基于所述遍歷操作,獲得多個反饋信息;在確定所述多個反饋信息全部來自所述M個I2C部件時,確定所述第一設備與所述第二設備間的所述I2C總線已經(jīng)斷開。
文檔編號G06F13/40GK103164379SQ20111042801
公開日2013年6月19日 申請日期2011年12月19日 優(yōu)先權日2011年12月19日
發(fā)明者章丹峰, 靳玉茹, 柯海濱, 趙磊, 余俊峰, 謝兵 申請人:聯(lián)想(北京)有限公司