本發(fā)明屬于操作系統(tǒng)軟件技術(shù)領(lǐng)域,特別是涉及一種設(shè)備驅(qū)動(dòng)管理方法。
背景技術(shù):
智能設(shè)備系統(tǒng)中,軟件和硬件缺一不可。每種硬件在其整個(gè)生命周期內(nèi)只能運(yùn)行預(yù)先設(shè)定好的操作系統(tǒng)和應(yīng)用程序,如果預(yù)先設(shè)定的操作系統(tǒng)和應(yīng)用程序無(wú)法維護(hù)后,那么該硬件的功能就無(wú)法很好的適應(yīng)新業(yè)務(wù)的擴(kuò)展,隨之壽命也會(huì)終止。例如,智能手機(jī)會(huì)定時(shí)進(jìn)行操作系統(tǒng)更新或者功能升級(jí),操作系統(tǒng)包括內(nèi)核和驅(qū)動(dòng),操作系統(tǒng)更新或者功能升級(jí)時(shí),內(nèi)核和驅(qū)動(dòng)程序會(huì)同步更新和升級(jí),但是,如果更新和升級(jí)后的驅(qū)動(dòng)程序版本較高,硬件設(shè)備達(dá)不到驅(qū)動(dòng)程序的要求,驅(qū)動(dòng)程序與硬件設(shè)備不匹配,則會(huì)導(dǎo)致智能手機(jī)無(wú)法正常升級(jí)使用,造成了智能機(jī)淘汰速度的加快,產(chǎn)生大量的電子垃圾,嚴(yán)重影響環(huán)境,并造成無(wú)端的人力和財(cái)力的浪費(fèi)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種設(shè)備驅(qū)動(dòng)管理方法,解決了現(xiàn)有內(nèi)核和驅(qū)動(dòng)同時(shí)更新和升級(jí)造成驅(qū)動(dòng)程序與硬件設(shè)備不匹配,導(dǎo)致智能設(shè)備無(wú)法正常工作的技術(shù)問(wèn)題。
為解決上述技術(shù)問(wèn)題,本發(fā)明采用以下技術(shù)方案予以實(shí)現(xiàn):
一種設(shè)備驅(qū)動(dòng)管理方法,操作系統(tǒng)的內(nèi)核與驅(qū)動(dòng)分離,所述方法為:
系統(tǒng)啟動(dòng)程序運(yùn)行時(shí),進(jìn)行芯片和硬件設(shè)備的掃描和識(shí)別,并將識(shí)別的硬件信息形成硬件描述列表;
系統(tǒng)啟動(dòng)程序運(yùn)行后,加載運(yùn)行內(nèi)核,所述系統(tǒng)啟動(dòng)程序?qū)⒂布枋隽斜韨鬟f給所述內(nèi)核,所述內(nèi)核根據(jù)所述硬件描述列表自動(dòng)配置加載硬件的驅(qū)動(dòng)。
與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)和積極效果是:本發(fā)明操作系統(tǒng)的內(nèi)核與驅(qū)動(dòng)分離,在系統(tǒng)啟動(dòng)程序運(yùn)行時(shí),對(duì)硬件進(jìn)行識(shí)別,并將識(shí)別的硬件形成硬件描述列表,系統(tǒng)剛啟動(dòng)程序運(yùn)行后,加載運(yùn)行內(nèi)核,系統(tǒng)啟動(dòng)程序?qū)⒂布枋隽斜韨鬟f給內(nèi)核,內(nèi)核根據(jù)硬件描述列表自動(dòng)配置加載硬件的驅(qū)動(dòng)。本發(fā)明可以根據(jù)硬件種類和規(guī)格進(jìn)行自動(dòng)配置和管理驅(qū)動(dòng),可以根據(jù)不同的硬件規(guī)格配置和管理板級(jí)設(shè)備,保證系統(tǒng)在不同的硬件平臺(tái)上穩(wěn)定運(yùn)行。本發(fā)明內(nèi)核只配置加載針對(duì)當(dāng)前硬件的驅(qū)動(dòng)管理程序,精簡(jiǎn)大量無(wú)用的板級(jí)總線和設(shè)備驅(qū)動(dòng)管理,提高系統(tǒng)工作效率,可以實(shí)現(xiàn)系統(tǒng)的快速升級(jí)和部署。本發(fā)明還可提高硬件的可重用性,避免由于驅(qū)動(dòng)軟件升級(jí)與硬件不匹配造成無(wú)法使用的問(wèn)題,提高硬件的生命周期,減少無(wú)端的浪費(fèi)和電子污染。
結(jié)合附圖閱讀本發(fā)明實(shí)施方式的詳細(xì)描述后,本發(fā)明的其他特點(diǎn)和優(yōu)點(diǎn)將變得更加清楚。
附圖說(shuō)明
圖1是本發(fā)明具體實(shí)施例的流程圖。
具體實(shí)施方式
本發(fā)明所說(shuō)的硬件包括關(guān)鍵設(shè)備和外圍設(shè)備,其中,關(guān)鍵設(shè)備是指組成智能設(shè)備的各種芯片,例如控制類芯片、存儲(chǔ)類芯片、電源管理類芯片和通信類芯片等;外圍設(shè)備是指與智能設(shè)備可插拔的輸入設(shè)備、輸出設(shè)備等。輸出設(shè)備可以是顯示屏、打印機(jī)、音箱等;輸入設(shè)備可以是鼠標(biāo)、鍵盤(pán)、攝像頭等。
本實(shí)施例提出了一種設(shè)備驅(qū)動(dòng)管理方法,將操作系統(tǒng)的內(nèi)核與驅(qū)動(dòng)分離,采用硬件描述列表對(duì)硬件驅(qū)動(dòng)進(jìn)行管理。
內(nèi)核與驅(qū)動(dòng)分離的作用是:系統(tǒng)更新時(shí),可分別或同時(shí)進(jìn)行內(nèi)核與驅(qū)動(dòng)的更新。由于內(nèi)核與驅(qū)動(dòng)徹底分離,因而,內(nèi)核的更新不依賴與驅(qū)動(dòng)的更新,內(nèi)核的更新不會(huì)出現(xiàn)問(wèn)題,驅(qū)動(dòng)則根據(jù)硬件信息進(jìn)行更新。驅(qū)動(dòng)更新時(shí),若驅(qū)動(dòng)程序的版本高于硬件現(xiàn)有驅(qū)動(dòng)程序的版本,則對(duì)硬件的驅(qū)動(dòng)程序進(jìn)行更新,若更新成功即可,若更新失敗,則硬件仍然配置加載現(xiàn)有的驅(qū)動(dòng)程序的版本,以保證硬件與驅(qū)動(dòng)程序的匹配,提高硬件的使用壽命。
采用硬件描述列表對(duì)硬件驅(qū)動(dòng)進(jìn)行管理的方法是:系統(tǒng)啟動(dòng)程序運(yùn)行時(shí),進(jìn)行硬件的掃描和識(shí)別,并將識(shí)別的硬件信息形成硬件描述列表;
系統(tǒng)啟動(dòng)程序運(yùn)行后,加載運(yùn)行內(nèi)核,系統(tǒng)啟動(dòng)程序?qū)⒂布枋隽斜韨鬟f給內(nèi)核,內(nèi)核根據(jù)硬件描述列表自動(dòng)配置加載硬件的驅(qū)動(dòng)。
如果內(nèi)核無(wú)法正常加載硬件的驅(qū)動(dòng),則將未能正常加載驅(qū)動(dòng)的硬件告知用戶,提示用戶通過(guò)網(wǎng)絡(luò)或手動(dòng)或者其他的方式來(lái)管理驅(qū)動(dòng)。
具體的,智能設(shè)備在啟動(dòng)過(guò)程中,也即系統(tǒng)啟動(dòng)程序運(yùn)行時(shí),系統(tǒng)啟動(dòng)程序通過(guò)總線掃描硬件,并對(duì)掃描的硬件進(jìn)行識(shí)別,得到硬件信息,然后將識(shí)別的硬件信息形成硬件描述列表。其中,硬件信息存儲(chǔ)在硬件的存儲(chǔ)區(qū)域中。系統(tǒng)啟動(dòng)程序運(yùn)行后,加載運(yùn)行內(nèi)核,此時(shí),系統(tǒng)啟動(dòng)程序?qū)⒂布枋隽斜韨鬟f給操作系統(tǒng)的內(nèi)核,內(nèi)核根據(jù)硬件描述列表自動(dòng)配置加載硬件的驅(qū)動(dòng)。其中,硬件信息根據(jù)硬件類型分為關(guān)鍵設(shè)備信息和外圍設(shè)備信息,關(guān)鍵設(shè)備信息主要包括芯片規(guī)格的參數(shù),外圍設(shè)備信息主要包括外圍設(shè)備規(guī)格的參數(shù)。內(nèi)核根據(jù)硬件描述列表自動(dòng)配置加載硬件的驅(qū)動(dòng)包括加載關(guān)鍵設(shè)備和外圍設(shè)備的驅(qū)動(dòng)。
硬件描述列表包括硬件的類型、型號(hào)、設(shè)備id信息、總線類別等信息。例如:
設(shè)備類型1{
設(shè)備描述="設(shè)備的主要功能描述";
設(shè)備廠商描述符="廠商id";
設(shè)備產(chǎn)品描述符="產(chǎn)品id";
設(shè)備總線類型="pcii2cusb";
設(shè)備驅(qū)動(dòng)狀態(tài)="sucessorfailure";
設(shè)備占用系統(tǒng)中斷資源="";
設(shè)備占用系統(tǒng)gpio資源="";
設(shè)備工作頻率="";
子設(shè)備1{
}
子設(shè)備2{
}
…
};
設(shè)備類型2{
};
…
智能設(shè)備每次啟動(dòng)時(shí),也即系統(tǒng)啟動(dòng)程序每次運(yùn)行時(shí)都會(huì)進(jìn)行硬件的識(shí)別。為了加快啟動(dòng)過(guò)程,智能設(shè)備每次啟動(dòng)完畢后,也即內(nèi)核啟動(dòng)完畢后,將硬件描述列表存儲(chǔ)至存儲(chǔ)設(shè)備,系統(tǒng)啟動(dòng)程序每次運(yùn)行時(shí)都會(huì)進(jìn)行硬件的識(shí)別,并將識(shí)別的硬件信息形成新的硬件描述列表,內(nèi)核將新的硬件描述列表與存儲(chǔ)設(shè)備中存儲(chǔ)的硬件描述列表進(jìn)行比較,如果相同,內(nèi)核按照前一次加載模式快速加載,如果不相同,根據(jù)新添加的硬件或新的硬件描述列表重新自動(dòng)配置加載硬件的驅(qū)動(dòng)。
系統(tǒng)啟動(dòng)程序運(yùn)行后,加載存儲(chǔ)于存儲(chǔ)設(shè)備的內(nèi)核時(shí),如果因?yàn)榇鎯?chǔ)設(shè)備在系統(tǒng)啟動(dòng)程序里面的驅(qū)動(dòng)無(wú)法正常工作,會(huì)造成內(nèi)核加載失敗,此時(shí),開(kāi)啟加載外置系統(tǒng)模式,即,加載存儲(chǔ)于兼容性好的外圍存儲(chǔ)設(shè)備的內(nèi)核。由于usb設(shè)備為標(biāo)準(zhǔn)通用設(shè)備、兼容性好,一般通過(guò)外圍usb設(shè)備進(jìn)行內(nèi)核的存儲(chǔ),加載存儲(chǔ)于外圍usb設(shè)備中的內(nèi)核均會(huì)成功。加載存儲(chǔ)于兼容性好的外圍存儲(chǔ)設(shè)備(usb設(shè)備)的內(nèi)核成功后,再搜尋和安裝存儲(chǔ)內(nèi)核的存儲(chǔ)設(shè)備的驅(qū)動(dòng)。
內(nèi)核啟動(dòng)完畢,配置加載硬件的驅(qū)動(dòng)完畢后,啟動(dòng)設(shè)備動(dòng)態(tài)監(jiān)測(cè)進(jìn)程以實(shí)時(shí)管理硬件,例如,硬件的創(chuàng)建、加載、卸載,以及新加入設(shè)備的動(dòng)態(tài)識(shí)別和管理,以及驅(qū)動(dòng)的加載和更新。啟動(dòng)設(shè)備動(dòng)態(tài)監(jiān)測(cè)進(jìn)程實(shí)時(shí)將硬件變動(dòng)信息同步至存儲(chǔ)設(shè)備中的硬件描述列表,以使硬件描述列表能夠反映最新的硬件狀態(tài)。如果動(dòng)態(tài)監(jiān)測(cè)進(jìn)程發(fā)現(xiàn)有硬件移除,則將移除硬件的硬件信息從硬件描述列表中移除;如果動(dòng)態(tài)監(jiān)測(cè)進(jìn)程發(fā)現(xiàn)有硬件插入,則將插入硬件的硬件信息增加至硬件描述列表,同時(shí)加載插入硬件的驅(qū)動(dòng),如果設(shè)備動(dòng)態(tài)監(jiān)測(cè)進(jìn)程無(wú)法正常加載硬件的驅(qū)動(dòng),則將未能正常加載驅(qū)動(dòng)的硬件告知用戶,提示用戶通過(guò)手動(dòng)或者其他的方式來(lái)管理驅(qū)動(dòng)。
設(shè)備動(dòng)態(tài)監(jiān)測(cè)進(jìn)程還用于監(jiān)控驅(qū)動(dòng)的運(yùn)行狀態(tài)是否穩(wěn)定。
設(shè)備動(dòng)態(tài)監(jiān)測(cè)進(jìn)程主要用于管理外圍設(shè)備的驅(qū)動(dòng),而關(guān)鍵設(shè)備的驅(qū)動(dòng)的管理主要由內(nèi)核負(fù)責(zé)完成。
在系統(tǒng)初次安裝時(shí),系統(tǒng)啟動(dòng)程序把掃描和識(shí)別的關(guān)鍵設(shè)備和外圍設(shè)備信息保存并傳遞給內(nèi)核。由于關(guān)鍵設(shè)備都是智能設(shè)備內(nèi)的固定硬件,系統(tǒng)啟動(dòng)程序可以準(zhǔn)確地掃描和識(shí)別關(guān)鍵設(shè)備。但是,由于外圍設(shè)備大多是用戶自己添加的熱插拔設(shè)備,因而,系統(tǒng)啟動(dòng)程序掃描和識(shí)別外圍設(shè)備時(shí),會(huì)有外圍設(shè)備信息識(shí)別不到或識(shí)別不全的情況,此時(shí),系統(tǒng)啟動(dòng)程序生成不能識(shí)別的外圍設(shè)備信息,例如:外圍設(shè)備掛載總線和接口(外圍設(shè)備信息識(shí)別不到的情形)、外圍設(shè)備的廠商和產(chǎn)品信息(外圍設(shè)備信息識(shí)別不全的情形),并將不能識(shí)別的外圍設(shè)備信息保存在硬件描述列表中。等系統(tǒng)安裝完成后,根據(jù)不能識(shí)別的外圍設(shè)備信息對(duì)不能識(shí)別的外圍設(shè)備驅(qū)動(dòng)進(jìn)行處理。若外圍設(shè)備信息識(shí)別不全,首先會(huì)根據(jù)外圍設(shè)備的廠商和產(chǎn)品信息,嘗試聯(lián)網(wǎng)搜索設(shè)備更新數(shù)據(jù)庫(kù),在網(wǎng)絡(luò)不通或者沒(méi)有搜索到外圍設(shè)備或者外圍設(shè)備信息識(shí)別不到的情況下,將不能識(shí)別的外圍設(shè)備信息發(fā)送給用戶態(tài),用戶可以自行咨詢?cè)O(shè)備廠商安裝驅(qū)動(dòng)。安裝完成后,每次外圍設(shè)備變動(dòng)后,如果是即插即用設(shè)備,啟動(dòng)設(shè)備動(dòng)態(tài)監(jiān)測(cè)進(jìn)程會(huì)識(shí)別外圍設(shè)備信息,將識(shí)別的外圍設(shè)備信息更新到硬件描述列表并自動(dòng)搜索加載外圍設(shè)備驅(qū)動(dòng),等下次重新啟動(dòng)時(shí),內(nèi)核會(huì)根據(jù)更新的硬件描述列表加載和管理驅(qū)動(dòng)。如果是其他非即插即用設(shè)備,需要斷電重啟進(jìn)入系統(tǒng)后,再搜索安裝驅(qū)動(dòng)。一般外圍設(shè)備驅(qū)動(dòng)的管理采用網(wǎng)絡(luò)自動(dòng)搜查的方式。
驅(qū)動(dòng)采用用戶空間運(yùn)行的服務(wù)方式,并且能夠跟內(nèi)核實(shí)現(xiàn)快速的交互以及隔離與其他系統(tǒng)模塊的耦合。設(shè)備動(dòng)態(tài)監(jiān)測(cè)進(jìn)程,為驅(qū)動(dòng)運(yùn)行提供了隔離環(huán)境,如果驅(qū)動(dòng)程序出錯(cuò),不會(huì)導(dǎo)致內(nèi)核崩潰,提高系統(tǒng)的健壯性;并且可以隨著不同硬件設(shè)備的出現(xiàn)和更新,提供靈活性和擴(kuò)展性。
設(shè)備動(dòng)態(tài)監(jiān)測(cè)進(jìn)程采用專有內(nèi)存池來(lái)管理外圍設(shè)備驅(qū)動(dòng),并且為每個(gè)外圍設(shè)備驅(qū)動(dòng)提供相互隔離的內(nèi)存空間。
硬件變動(dòng)時(shí),動(dòng)態(tài)監(jiān)測(cè)進(jìn)程形成變更標(biāo)識(shí),并將變更標(biāo)識(shí)發(fā)送至系統(tǒng)啟動(dòng)程序。系統(tǒng)啟動(dòng)程序再次運(yùn)行時(shí),獲取變更標(biāo)識(shí)并重新掃描識(shí)別硬件。
為了保證智能設(shè)備系統(tǒng)能夠正常啟動(dòng),系統(tǒng)啟動(dòng)程序運(yùn)行之前,首先運(yùn)行啟動(dòng)固件,啟動(dòng)固件具有統(tǒng)一的規(guī)范和標(biāo)準(zhǔn),啟動(dòng)固件存儲(chǔ)有系統(tǒng)啟動(dòng)程序存儲(chǔ)的起始地址。啟動(dòng)固件是在板級(jí)主芯片內(nèi)置或外置的一塊統(tǒng)一啟動(dòng)rom固件,板級(jí)芯片上電后,首先運(yùn)行位于板級(jí)主芯片內(nèi)置或者外置的統(tǒng)一啟動(dòng)rom固件(簡(jiǎn)稱startrom),startrom中存儲(chǔ)有統(tǒng)一啟動(dòng)程序。startrom引導(dǎo)代碼進(jìn)行芯片時(shí)鐘和系統(tǒng)的初始化操作,完成最小系統(tǒng)環(huán)境創(chuàng)建完成后,再加載外置存儲(chǔ)設(shè)備起始地址處的系統(tǒng)啟動(dòng)程序,系統(tǒng)啟動(dòng)程序例如是uboot或者bios、uefi等,外置存儲(chǔ)設(shè)備起始地址開(kāi)始的一小段區(qū)域劃分為統(tǒng)一存儲(chǔ)區(qū)域,即,startrom可以統(tǒng)一識(shí)別并加載此地址處的系統(tǒng)啟動(dòng)程序。
如圖1所示,以智能設(shè)備的啟動(dòng)過(guò)程為例進(jìn)行說(shuō)明:
s1、系統(tǒng)上電。
s2、運(yùn)行啟動(dòng)固件中的統(tǒng)一引導(dǎo)代碼。
s3、startrom統(tǒng)一引導(dǎo)代碼進(jìn)行芯片時(shí)鐘和系統(tǒng)的初始化操作,完成最小系統(tǒng)環(huán)境創(chuàng)建。
s4、統(tǒng)一引導(dǎo)代碼加載外置存儲(chǔ)設(shè)備起始地址處的系統(tǒng)啟動(dòng)程序。
s5、系統(tǒng)啟動(dòng)程序掃描和識(shí)別硬件,并將識(shí)別的硬件信息形成硬件描述列表。
s6、加載運(yùn)行存儲(chǔ)設(shè)備中的內(nèi)核,并判斷是否成功,若失敗,則進(jìn)入步驟s7,否則,進(jìn)入步驟s8。
s7、加載存儲(chǔ)于外圍usb設(shè)備中的內(nèi)核,再搜尋和安裝存儲(chǔ)內(nèi)核的存儲(chǔ)設(shè)備的驅(qū)動(dòng),進(jìn)入步驟s8。
s8、內(nèi)核讀取系統(tǒng)啟動(dòng)程序形成的硬件描述列表。
s9、根據(jù)硬件描述列表自動(dòng)配置加載硬件的驅(qū)動(dòng),并判斷是否成功,若失敗,進(jìn)入步驟s10,否則,進(jìn)入步驟s11。
s10、將更新失敗的硬件標(biāo)識(shí)出來(lái),并發(fā)行通知給用戶態(tài),用戶態(tài)通過(guò)網(wǎng)絡(luò)或者手動(dòng)更新驅(qū)動(dòng)。進(jìn)入步驟s12。
s11、將硬件描述列表存儲(chǔ)至存儲(chǔ)設(shè)備。
s12、設(shè)備動(dòng)態(tài)監(jiān)測(cè)進(jìn)程實(shí)時(shí)管理硬件,實(shí)時(shí)更新硬件描述列表。
s13、如果設(shè)備動(dòng)態(tài)監(jiān)測(cè)進(jìn)程無(wú)法正常加載硬件的驅(qū)動(dòng)。
s14、將未能正常加載驅(qū)動(dòng)的硬件告知用戶,提示用戶通過(guò)手動(dòng)或者其他的方式來(lái)管理驅(qū)動(dòng)。
本實(shí)施例設(shè)備驅(qū)動(dòng)管理方法,可以有效的提高硬件設(shè)備的系統(tǒng)移植難度,提高硬件的使用壽命和可重用度,在硬件物理期限的周期內(nèi),可以最大發(fā)揮其使用價(jià)值。
最后應(yīng)說(shuō)明的是:以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。