往android的核心添加驅動(其實就是添加linux核心驅動)

來源:互聯網
上載者:User

向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

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

複製搜尋

複製搜尋
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.