今天看了《linux裝置驅動開發詳解》的第四章模組和第五章檔案。
學長給了乙個的任務:刪除linux核心中的dm9000的驅動模組,重新編譯核心。
這篇文章現在寫肯定還不夠完善,我之後我會再補全,所以先打乙個「@」的標記。
首先,我從檔案中找到dm9000驅動模組所在位置,在~/drives/net下。於是,我從linux核心根目錄下檢視makefile,逐級向下直到找到net資料夾下的makefile檔案時,我發現其呼叫了dm9000,並在kconfig中檢視其是否包含了dm9000資源,發現並沒有。。。所以我僅做了如下修改:
obj-$(config_dm9000) += dm9000.o改為
#obj-$(config_dm9000) += dm9000.o
就是注釋掉了。。。
然後我在linux核心根目錄下執行以下命令,將核心編譯成新的映像檔案。
make cleanmake menuconfig
make zimage
make modules
arm平台上除錯,顯示成功。
Linux核心驅動模組學習
ko檔案在是elf excutable and link format 格式,是一種可重定位的目標檔案。在編譯驅動模組時,我們在makefile中用obj m o來指定生成核心驅動模組檔案,即.ko檔案。首先insmod會通過檔案系統將ko讀到使用者空間的一塊記憶體中,然後執行系統呼叫sys ini...
Linux 驅動開發核心模組的新增
寫這篇部落格的目的是做一下筆記,便於自己查閱。首先給出核心模組源 當然是最最簡單的helloworld。include include module license gpl gpl 開源協議 static inthello init void static voidhello exit void m...
linux驅動學習 二 核心模組
因為linux 核心的整體結構非常龐大,包含的元件非常多,如何使用需要的元件呢?有一種方法是把所有的元件都編譯進核心檔案 zimage 或bzimage 但是這樣會產生兩個問題 一是生成的核心檔案過大 二是如果要新增或刪除某乙個元件,需要重新刪除編譯整個核心。於是我們需找另外一種機制讓核心檔案本身不...