如何在LINUX核心中添加模組–實驗環境READ HAT LINUX 5.0

來源:互聯網
上載者:User

      由於LINUX裝置驅動以核心模組的形式而存在,因此,掌握這一章的內容是編寫任何類型裝置驅動所必須的。在具體的裝置驅動開發中,將驅動編譯為核心模組也有很強的工程意義,因為如果將正在開發中的驅動直接編譯入核心,而開發過程中會不斷修改驅動的代碼,則需要不斷地編譯核心並重啟核心,但是如果編譯為模組,則只需要rmmod並insmod即可,開發效率大為提高。下面說明如何添加、編譯並允許LINUX模組。

      LINUX的模組主要由6部分組成:

      1、模組的載入函數(必須)

            當通過insmod或modprobe命令載入核心模組時,模組的載入函數會自動被核心執行,完成本模組的相關初始化工作。

      2、模組的卸載函數(必須)

            當通過rmmod命令卸載某模組時,模組的卸載函數會自動被核心執行,完成與模組載入函數相反的功能。

      3、模組許可證聲明

            模組許可證(LICENSE)聲明描述核心模組的的許可許可權,如果不聲明LICENSE,模組被載入時,將接到核心被汙染的警告。

      4、模組參數(可選)

            模組參數是模組被載入的時候可以被傳遞給它的值,它本身對應模組內部的全域變數。

      5、模組匯出符號(可選)

            核心模組可以匯出符號(symbol,對應於函數或者是變數),這樣其他模組就可以使用本模組中的變數或者是函數。

      6、模組作者等資訊聲明(可選)

      知道了LINUX模組的組成後,我們來編寫一個簡單的LINUX核心模組hello.c

      在核心原始碼樹形目錄的drivers目錄下建立一個檔案夾,名字為testmod,然後進入此檔案夾中,建立我們的.c源檔案,hello.c

      

       原始碼編寫完之後,接下來我們添加MAKFILE編譯檔案,首先修改drvier目錄下的MAKEFILE檔案,添加testmode目錄到此MAKEFILE

        檔案中,drvier目錄下修改的MAKEFILE檔案如下所示:

       

       然後在testmode目錄下,添加一個MAKEFILE 檔案,檔案的內容為:

      

      做好上面的準備工作之後,我們開始編譯模組檔案,使用如下的編譯命令:

      make   -C   /usr/src/linux-2.6.35.13  M=/usr/src/linux-2.6.35.13/drivers/testmod  modules

     輸入以上命令之後,我們將會成功得到模組檔案,hello.ko

     當模組檔案產生之後,使用命令insmod hello.ko,我們將看到螢幕上列印Hello World enter

     使用命令rmmod hello,ko,我們將在螢幕看到列印Hello World exit.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.