• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    軟件測試中Linux內核模塊介紹

    發布: 2010-11-02 10:27 | 作者: 網絡轉載 | 來源: 領測軟件測試網采編 | 查看: 90次 | 進入軟件測試論壇討論

    領測軟件測試網

    軟件測試中Linux內核模塊介紹

    Linux 內核是一個龐大的工程,做為驅動開發工程師又怎么入手呢,是不是我們每次開發一個模塊程序都要重新編譯內核呢?如果是這樣,那將是一件比較頭痛的事情,還好,聰明的Linux 具有一項比較智能編譯選項,可以將我們開發的驅動模塊做為一個模塊,單獨編譯和單獨加載,卸載。那我們下面來看看Linux內核模塊結構。
      一、模塊加載函數: (必須)

      module_init(initialization_funciton);

      二、模塊卸載函數:   (必須)

      module_exit(cleanup_function);

      三、模塊參數:

      module_param(參數名,參數類型,參數讀/寫權限)

      在模塊插入時: insmod   模塊名   參數名=參數值

      eg:

      static char *book_name = " Linux 設備驅動 ";

      static int num = 4000;

      module_param(num, int , S_IRUGO);

      module_param(book_neme ,charp, S_IRUGO);

      參數類型: byte, short, ushort, int uint, long , ulong, charp(字符指針), bool,

      四、導出符號   (建議有)

      EXPORT_SYMBOL( 符號名/函數名)

      EXPORT_SYMBOL_GPL(符號名 /函數命)

      五、模塊聲明

      MODULE_LICENSE(" Dual BSD/GPL ");

      MODULE_AUTHOR (" XXXXX");

      MODULE_DESCRIPTION("XXXXX DRIVER");

      MODULE_VERSION(" XXXX VERSION");

      MODULE_DEVICE_TABLE(TABLE_INFO);

      MODULE_ALISA(XXXXXXX);

      六、驅動模塊的編譯

      開發好的模塊程序可以和內核一起編譯,也就是將模塊編譯進內核,也可以將模塊單獨編譯成一個獨立的模塊。為了開發的方便性,我們把驅動程序編譯成模塊,怎么編譯呢?編譯成什么格式呢?在Linux 中我們都是借助頂級目錄的Makefile 來編譯我們寫的驅動程序, 我可以自己寫一個Makefile 來編譯我們寫的驅動:

      eg:

      obj-m := xxx.o

      xxx.o-objs := xxx1.o xxx2.o

      make -C "Linux 源碼頂級Makefiel路徑" M = ‘pwd’ modules

      clean:

      rm -rf *.o

      下面看看一個簡單的模塊程序:

      #include <linux/module.h>

      #include <linux/init.h>

      MOUDULE_LICENSE(" Dual BSD/GPL");

      static int hello_init(void)

      {

      printk( KERN_ALERT " hello world enter \n");

      return 0;

      }

      static void hello_exit(void)

      {

      printk(KERN_ALERT " hello world exit \n");

      }

      module_init(hello_init);

      module_exit(hello_exit);

      MODULE_AUTHOR("Larry");

      MODULE_VERSION(" V2.0");

      MODULE_DESCRIPTION(" Hello World test driver");

      當我們編寫完代碼后可以按以下步驟操作:

      A 編譯:   make

      B 在我們的目標板上插入模塊: insmod xxx.ko

      C 退出時執行:               rmmod xxx

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>