Hello, world!/n");。內(nèi)核中共提供了八種不同的日志級(jí)別,在 linux/kernel.h 中有相應(yīng)的宏對(duì)應(yīng)。" />

在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux內(nèi)核模塊介紹,使用Linux模塊的優(yōu)點(diǎn)

嵌入式單片機(jī) ? 來(lái)源:未知 ? 作者:李倩 ? 2018-03-30 15:53 ? 次閱讀

1.1Linux內(nèi)核模塊介紹1.1.1Linux內(nèi)核模塊概述

嵌入式設(shè)備驅(qū)動(dòng)開(kāi)發(fā)中將驅(qū)動(dòng)程序以模塊的形式發(fā)布,更是極大地提高了設(shè)備使用的靈活性——用戶只需要拿到相關(guān)驅(qū)動(dòng)模塊,再插入到用戶的內(nèi)核中,即可靈活地使用你的設(shè)備。

1.1.2使用Linux模塊的優(yōu)點(diǎn)

1. 用戶可以隨時(shí)擴(kuò)展Linux系統(tǒng)的功能。

2. 當(dāng)要修改當(dāng)前Linux系統(tǒng)的驅(qū)動(dòng)時(shí),只需要卸載舊模塊,編譯目標(biāo)驅(qū)動(dòng)模塊,重新安裝插入即可。

3. 系統(tǒng)中如果需要使用新模塊,不必重新編譯內(nèi)核,只要插入相應(yīng)的模塊即可。

4. 減小Linux內(nèi)核的體積,節(jié)省flash。

1.2Linux模塊入門1.2.1模塊相關(guān)命令1.2.1.1 Linux模塊命令詳細(xì)介紹

1. 模塊安裝命令:insmod

insmod xxxx.ko

2. 查看當(dāng)前已經(jīng)安裝模塊:lsmod

lsmod 不需要參數(shù)

3. 模塊卸載命令:rmmod

rmmod xxxxx.ko

4. 查看模塊信息:modinfo

在X86上操作:

[root@zhifachen linux-3.5]# modinfo/root/work/rootfs/home/mod/tiny4412_hello_module.ko

filename: /root/work/rootfs/home/mod/tiny4412_hello_module.ko

license: GPL

depends:

intree: Y

vermagic: 3.5.0-FriendlyARM SMP preempt mod_unload ARMv7 p2v8

[root@zhifachen linux-3.5]#

1.2.1.2 Linux模塊命令測(cè)試示例

注意:模塊的編譯是依賴具體一份源碼,并且這份被編譯過(guò),并且沒(méi)有使用mrproper,distclean清除的源碼工程。

1.2.2使用makemodules編譯內(nèi)核源碼樹(shù)中的模塊

1. 添加內(nèi)核菜單

2. make menuconfig 配置為 M

3. 在頂層目錄終端輸入makemodules

直接make 也可生成模塊文件(.ko),也會(huì)生成zImage,當(dāng)你只想編譯模塊而不想編譯zImage時(shí)候使用 make modules 命令會(huì)更加快速。

1.2.3把內(nèi)核源碼樹(shù)中模塊源文件編譯到內(nèi)核映像中

如果不需要配置菜單只想編譯代碼到內(nèi)核zImage,Makefile可以這樣寫(xiě)obj-y += xxxx.o

如果不需要配置菜單只想編譯代碼為外部模塊,Makefile可以這樣寫(xiě) obj-m+= xxxx.o

1.2.4在內(nèi)核源碼中添加自定義的模塊并且編譯1.2.5外部獨(dú)立Makefile編譯模塊

在驅(qū)動(dòng)開(kāi)發(fā)階段,接觸到新驅(qū)動(dòng)機(jī)率非常高,如果都要去修改內(nèi)核源碼Makefile, 太過(guò)于繁雜,也不利于移植,實(shí)際開(kāi)發(fā)中會(huì)使用另外一種方法來(lái)編譯模塊文件。

1.2.5.1 Linux內(nèi)核模塊代碼文件模板

可以直接復(fù)制內(nèi)核源碼中自帶的示例模板來(lái)測(cè)試:drivers/char/tiny4412_hello_module.c

1.2.5.2 Linux內(nèi)核模塊編譯Makefile模板

編譯模塊Makefile文件:

