專利名稱:一種智能加載手機(jī)硬件驅(qū)動(dòng)程序的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種加載手機(jī)硬件驅(qū)動(dòng)程序的方法,特別涉及一種智能加載手機(jī)硬件驅(qū)動(dòng)程序的方法。
背景技術(shù):
智能手機(jī)按操作系統(tǒng)可分為Symbian系統(tǒng)、WinCE系統(tǒng)以及Linux系統(tǒng)。目前各手機(jī)操作系統(tǒng)對(duì)相關(guān)的手機(jī)硬件驅(qū)動(dòng)程序的加載實(shí)現(xiàn),仍然主要采用傳統(tǒng)方式,具體有兩種加載方法。
一、把驅(qū)動(dòng)程序模塊和手機(jī)操作系統(tǒng)內(nèi)核做成一個(gè)整體。這種方法的主要缺點(diǎn)是耗費(fèi)存儲(chǔ)空間,手機(jī)本身的存儲(chǔ)空間容量有限,而且隨著手機(jī)功能日漸強(qiáng)大,硬件外設(shè)種類繁多,如果都采用這種方式,那存儲(chǔ)空間就會(huì)非常緊張。同時(shí),一旦器件升級(jí)就必須重新生成新的軟件版本,非常復(fù)雜,也不便于維護(hù)版本。
二、把驅(qū)動(dòng)程序單獨(dú)加載。這種方法雖然可以解決存儲(chǔ)空間問題,但是如果硬件一旦需要升級(jí),就要根據(jù)不同硬件加載不同的驅(qū)動(dòng)程序,這樣就需要維護(hù)多個(gè)版本,導(dǎo)致了使用、維護(hù)起來很不方便。
目前的使用這些手機(jī)操作系統(tǒng)的手機(jī)還不能解決節(jié)約手機(jī)存儲(chǔ)空間問題,同時(shí)也不能自動(dòng)兼容多種同類型硬件并存的狀況,對(duì)系統(tǒng)進(jìn)行升級(jí)和擴(kuò)充十分不方便。
發(fā)明內(nèi)容
本發(fā)明解決的技術(shù)問題在于提供了一種智能加載手機(jī)硬件驅(qū)動(dòng)程序的方法,以解決節(jié)約手機(jī)存儲(chǔ)空間問題,同時(shí)能自動(dòng)兼容多種同類型硬件并存的狀況,方便的對(duì)系統(tǒng)進(jìn)行升級(jí)和擴(kuò)充。
為解決上述技術(shù)問題,本發(fā)明提供了一種智能加載手機(jī)硬件驅(qū)動(dòng)程序的方法,在手機(jī)操作系統(tǒng)啟動(dòng)完畢,并掛接文件系統(tǒng)后,由啟動(dòng)腳本根據(jù)不同的手機(jī)硬件,向系統(tǒng)內(nèi)核空間插入對(duì)應(yīng)的硬件驅(qū)動(dòng)程序,該方法包括如下步驟在系統(tǒng)內(nèi)核中插入硬件識(shí)別模塊,以通過該硬件識(shí)別模塊讀取不同硬件的寄存器,識(shí)別出不同型號(hào)的硬件;根據(jù)識(shí)別出的不同硬件,生成硬件標(biāo)志文件;根據(jù)所述硬件標(biāo)志丈件,在系統(tǒng)內(nèi)核中插入相對(duì)應(yīng)的硬件驅(qū)動(dòng)程序。
還可以進(jìn)一步包括從系統(tǒng)內(nèi)核中刪除所述硬件識(shí)別模塊。
還可以進(jìn)一步包括刪除所述硬件標(biāo)志文件。
其中所述生成硬件標(biāo)志文件的步驟,可以包括如下步驟取得并保存當(dāng)前進(jìn)程的用戶空間地址范圍;取得內(nèi)核空間地址范圍;將當(dāng)前的用戶空間地址范圍指向內(nèi)核空間地址范圍;在內(nèi)核地址空間操作所述硬件標(biāo)志文件的寫入;完成寫操作后,恢復(fù)保存的用戶空間地址范圍。
在本發(fā)明的方法中,由于采用了將每個(gè)硬件驅(qū)動(dòng)程序編譯成獨(dú)立的軟件模塊,克服了傳統(tǒng)手機(jī)操作系統(tǒng)內(nèi)核中手機(jī)存儲(chǔ)空間資源有限的問題,同時(shí)因?yàn)樵黾恿擞布R(shí)別模塊來識(shí)別不同硬件后,生成標(biāo)志文件上報(bào)給系統(tǒng),便于系統(tǒng)能夠根據(jù)需要加載所需的驅(qū)動(dòng)程序,本方法使得手機(jī)操作系統(tǒng)不但能夠自動(dòng)兼容多種同類型硬件,同時(shí)還能夠非常方便地進(jìn)行擴(kuò)充和升級(jí)。這樣手機(jī)程序版本售后維護(hù)也更方便,節(jié)省人力和成本。
由于在本發(fā)明的方法中,驅(qū)動(dòng)模塊是獨(dú)立編寫的,所以以后硬件升級(jí)換代也只需要增加新的模塊即可,有一定的前瞻性和兼容性,便于軟件的維護(hù)。本發(fā)明通過對(duì)傳統(tǒng)驅(qū)動(dòng)程序加載方式的改進(jìn),取得了根據(jù)器件不同而動(dòng)態(tài)加載對(duì)應(yīng)驅(qū)動(dòng)程序的進(jìn)步,達(dá)到了智能識(shí)別同類型器件的效果,節(jié)省了后續(xù)軟件研發(fā)成本,提高了產(chǎn)品的穩(wěn)定性、可靠性、多樣性。
圖1為傳統(tǒng)的手機(jī)加載驅(qū)動(dòng)程序流程圖;圖2為是本發(fā)明實(shí)施例在Linux手機(jī)操作系統(tǒng)中的智能加載驅(qū)動(dòng)程序方法的實(shí)施流程圖;圖3為本發(fā)明實(shí)施例中,硬件識(shí)別模塊生成標(biāo)志文件的流程圖。
具體實(shí)施例方式
下面結(jié)合具體實(shí)施方式
來說明本發(fā)明。
首先本實(shí)施例為了能夠解決手機(jī)存儲(chǔ)空間有限的問題提供了一個(gè)驅(qū)動(dòng)軟件模塊,它是把驅(qū)動(dòng)程序編譯成獨(dú)立軟件模塊,單獨(dú)加載,這樣可以減少內(nèi)核存儲(chǔ)空間。對(duì)驅(qū)動(dòng)主程序,采用定義多個(gè)宏的方法,輔之以條件編譯的方法來控制程序的執(zhí)行流程。這樣做的最大好處是可以在一個(gè)驅(qū)動(dòng)程序的框架中實(shí)現(xiàn)多個(gè)型號(hào)的器件驅(qū)動(dòng)功能,并且能大大減少目標(biāo)代碼的大小,從而達(dá)到節(jié)省存儲(chǔ)空間的目的,還便于源代碼的修改維護(hù)。
有幾種硬件需要實(shí)際兼容,就在程序中來定義幾個(gè)宏。由于智能手機(jī)上使用的操作系統(tǒng)是可裁剪的,因此在操作系統(tǒng)配置菜單中定義幾個(gè)和相關(guān)硬件器件對(duì)應(yīng)的選項(xiàng),就能方便程序編譯。這樣即使以后升級(jí)器件,也只需要編譯新的模塊就可以了,不用替換整個(gè)操作系統(tǒng)。
其次為了能夠自動(dòng)兼容多種類型并存的硬件,通過程序來識(shí)別同類器件的不同型號(hào)的方法中。由于同類型器件和CPU的控制連接方式基本是一樣,所以能夠按相同的通訊方法來讀取器件的寄存器,從而識(shí)別出器件型號(hào)。因此除了在驅(qū)動(dòng)軟件模塊外,本實(shí)施例提供了一個(gè)硬件識(shí)別模塊來區(qū)分不同的器件。
當(dāng)硬件識(shí)別模塊中的識(shí)別單元識(shí)別出特定的硬件器件后,就生成一個(gè)特殊的標(biāo)志文件。然后系統(tǒng)根據(jù)不同的標(biāo)志文件來插入不同的驅(qū)動(dòng)軟件模塊。這個(gè)硬件識(shí)別模塊由于功能非常簡(jiǎn)單,所以文件也很小,一般不到幾千字節(jié)。
本實(shí)施例中硬件識(shí)別模塊和驅(qū)動(dòng)軟件模塊之間的聯(lián)系方式是通過標(biāo)識(shí)不同文件來實(shí)現(xiàn)的。因?yàn)閷?duì)文件的操作都是在手機(jī)用戶空間進(jìn)行,而硬件識(shí)別模塊是運(yùn)行在操作系統(tǒng)的內(nèi)核空間。硬件識(shí)別模塊寫標(biāo)志文件的過程,涉及到通過內(nèi)核空間向用戶空間寫文件的方法。所以硬件識(shí)別模塊首先需要取得并保存當(dāng)前進(jìn)程的用戶空間地址范圍,再取得內(nèi)核空間地址范圍,把當(dāng)前的用戶空間地址范圍指向內(nèi)核空間地址范圍,這樣就能夠在操作系統(tǒng)的內(nèi)核空間操作文件的讀寫。寫完后再恢復(fù)保存的用戶空間地址范圍就能完成兩個(gè)模塊之間的聯(lián)系了。
下面結(jié)合圖1來說明傳統(tǒng)的手機(jī)加載驅(qū)動(dòng)程序的流程。
如圖1所示傳統(tǒng)的手機(jī)加載步驟是步驟101手機(jī)操作系統(tǒng)啟動(dòng)完畢;步驟102掛接文件系統(tǒng);步驟103啟動(dòng)腳本根據(jù)不同的手機(jī)硬件,向系統(tǒng)內(nèi)核空間插入對(duì)應(yīng)的硬件驅(qū)動(dòng)程序。
下面結(jié)合圖2來說明本實(shí)施例的具體操作方法。
圖2是本發(fā)明實(shí)施例在Linux手機(jī)操作系統(tǒng)中的智能加載驅(qū)動(dòng)程序方法的實(shí)施流程圖。其實(shí)施步驟如下步驟201、手機(jī)開機(jī)上電后,首先運(yùn)行嵌入式Linux操作系統(tǒng),由操作系統(tǒng)初始化必要的軟硬件環(huán)境;步驟202、在操作系統(tǒng)啟動(dòng)完畢后,由啟動(dòng)腳本掛上文件系統(tǒng);步驟203、由啟動(dòng)腳本插入硬件識(shí)別模塊;步驟204、硬件識(shí)別模塊中通過讀硬件寄存器識(shí)別出特定型號(hào)的硬件;步驟205、硬件識(shí)別模塊中生成標(biāo)志文件;步驟206、手機(jī)Linux系統(tǒng)根據(jù)不同的標(biāo)志文件來插入相對(duì)應(yīng)的器件驅(qū)動(dòng)軟件模塊;步驟207、器件驅(qū)動(dòng)軟件模塊加載成功,模塊調(diào)用相應(yīng)的器件驅(qū)動(dòng)軟件單元對(duì)器件進(jìn)行驅(qū)動(dòng);步驟208、Linux系統(tǒng)從內(nèi)核中刪除硬件識(shí)別模塊以增加內(nèi)存,同時(shí)刪除標(biāo)志文件。
Linux系統(tǒng)刪除硬件識(shí)別模塊,同時(shí)刪除標(biāo)志文件的目的是以增加內(nèi)核空間。
其中步驟205硬件識(shí)別模塊中生成標(biāo)志文件,更加具體的實(shí)施流程如圖3所示是步驟301取得并保存當(dāng)前進(jìn)程的用戶空間地址范圍;步驟302取得內(nèi)核空間地址范圍;步驟303將當(dāng)前的用戶空間地址范圍指向內(nèi)核空間地址范圍;步驟304在內(nèi)核地址空間操作所述硬件標(biāo)志文件的寫入;步驟305完成寫操作后,恢復(fù)保存的用戶空間地址范圍。
本發(fā)明通過模塊加載方式避免了操作系統(tǒng)存儲(chǔ)空間的不足,以后硬件升級(jí)換代也只需要增加新的模塊即可,有一定的前瞻性和兼容性,便于軟件的維護(hù)。通過對(duì)傳統(tǒng)驅(qū)動(dòng)程序加載方式的改進(jìn),取得了根據(jù)器件不同而動(dòng)態(tài)加載對(duì)應(yīng)驅(qū)動(dòng)程序的進(jìn)步,達(dá)到了智能識(shí)別同類型器件的效果,節(jié)省了后續(xù)軟件研發(fā)成本,提高了產(chǎn)品的穩(wěn)定性、可靠性、多樣性。
在本發(fā)明的方法中,由于采用了將每個(gè)硬件驅(qū)動(dòng)程序編譯成獨(dú)立的軟件模塊,克服了傳統(tǒng)手機(jī)操作系統(tǒng)內(nèi)核中手機(jī)存儲(chǔ)空間資源有限的問題,同時(shí)因?yàn)樵黾恿擞布R(shí)別模塊來識(shí)別不同硬件后,生成標(biāo)志文件上報(bào)給系統(tǒng),便于系統(tǒng)能夠根據(jù)需要加載所需的驅(qū)動(dòng)程序,本方法使得手機(jī)操作系統(tǒng)不但能夠自動(dòng)兼容多種同類型硬件,同時(shí)還能夠非常方便地進(jìn)行擴(kuò)充和升級(jí)。這樣手機(jī)程序版本售后維護(hù)也更方便,節(jié)省人力和成本。
權(quán)利要求
1.一種智能加載手機(jī)硬件驅(qū)動(dòng)程序的方法,在手機(jī)操作系統(tǒng)啟動(dòng)完畢,并掛接文件系統(tǒng)后,由啟動(dòng)腳本根據(jù)不同的手機(jī)硬件,向系統(tǒng)內(nèi)核空間插入對(duì)應(yīng)的硬件驅(qū)動(dòng)程序,其特征在于,包括如下步驟在系統(tǒng)內(nèi)核中插入硬件識(shí)別模塊,以通過該硬件識(shí)別模塊讀取不同硬件的寄存器,識(shí)別出不同型號(hào)的硬件;根據(jù)識(shí)別出的不同硬件,生成硬件標(biāo)志文件;根據(jù)所述硬件標(biāo)志文件,在系統(tǒng)內(nèi)核中插入相對(duì)應(yīng)的硬件驅(qū)動(dòng)程序。
2.如權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括從系統(tǒng)內(nèi)核中刪除所述硬件識(shí)別模塊。
3.如權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括刪除所述硬件標(biāo)志文件。
4.如權(quán)利要求1所述的方法,其特征在于,所述生成硬件標(biāo)志文件的步驟,包括如下步驟取得并保存當(dāng)前進(jìn)程的用戶空間地址范圍;取得內(nèi)核空間地址范圍;將當(dāng)前的用戶空間地址范圍指向內(nèi)核空間地址范圍;在內(nèi)核地址空間操作所述硬件標(biāo)志文件的寫入;完成寫操作后,恢復(fù)保存的用戶空間地址范圍。
5.如權(quán)利要求1所述的方法,其特征在于,所述每個(gè)硬件驅(qū)動(dòng)程序是被編譯成獨(dú)立的軟件模塊。
6.如權(quán)利要求1所述的方法,其特征在于,所述在系統(tǒng)內(nèi)核中插入相對(duì)應(yīng)的硬件驅(qū)動(dòng)程序的步驟,包括根據(jù)需要兼容的硬件數(shù)據(jù),定義對(duì)應(yīng)數(shù)量的宏;根據(jù)宏定義,控制不同硬件驅(qū)動(dòng)程序的插入過程。
7.如權(quán)利要求1所述的方法,其特征在于,所述操作系統(tǒng)為L(zhǎng)inux操作系統(tǒng)。
8.如權(quán)利要求1所述的方法,其特征在于,所述操作系統(tǒng)為Symbian操作系統(tǒng)。
9.如權(quán)利要求1所述的方法,其特征在于,所述操作系統(tǒng)為WinCE操作系統(tǒng)。
全文摘要
本發(fā)明提供了一種智能加載手機(jī)硬件驅(qū)動(dòng)程序的方法,包括如下步驟在系統(tǒng)內(nèi)核中插入硬件識(shí)別模塊,以通過該硬件識(shí)別模塊讀取不同硬件的寄存器,識(shí)別出不同型號(hào)的硬件;根據(jù)識(shí)別出的不同硬件,生成硬件標(biāo)志文件;根據(jù)所述硬件標(biāo)志文件,在系統(tǒng)內(nèi)核中插入相對(duì)應(yīng)的硬件驅(qū)動(dòng)程序。本方法克服了傳統(tǒng)手機(jī)操作系統(tǒng)中驅(qū)動(dòng)程序加載的缺點(diǎn),既能夠解決手機(jī)存儲(chǔ)空間資源有限的問題,也能夠自動(dòng)兼容多種同類型硬件并存的狀況,同時(shí)能夠非常方便地進(jìn)行擴(kuò)充和升級(jí)。這樣手機(jī)程序版本售后維護(hù)也更方便,節(jié)省人力和成本。
文檔編號(hào)H04M1/725GK1964526SQ20051011564
公開日2007年5月16日 申請(qǐng)日期2005年11月9日 優(yōu)先權(quán)日2005年11月9日
發(fā)明者黃泳 申請(qǐng)人:中興通訊股份有限公司