往android的內核添加驅動及ueventd.rc 修改

向android的內核添加驅動,其實就是向linux內核添加驅動。主要在兩個文件裏添加點信息,一個是Kconfig文件,一個是Makefile文件。比如你添加的驅動你代碼放到drivers目錄下面的XXX目錄,那麼修在該目錄下的Kconfig文件和Makefile文件。

具體的修改方法:

比如我現在修改drivers/staging/android/下的Kconfig文件。

config ANDROID_LOGGER

         tristate "Android log driver"

         default n

 

config ANDROID_RAM_CONSOLE

         bool "Android RAM buffer console"

         default n

 

config ANDROID_RAM_CONSOLE_ENABLE_VERBOSE

         bool "Enable verbose console messages on Android RAM console"

         default y

         depends on ANDROID_RAM_CONSOLE

 

如果我想添加一個驅動,驅動名字爲 somedrv,那麼在這個文件里加入:

config ANDROID_DEMUXER

         bool "Android Somedrv Driver"

         default n

這樣就可以了。這樣在編譯內核的時候,make menuconfig命令之後,會有

Android Somedrv Driver的選擇,選擇它就可以將驅動編進內核。

 

然後在Makefile裏面添加一句obj-$(CONFIG_ANDROID_SOMEDRV)         += somedrv.o。

這樣就修改好了。

 

這樣編譯內核的時候就把驅動編譯進去了,前提編譯前選擇驅動。

 

現在我編譯的內核都是用在模擬器上的,也就是說在qemu上運行內核。那麼編譯的時候的config就用goldfish_defconfig,這樣編譯前就不執行make menuconfig命令而是執行

make goldfish_defconfig(前提是已經將代碼切換到goldfish分支)。

這樣就自動生成.config文件了,不用自己去選擇。但是這樣的.config文件並沒有包含自己添加的驅動,要手動修改.config文件,打開文件,搜索一下字段”somedrv”,會看見:

# CONFIG_ANDROID_SOMEDRV is not set                                       

CONFIG_ANDROID_BINDER_IPC=y

 

Somedrv沒有被包含編譯,手動修改它,修改成CONFIG_ANDROID_SOMEDRV=y, 跟下面那句一樣,這樣就會將這個驅動編進內核。

 

 

這樣編譯出來的內核,已經包含somedrv驅動。

但是這個驅動掛載在/dev下只用所有者權限,這樣程序還是沒有辦法訪問這個設備。這個時候要修改一個文件,主目錄/system/core/rootdir目錄下的ueventd.rc文件,這個文件可以設置驅動掛載到/dev目錄下時的權限和所有者。添加這句

/dev/demuxer               0666   root       root

這樣就可以了。好像這個要重新編譯一下。。


發佈了24 篇原創文章 · 獲贊 6 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章