本發明涉及虛擬化,尤其是涉及一種半虛擬化i2c系統、方法及計算機設備。
背景技術:
1、在現有的虛擬化技術方案中,基于virtio(virtual?i/o,虛擬化輸入/輸出)協議,已經具備了一些物理硬件的半虛擬化能力,包括v-console、v-bolck、v-net等,但仍然缺乏對于i2c(inter-integrated?circuit,集成電路總線)的半虛擬化支持。一般情況下,在物理硬件上只有一個i2c主設備,而此i2c主設備上則接有多個i2c從設備,而不同的虛擬機(guest?os)需要使用此i2c主設備下不同的i2c從設備,在這種場景下,現有技術將不能夠滿足實際開發需求。
技術實現思路
1、為克服相關技術中存在的問題,本發明提供一種半虛擬化i2c系統、方法及計算機設備,用以解決相關技術中的缺陷。
2、根據本發明的第一方面,提供一種半虛擬化i2c系統,所述系統包括硬件平臺,所述硬件平臺上配置有虛擬機管理器,所述虛擬機管理器上配置有第一虛擬機和第二虛擬機;所述第一虛擬機直通i2c主設備;所述虛擬機管理器用于提供virtio框架支持,所述第一虛擬機和所述第二虛擬機通過調用所述virtio框架中的virtio接口進行交互。
3、優選地,所述第一虛擬機上配置有i2c主設備驅動,所述第一虛擬機通過所述i2c主設備驅動直通i2c主設備。
4、優選地,所述第一虛擬機上配置有i2c后端驅動,所述第二虛擬機上配置有i2c前端驅動,所述第一虛擬機和所述第二虛擬機通過所述i2c后端驅動和所述i2c前端驅動調用所述virtio接口進行交互。
5、優選地,所述第一虛擬機和所述第二虛擬機通過共享內存實現所述virtio框架中的數據傳遞功能,所述第一虛擬機和所述第二虛擬機通過所述虛擬機控制器提供的虛擬中斷機制實現所述virtio框架中的通知功能。
6、根據本發明的第二方面,提供一種半虛擬化i2c方法,應用于如本發明任一實施例所述的半虛擬化i2c系統,所述方法包括:
7、所述第二虛擬機通過所述virtio接口向所述第一虛擬機獲取所述i2c主設備的控制權;
8、所述第二虛擬機通過所述virtio接口將目標數據發送至所述第一虛擬機,所述第一虛擬機通過所述i2c主設備將所述目標數據發送至對應的目標i2c從設備;
9、所述第二虛擬機釋放所述i2c主設備的控制權。
10、優選地,所述第二虛擬機通過所述virtio接口向所述第一虛擬機獲取所述i2c主設備的控制權,包括:
11、所述第二虛擬機通過所述virtio接口向所述第一虛擬機發送獲取i2c主設備的控制權的請求;
12、所述第一虛擬機通過所述virtio接口響應所述第一虛擬機所發送的獲取i2c主設備的控制權的請求;
13、所述第二虛擬機通過所述virtio接口確定成功獲取i2c主設備的控制權。
14、優選地,所述第二虛擬機通過所述virtio接口將目標數據發送至所述第一虛擬機,所述第一虛擬機通過所述i2c主設備將所述目標數據發送至對應的目標i2c從設備,包括:
15、所述第二虛擬機通過所述virtio接口將所述目標數據放入共享內存中,并通知所述第一虛擬機;
16、所述第一虛擬機獲得通知后,調用所述virtio接口從所述共享內存中獲取所述目標數據,并解析所述目標數據,獲知所述目標數據對應的所述目標i2c從設備;
17、所述第一虛擬機通過直通所述i2c主設備,將所述目標數據發送至所述目標i2c從設備;
18、所述第一虛擬機通過所述virtio接口通知所述第二虛擬機目標數據發送完成。
19、優選地,所述第二虛擬機釋放所述i2c主設備的控制權,包括:
20、所述第二虛擬機通過所述virtio接口向所述第一虛擬機提出釋放i2c主設備的控制權的通知;
21、所述第一虛擬機獲得通知后,解除所述第二虛擬機的i2c主設備的控制權,并調用所述virtio接口響應所述釋放i2c主設備的控制權的通知。
22、根據本發明的第三方面,提供一種半虛擬化i2c方法,應用于如本發明任一實施例所述的半虛擬化i2c系統中的所述第一虛擬機,所述方法包括:
23、響應所述第二虛擬機通過所述virtio接口所發送的請求,使所述第二虛擬機獲取所述i2c主設備的控制權;
24、接收所述第二虛擬機通過所述virtio接口所發送的目標數據,并通過所述i2c主設備將所述目標數據發送至對應的目標i2c從設備;
25、解除所述第二虛擬機對所述i2c主設備的控制權。
26、根據本發明的第四方面,提供一種半虛擬化i2c方法,應用于如本發明任一實施例所述的半虛擬化i2c系統中的所述第二虛擬機,所述方法包括:
27、通過所述virtio接口向所述第一虛擬機獲取所述i2c主設備的控制權;
28、通過所述virtio接口將目標數據發送至所述第一虛擬機,以使所述第一虛擬機通過所述i2c主設備將所述目標數據發送至對應的目標i2c從設備;
29、釋放所述i2c主設備的控制權。
30、根據本發明的第五方面,提供一種計算機設備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,所述計算機設備還包括如本發明任一實施例所述的半虛擬化i2c系統;所述處理器執行所述程序時實現如本發明任一實施例所述的半虛擬化i2c方法。
31、本發明公開了一種半虛擬化i2c系統、方法及計算機設備,基于virtio半虛擬化框架,通過第一虛擬機直通i2c主設備,而第二虛擬機則可以通過virtio接口與該第一虛擬機交互,繼而第一虛擬機可以通過i2c主設備將待發送的目標數據發送至對應的目標i2c從設備,從而實現了在不同的虛擬機中能夠使用同一i2c主設備下不同的i2c從設備,即采用了將i2c主設備進行半虛擬化的方式,解決了不同虛擬機對同一個i2c主設備硬件資源復用的問題,有效地降低了硬件成本。
32、應當理解的是,以上的一般描述和后文的細節描述僅是示例性和解釋性的,并不能限制本發明。
1.一種半虛擬化i2c系統,其特征在于,所述系統包括硬件平臺,所述硬件平臺上配置有虛擬機管理器,所述虛擬機管理器上配置有第一虛擬機和第二虛擬機;所述第一虛擬機直通i2c主設備;所述虛擬機管理器用于提供virtio框架支持,所述第一虛擬機和所述第二虛擬機通過調用所述virtio框架中的virtio接口進行交互。
2.根據權利要求1所述的系統,其特征在于,所述第一虛擬機上配置有i2c主設備驅動,所述第一虛擬機通過所述i2c主設備驅動直通i2c主設備。
3.根據權利要求1所述的系統,其特征在于,所述第一虛擬機上配置有i2c后端驅動,所述第二虛擬機上配置有i2c前端驅動,所述第一虛擬機和所述第二虛擬機通過所述i2c后端驅動和所述i2c前端驅動調用所述virtio接口進行交互。
4.根據權利要求1所述的系統,其特征在于,所述第一虛擬機和所述第二虛擬機通過共享內存實現所述virtio框架中的數據傳遞功能,所述第一虛擬機和所述第二虛擬機通過所述虛擬機控制器提供的虛擬中斷機制實現所述virtio框架中的通知功能。
5.一種半虛擬化i2c方法,其特征在于,應用于如權利要求1-4任一所述的半虛擬化i2c系統,所述方法包括:
6.根據權利要求5所述的方法,其特征在于,所述第二虛擬機通過所述virtio接口向所述第一虛擬機獲取所述i2c主設備的控制權,包括:
7.根據權利要求5所述的方法,其特征在于,所述第二虛擬機通過所述virtio接口將目標數據發送至所述第一虛擬機,所述第一虛擬機通過所述i2c主設備將所述目標數據發送至對應的目標i2c從設備,包括:
8.根據權利要求5所述的方法,其特征在于,所述第二虛擬機釋放所述i2c主設備的控制權,包括:
9.一種半虛擬化i2c方法,其特征在于,應用于如權利要求1-4任一所述的半虛擬化i2c系統中的所述第一虛擬機,所述方法包括:
10.一種半虛擬化i2c方法,其特征在于,應用于如權利要求1-4任一所述的半虛擬化i2c系統中的所述第二虛擬機,所述方法包括:
11.一種計算機設備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,其特征在于,所述計算機設備還包括如權利要求1-4任一所述的半虛擬化i2c系統;所述處理器執行所述程序時實現如權利要求5-8任一所述的半虛擬化i2c方法。