obj-m += xyd_hello_module.o
all:
@make -C /root/work/linux-3.5/ M=$(PWD) modules
@rm -rf *.o *.mod.c modules.order Module.symvers *~ *.bak
clean:
@rm -rf *.o *.mod.c modules.order Module.symvers *.ko *~ *.bak

make -C $(KDIR)M=$(PWD) modules

M=選項(xiàng)讓該Makefile在構(gòu)造modules目標(biāo)之前返回到模塊源代碼目錄,然后modules目標(biāo)指向obj-m變量中設(shè)定的模塊;在上面的例子中,我們將該變量設(shè)置成了module.o。

上面的清除規(guī)則是自己寫(xiě)的,也可利用內(nèi)核Makefile清除規(guī)則來(lái)清編譯生成目標(biāo)文件,改進(jìn)后代碼:

obj-m += xyd_hello_module.o
# x86 編譯時(shí)候使用: uname -r 得到當(dāng)前內(nèi)核的版本號(hào)
#KDIR := /lib/modules/`uname -r`/build
#arm 編譯時(shí)候使用
KDIR :=/root/work/linux-3.5
all:
@make -C $(KDIR) M=$(PWD) modules
clean:
@make -C $(KDIR) M=$(PWD) modules clean
@rm -f *.ko.unsigned *~

1.1.1Linux內(nèi)核printk函數(shù)

內(nèi)核中不能使用printf函數(shù)輸出信息,要使用printk函數(shù),這個(gè)函數(shù)有輸出等級(jí)控制的。

內(nèi)核通過(guò) printk() 輸出的信息具有日志級(jí)別,日志級(jí)別是通過(guò)在 printk() 輸出的字符串前加一個(gè)帶尖括號(hào)的整數(shù)來(lái)控制的,如 printk("<6>Hello, world!/n");。內(nèi)核中共提供了八種不同的日志級(jí)別,在 linux/kernel.h 中有相應(yīng)的宏對(duì)應(yīng)。

#defineKERN_EMERG "<0>" /* system is unusable 系統(tǒng)不可用*/

#defineKERN_ALERT "<1>" /* action must be takenimmediately警報(bào),必須立即采取行動(dòng)*/

#define KERN_CRIT "<2>" /*critical conditions臨界狀態(tài) */

#defineKERN_ERR "<3>" /* error conditions 錯(cuò)誤狀態(tài)*/

#defineKERN_WARNING "<4>" /* warningconditions警告狀態(tài)*/

#defineKERN_NOTICE "<5>" /* normal but significant正常的,但引人注目*/

#define KERN_INFO "<6>" /*informational 信息*/

#defineKERN_DEBUG "<7>" /* debug-level messages調(diào)試等級(jí)信息 */

可以通過(guò)查看/proc/sys/kernel/printk文件內(nèi)容知道設(shè)置信息。

[root@ChenZhiFa/]# cat /proc/sys/kernel/printk

7 4 1 7

可以通過(guò)echo命令修改種個(gè)等級(jí):

[root@ChenZhiFa/]# echo 4 4 1 7 > /proc/sys/kernel/printk

說(shuō)明:直接使用printk( “kkkk”);這樣沒(méi)有指明等級(jí),這種未明確指定。

只有等級(jí)比較當(dāng)前終端等級(jí)高才會(huì)在終端上顯示出來(lái)。

以下進(jìn)行X86 系統(tǒng)上的測(cè)試(在純字符界面下測(cè)試有效,在圖形界面中是無(wú)效)

在圖形界面系統(tǒng)中按Ctl + Alt + F2(F2~F6鍵其中一個(gè),不同電腦可能不同),可以進(jìn)入到純字符界面,要返回按Ctl +Alt + F1(不同電腦可能不同)

printk --- 不支持浮點(diǎn)數(shù),實(shí)際上驅(qū)動(dòng)程序也不支持浮點(diǎn)運(yùn)算。所有浮點(diǎn)運(yùn)算應(yīng)該放在用戶空間。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 模塊
    +關(guān)注

    關(guān)注

    7

    文章

    2783

    瀏覽量

    49592
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11462

    瀏覽量

    212803

原文標(biāo)題:1.1 Linux內(nèi)核模塊介紹1.1.1 Linux內(nèi)核模塊概述

