在實際工作中,通常出現sdk編譯出來的驅動模組,在最小系統中載入失敗,即insmod ***.ko 失敗,「disagree param with the version"等之類的提示。
1.分析核心版本, uname -a 一看,最小系統的核心版本和編譯sdk的核心版本一樣。(因為sdk編譯出來就是乙個驅動ko,以及在驅動的基礎上做了乙個適配庫.so),所以sdk本質上就是乙個核心模組驅動+適配層**。自然在編譯時是需要依賴核心的。納悶了,核心版本一樣,工具鏈也是一套的,編譯出來的ko卻載入失敗。
2.通過分析編譯最小系統的核心和編譯sdk的核心,發現兩個核心雖然版本一樣,但兩個核心配置不一樣。即最小系統的核心**在make menuconfig 對核心做了裁剪。問題有眉目了,可能是最小系統的核心做了裁剪,而sdk編譯的核心沒有同步更新,造成sdk編譯的驅動在最小系統中找不到對應的依賴。
解決辦法:
1.將最小系統的make menucofig所產生的.config 替換sdk編譯的核心原始碼中,做到編譯最新系統的核心原始碼和編譯sdk的核心原始碼 .cofnig一致。
2.ok 問題解決
編譯驅動ko檔案
kern dir work system linux 3.4.2 all make c kern dir m pwd modules clean make c kern dir m pwd modules clean rm rf modules.order obj m hello.o c 選項的作用...
Android 之ko模組的自動載入
最近在做乙個觸控式遙控器,以控制android tv,商提供了觸控板驅動的source code,我將其編譯生成乙個適合我們平台的ko模組。但是有個問題,每次用時,必須手動insmod進去,很麻煩。於是乎,就想盡辦法,搜尋資料,如何將ko模組在系統開機時自動載入,終於成功。步驟如下 1.與andro...
wince驅動載入失敗
這兩天除錯驅動時碰到乙個問題,驅動載入之後,沒有執行init直接就解除安裝了。bool apientry dllmain handle hmodule,dword ul reason for call,lpvoid lpreserved return true 列印log printer dll p...