日韩在线免费播放-日韩在线免费av-日韩在线免费-日韩在线毛片-国产高清不卡视频-国产高清不卡

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > Linux字符設備驅動模型之Linux內核模塊參數

Linux字符設備驅動模型之Linux內核模塊參數 時間:2017-11-06      來源:未知

在Linux內核驅動中,難免的兩個內核模塊之間具有依賴關系,他們或許是通過進行某種傳參,獲取進行函數之間的調用。因為每一個模塊在Linux系統Kernel中是相對獨立的,所以Linux內核驅動模塊之間進行通信就不能直接使用函數調用等方式了。

一、Linux內核模塊參數

在上文中已經給出了一個簡單的Linux內核驅動模塊的模板了。那么我們在這個模板上進行添加代碼。



       

如上圖所示即為所使用代碼。定義全局變量static int  a和static char *str。在Linux內核中使用宏module_param聲明這兩個參數作為內核參數進行傳遞。宏module_param的三個參數分別代表參數變量本身、變量的類型和此參數的使用權限。后當內核模塊插入成功,同樣在static int __init hello_init(void)函數中將這兩個參數進行打印。

將其編譯生成Linux內核驅動文件hello_driver.ko。將其拷貝到板卡根文件系統中。后使用命令insmod hello_driver.ko裝載驅動模塊hello_driver。如下圖:

如上圖,當驅動模塊裝載成功后,會有相應的打印輸出,但這并未體現出Linux內核模塊參數的特點。

 

二、Linux內核模塊參數之間的通信

實際上Linux內核模塊參數的特性應該體現在內核驅動模塊之間的通信或者調用。現在將實現兩個Linux內核驅動模塊,然后進行調用。

模塊一:文件名-----add_sub_driver.c和add_sub_driver.h

add_sub_driver.c

如上圖即為add_sub_driver.c驅動模塊的代碼,其所做的事非常簡單,實現兩個參數之間的和(int add_int(int i, int j))和差(int sub_int(int i, int j))。后通過EXPORT_SYMBOL模塊導出符將相應的函數導入到內核符號表中,可供Linux內核其他驅動模塊進行調用。

add_sub_driver.h文件:

模塊二:文件名-----hello_driver.c和add_sub_driver.h

hello_driver.c文件:

hello_driver.c文件Demo是在上一個實驗上擴展的,如下圖:



       

如上圖,定義兩個全局變量,通過宏module_param聲明其為內核模塊參數傳遞,后通過在hello_driver內核模塊加載時進行調用add_sub_driver內核模塊的實現方法函數,兩個變量作為參數傳遞。實現兩個Linux內核模塊之間的通信。后使用printk將調試信息打印。

編譯管理工具Makefile:

如上圖為編譯所使用的Makefile文件。其可以同時編譯出hello_driver內核模塊hello_driver.ko和add_sub_driver內核模塊add_sub_driver.ko。

三、Linux內核模塊通信驗證

將編譯生成的hello_driver.ko和add_sub_driver.ko文件拷貝到板卡根文件系統中。然后相序插入內核模塊。

方式一:先加載hello_driver.ko后加載add_sub_driver.ko

如上圖可知,當先加載hello_driver.ko時,加載失敗,報錯:不能插入hello_driver.ko,其中包含有無效的參數。

方式二:先加載add_sub_driver.ko后加載hello_driver.ko

如上圖可知,當先加載add_sub_driver.ko后加載hello_driver.ko時,直接加載成功。原因是add_sub_driver.ko驅動模塊中存在hello_driver.ko驅動模塊加載時所做運算的運算方法函數。當add_sub_driver.ko模塊沒有被加載時,加載hello_driver.ko會在不到實現運算的方法,所以加載失敗。

上一篇:Python 網絡爬蟲

下一篇:串口基本原理

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 酷匠| 阮经天新电影| 欧美xxxx做受性欧美蜜臀av| after之后| 外国小哥街头索吻狂魔| 辕门外三声炮歌词| 欧美日韩欧美日韩| 好看图片头像大全| 彻夜之歌为什么被禁| 拔萝卜电影| 《致青春》电影| 饮料超人| 下女们| 洛可电影《妮娜》在线观看| sarajay大白臀ryanconner| 吉泽明步电影| 天才gogogo综艺节目规则| 情剑山河| 四查四看自我剖析材料| 无常电影| 深海蛇难 电影| fate动漫免费观看| 笼中女电影| 汽水音乐官网| 湖北卫视在线直播| 香港九龙图库精选资料| 黄子华最新电影| 派拉蒙影业| 荒岛大逃亡电影在线观看| 房兵| 彭丹最惊艳三部电影在线观看| 新红楼梦2010在线观看免费| 戏王之王演员表| 顺风| 千面魔女| 欧美日本视频在线| 性监狱电影| 猛鬼差馆 电影| 郑艳丽三级| 全能住宅改造王| 相邻数的数学题|