文章出處:【微信號(hào):qrsworld,微信公眾號(hào):嵌入式單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    linux 了解內(nèi)核模塊的原理 《Rice linux 學(xué)習(xí)開(kāi)發(fā)》

    內(nèi)核模塊是一種沒(méi)有經(jīng)過(guò)鏈接,不能獨(dú)立運(yùn)行的目標(biāo)文件,是在內(nèi)核空間中運(yùn)行的程序。
    的頭像 發(fā)表于 07-16 10:08 ?4870次閱讀
    <b class='flag-5'>linux</b> 了解<b class='flag-5'>內(nèi)核模塊</b>的原理 《Rice <b class='flag-5'>linux</b> 學(xué)習(xí)開(kāi)發(fā)》

    Linux 內(nèi)核模塊工作原理及內(nèi)核模塊編譯案例

    一個(gè)內(nèi)核模塊至少包含兩個(gè)函數(shù),模塊被加載時(shí)執(zhí)行的初始化函數(shù)init_module()和模塊被卸載時(shí)執(zhí)行的結(jié)束函數(shù)cleanup_module()。
    發(fā)表于 09-23 09:39 ?2712次閱讀
    <b class='flag-5'>Linux</b> <b class='flag-5'>內(nèi)核模塊</b>工作原理及<b class='flag-5'>內(nèi)核模塊</b>編譯案例

    詳解Linux內(nèi)核模塊的編寫(xiě)方法

    Linux 系統(tǒng)為應(yīng)用程序提供了功能強(qiáng)大且容易擴(kuò)展的 API,但在某些情況下,這還遠(yuǎn)遠(yuǎn)不夠。與硬件交互或進(jìn)行需要訪問(wèn)系統(tǒng)中特權(quán)信息的操作時(shí),就需要一個(gè)內(nèi)核模塊
    的頭像 發(fā)表于 05-11 08:55 ?3937次閱讀

    Linux內(nèi)核模塊間通訊方法

    Linux內(nèi)核模塊間通訊方法非常的多,最便捷的方法莫過(guò)于函數(shù)或變量符號(hào)導(dǎo)出,然后直接調(diào)用。默認(rèn)情況下,模塊模塊之間、模塊
    發(fā)表于 06-07 16:23 ?2971次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核模塊</b>間通訊方法

    RZ/G2L Linux系統(tǒng)如何添加新的內(nèi)核模塊

    RZ/G2L Linux系統(tǒng)的鏡像基于yocto構(gòu)建,本篇介紹如何添加新的內(nèi)核模塊
    的頭像 發(fā)表于 01-04 12:19 ?2211次閱讀
    RZ/G2L <b class='flag-5'>Linux</b>系統(tǒng)如何添加新的<b class='flag-5'>內(nèi)核模塊</b>

    Linux內(nèi)核模塊程序結(jié)構(gòu)

    Linux設(shè)備驅(qū)動(dòng)會(huì)以內(nèi)核模塊的形式出現(xiàn),因此,學(xué)會(huì)編寫(xiě)Linux內(nèi)核模塊編程是學(xué)習(xí)Linux設(shè)備驅(qū)動(dòng)的先決條件。一個(gè)
    發(fā)表于 05-27 09:36

    Linux內(nèi)核模塊簡(jiǎn)介

    Linux內(nèi)核模塊簡(jiǎn)介http://bbs.edu118.com/forum.php?mod=viewthread&tid=388&fromuid=204(出處: 信盈達(dá)IT技術(shù)社
    發(fā)表于 08-22 09:22

    高效學(xué)習(xí)Linux內(nèi)核——內(nèi)核模塊編譯

    內(nèi)核是世界上最大的開(kāi)源項(xiàng)目之一,但是內(nèi)核是什么,它用于什么?一、什么是linux內(nèi)核模塊內(nèi)核是與計(jì)算機(jī)硬件接口的易替換軟件的最低級(jí)別。它負(fù)
    發(fā)表于 09-24 09:11

    Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解》第4章、Linux內(nèi)核模塊

    Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解》第4章、Linux內(nèi)核模塊
    發(fā)表于 10-27 14:15 ?0次下載
    《<b class='flag-5'>Linux</b>設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解》第4章、<b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核模塊</b>

    什么是內(nèi)核模塊?如何編寫(xiě)一個(gè)簡(jiǎn)單的模塊

    內(nèi)核模塊Linux內(nèi)核向外部提供的一個(gè)插口,其全稱為動(dòng)態(tài)可加載內(nèi)核模塊(Loadable Kernel Module,LKM),我們簡(jiǎn)稱為模塊
    發(fā)表于 08-24 17:15 ?20次下載

    什么是 Linux 內(nèi)核模塊?

    lsmod 命令能夠告訴你當(dāng)前系統(tǒng)上加載了哪些內(nèi)核模塊,以及關(guān)于使用它們的一些有趣的細(xì)節(jié)。
    的頭像 發(fā)表于 08-09 17:01 ?3457次閱讀

    嵌入式LINUX系統(tǒng)內(nèi)核內(nèi)核模塊調(diào)試教程

    本文檔的主要內(nèi)容詳細(xì)介紹的是嵌入式LINUX系統(tǒng)內(nèi)核內(nèi)核模塊調(diào)試教程。
    發(fā)表于 11-06 17:32 ?21次下載
    嵌入式<b class='flag-5'>LINUX</b>系統(tǒng)<b class='flag-5'>內(nèi)核</b>和<b class='flag-5'>內(nèi)核模塊</b>調(diào)試教程

    如何在Petalinux創(chuàng)建Linux內(nèi)核模塊

    --enable”,能創(chuàng)建Linux內(nèi)核模塊,包括c源代碼文件,Makefile,Yocto的bb文件。相關(guān)文件放在目錄“ project-spec / meta-user / recipes-modules”中
    的頭像 發(fā)表于 03-02 11:10 ?4666次閱讀

    嵌入式LINUX系統(tǒng)內(nèi)核內(nèi)核模塊調(diào)試

    嵌入式LINUX系統(tǒng)內(nèi)核內(nèi)核模塊調(diào)試(嵌入式開(kāi)發(fā)和硬件開(kāi)發(fā))-嵌入式LINUX系統(tǒng)內(nèi)核內(nèi)核模塊
    發(fā)表于 07-30 13:55 ?10次下載
    嵌入式<b class='flag-5'>LINUX</b>系統(tǒng)<b class='flag-5'>內(nèi)核</b>和<b class='flag-5'>內(nèi)核模塊</b>調(diào)試

    Linux內(nèi)核模塊參數(shù)傳遞與sysfs文件系統(tǒng)

    函數(shù)傳參的內(nèi)核傳參機(jī)制,編寫(xiě)內(nèi)核程序時(shí)只要實(shí)現(xiàn)傳參接口,用戶在加載內(nèi)核模塊時(shí)即可傳入指定參數(shù),使得內(nèi)核模塊更加靈活。
    發(fā)表于 06-07 16:23 ?2430次閱讀
    主站蜘蛛池模板: 真人一级一级特黄高清毛片 | 真实女人寂寞偷人视频 | 四虎国产永久在线精品免费观看 | 久久婷人人澡人人爽 | 成在线人视频免费视频 | 天天操操操操操操 | 网www天堂资源在线 网红和老师啪啪对白清晰 网络色综合久久 | 午夜在线视频观看 | 男人的亚洲天堂 | 成人18毛片 | 18毛片| 又黄又爽又猛大片录像 | 欧美综合色区 | 淫欧美| 久久六月丁香婷婷婷 | 日本高清视频在线www色 | 亚洲国产日韩精品怡红院 | 国内精品视频在线 | 伊人网成人 | 艹久久 | 日日噜噜夜夜狠狠va视频 | 老汉影视永久免费视频 | 亚洲一区二区三区四 | 免费一级毛片在线播放 | 特黄特色三级在线观看 | 91桃色国产线观看免费 | 在线免费看视频 | 亚洲免费视频网址 | 国产成人精品本亚洲 | 俺来也婷婷 | 男男生子大肚play做到生 | 亚洲成人黄色 | 日本一区二区三区免费看 | 五月sese| 日韩一区二区视频在线观看 | 免费观看在线aa | 亚洲综合在线一区 | 欧美大尺度aaa级毛片 | 国产伦一区二区三区免费 | 高清欧美日本视频免费观看 | 午夜官网 |