一種獨立于Linux內(nèi)核的硬件驅(qū)動實現(xiàn)方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信電子技術(shù)領(lǐng)域,尤其涉及一種獨立于Linux內(nèi)核的硬件驅(qū)動實現(xiàn)方法及裝置。
【背景技術(shù)】
[0002]現(xiàn)有的Iinux設(shè)備驅(qū)動程序基本實現(xiàn)方式是基于Linux內(nèi)核所提供的接口,使用Linux內(nèi)核的不同機制,將對硬件進(jìn)行操作的代碼放在Linux內(nèi)核源碼中,作為Linux內(nèi)核的一部分統(tǒng)一編譯運行。如圖1所示,Linux操作系統(tǒng)管理是用于控制計算機硬件資源和軟件資源的計算機程序,按照程序的運行環(huán)境可分為用戶空間和內(nèi)核空間,用戶空間的程序通過系統(tǒng)調(diào)用的方式來切換到內(nèi)核空間運行,內(nèi)核空間的代碼可通過內(nèi)核接口以及硬件驅(qū)動程序直接訪問硬件資源。
[0003]但本發(fā)明人發(fā)現(xiàn),這種模式對于現(xiàn)有的Linux設(shè)備驅(qū)動程序開發(fā)工作而言,對驅(qū)動程序開發(fā)人員的要求較高,驅(qū)動開發(fā)人員在至少掌握Linux內(nèi)核的基本原理和各種機制的同時,還要熟悉硬件模塊的工作原理才能夠完成Linux設(shè)備驅(qū)動開發(fā)的工作,這樣將使得訪問難度和工作難度都加大。
【發(fā)明內(nèi)容】
[0004]本發(fā)明實施例提供一種獨立于Linux內(nèi)核的硬件驅(qū)動實現(xiàn)方法及裝置,該方法用于解決訪問難度和工作難度加大的問題。
[0005]—種獨立于Linux內(nèi)核的硬件驅(qū)動實現(xiàn)方法,所述方法包括:
[0006]在Linux系統(tǒng)啟動時,Linux內(nèi)核中的程序加載模塊從Linux內(nèi)核外的硬件模塊處獲取將要執(zhí)行操作的硬件的操作接口;
[0007]將獲取到的操作接口提供給所述Linux內(nèi)核。
[0008]—種獨立于Linux內(nèi)核的硬件驅(qū)動裝置,所述裝置包括:
[0009]程序加載模塊,用于在Linux系統(tǒng)啟動時,從Linux內(nèi)核外的硬件模塊處獲取將要執(zhí)行操作的硬件的操作接口 ;并將獲取到的操作接口提供給所述Linux內(nèi)核;
[0010]硬件模塊,用于執(zhí)行相應(yīng)的硬件操作。
[0011]可見本發(fā)明實施例提供的方法,使得硬件模塊包含的是針對具體硬件控制器操作的代碼,該部分的代碼與內(nèi)核代碼獨立開來,單獨編寫、編譯,它不依賴于內(nèi)核的機制,不能使用內(nèi)核提供的函數(shù),它直接控制硬件,編寫時不需要考慮內(nèi)核的架構(gòu),因此對于開發(fā)而言更加簡單。它的運行地址可自己指定,因此可將模塊接口部分的代碼指定放在一個位置,由程序加載模塊獲取接口??梢娫摲椒梢越鉀Q訪問難度和工作難度加大的問題。
【附圖說明】
[0012]為了更清楚地說明本發(fā)明或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹。
[0013]圖1為現(xiàn)有技術(shù)中Linux內(nèi)核的結(jié)構(gòu)圖;
[0014]圖2為本發(fā)明實施例提供的一種獨立于Linux內(nèi)核的硬件驅(qū)動實現(xiàn)方法流程圖;
[0015]圖3為本發(fā)明實施例提供的Linux內(nèi)核的結(jié)構(gòu)圖。
【具體實施方式】
[0016]為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明實施例中的技術(shù)方案,并使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖對本發(fā)明中技術(shù)方案作進(jìn)一步詳細(xì)的說明。
[0017]本發(fā)明實施例提供的方法,使得硬件模塊包含的是針對具體硬件控制器操作的代碼,該部分的代碼與內(nèi)核代碼獨立開來,單獨編寫、編譯,它不依賴于內(nèi)核的機制,不能使用內(nèi)核提供的函數(shù),它直接控制硬件,編寫時不需要考慮內(nèi)核的架構(gòu),因此對于開發(fā)而言更加簡單。它的運行地址可自己指定,因此可將模塊接口部分的代碼指定放在一個位置,由程序加載模塊獲取接口??梢娫摲椒梢越鉀Q訪問難度和工作難度加大的問題。如圖2所示,該方法包括:
[0018]步驟21,在Linux系統(tǒng)啟動時,Linux內(nèi)核中的程序加載模塊從Linux內(nèi)核外的硬件模塊處獲取將要執(zhí)行操作的硬件的操作接口 ;
[0019]步驟22,將獲取到的操作接口提供給所述Linux內(nèi)核。
[0020]具體的,所述操作接口為預(yù)先設(shè)置的與硬件唯一對應(yīng)的接口。
[0021]具體的,所述程序加載模塊是所述Linux內(nèi)核代碼的一部分,與所述Linux內(nèi)核共同進(jìn)行編譯。
[0022]具體的,所述硬件模塊獨立于所述Linux內(nèi)核。
[0023]如圖3所示,本發(fā)明實施例一種獨立于Linux內(nèi)核的硬件驅(qū)動裝置,所述裝置包括:
[0024]程序加載模塊31,用于在Linux系統(tǒng)啟動時,從Linux內(nèi)核外的硬件模塊處獲取將要執(zhí)行操作的硬件的操作接口 ;并將獲取到的操作接口提供給所述Linux內(nèi)核;
[0025]硬件模塊32,用于執(zhí)行相應(yīng)的硬件操作。
[0026]所述操作接口為預(yù)先設(shè)置的與硬件唯一對應(yīng)的接口。
[0027]所述程序加載模塊是所述Linux內(nèi)核代碼的一部分,與所述Linux內(nèi)核共同進(jìn)行編譯。
[0028]所述硬件模塊獨立于所述Linux內(nèi)核。
[0029]本設(shè)計方案是結(jié)合現(xiàn)有Linux設(shè)備驅(qū)動實現(xiàn)的方式,將對硬件模塊的編程代碼與內(nèi)核代碼獨立開來,使其不依賴于Linux內(nèi)核的機制和各種架構(gòu),從而提高硬件模塊代碼的效率,通過約定硬件模塊與Linux內(nèi)核間通信接口的方式,讓內(nèi)核可以使用硬件模塊的功能,從而實現(xiàn)了一種獨立于Linux內(nèi)核的設(shè)備驅(qū)動的編寫方式。
[0030]本設(shè)計主要針對架構(gòu)中的硬件驅(qū)動程序的編寫方式做了改變,原有的硬件驅(qū)動程序代碼與內(nèi)核代碼在一起編譯,編譯后的模塊的運行地址不固定,對于需要讓硬件模塊的代碼運行在特殊位置的項目來說,這樣處理很不方便。因此將硬件驅(qū)動程序分為兩個部分,一部分獨立于內(nèi)核的硬件模塊代碼組成,另一部分由Linux的程序加載模塊組成。
[0031 ] 程序加載模塊是內(nèi)核代碼的一部分,與內(nèi)核共同編譯,程序加載模塊與硬件模塊約定一組操作接口,在系統(tǒng)啟動過程中,程序加載模塊獲得硬件具體硬件的操作接口,提供給內(nèi)核代碼調(diào)用。
[0032]硬件模塊是針對具體硬件控制器操作的代碼,該部分的代碼與內(nèi)核代碼獨立開來,單獨編寫,編譯,它不依賴于內(nèi)核的機制,不能使用內(nèi)核提供的函數(shù),它直接控制硬件,編寫時不需要考慮內(nèi)核的架構(gòu),因此對于開發(fā)而言更加簡單。它的運行地址可自己指定,因此可將模塊接口部分的代碼指定放在一個位置,由程序加載模塊獲取接口。
[0033]以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
【主權(quán)項】
1.一種獨立于Linux內(nèi)核的硬件驅(qū)動實現(xiàn)方法,其特征在于,所述方法包括: 在Linux系統(tǒng)啟動時,Linux內(nèi)核中的程序加載模塊從Linux內(nèi)核外的硬件模塊處獲取將要執(zhí)行操作的硬件的操作接口 ; 將獲取到的操作接口提供給所述Linux內(nèi)核。2.如權(quán)利要求1所述的方法,其特征在于,所述操作接口為預(yù)先設(shè)置的與硬件唯一對應(yīng)的接口。3.如權(quán)利要求1所述的方法,其特征在于,所述程序加載模塊是所述Linux內(nèi)核代碼的一部分,與所述Linux內(nèi)核共同進(jìn)行編譯。4.如權(quán)利要求1所述的方法,其特征在于,所述硬件模塊獨立于所述Linux內(nèi)核。5.一種獨立于Linux內(nèi)核的硬件驅(qū)動裝置,其特征在于,所述裝置包括: 程序加載模塊,用于在Linux系統(tǒng)啟動時,從Linux內(nèi)核外的硬件模塊處獲取將要執(zhí)行操作的硬件的操作接口 ;并將獲取到的操作接口提供給所述Linux內(nèi)核; 硬件模塊,用于執(zhí)行相應(yīng)的硬件操作。6.如權(quán)利要求5所述的裝置,其特征在于,所述操作接口為預(yù)先設(shè)置的與硬件唯一對應(yīng)的接口。7.如權(quán)利要求5所述的裝置,其特征在于,所述程序加載模塊是所述Linux內(nèi)核代碼的一部分,與所述Linux內(nèi)核共同進(jìn)行編譯。8.如權(quán)利要求5所述的裝置,其特征在于,所述硬件模塊獨立于所述Linux內(nèi)核。
【專利摘要】本發(fā)明涉及通信電子技術(shù)領(lǐng)域,尤其涉及一種獨立于Linux內(nèi)核的硬件驅(qū)動實現(xiàn)方法及裝置,用于解決訪問難度和工作難度加大的問題。該方法包括:在Linux系統(tǒng)啟動時,Linux內(nèi)核中的程序加載模塊從Linux內(nèi)核外的硬件模塊處獲取將要執(zhí)行操作的硬件的操作接口;將獲取到的操作接口提供給所述Linux內(nèi)核??梢娫摲椒梢越鉀Q訪問難度和工作難度加大的問題。
【IPC分類】G06F9/445
【公開號】CN105159696
【申請?zhí)枴緾N201510400360
【發(fā)明人】漆鵬振
【申請人】北京君正集成電路股份有限公司
【公開日】2015年12月16日
【申請日】2015年7月9日