国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【嵌入式Linux內(nèi)核驅(qū)動(dòng)】?jī)?nèi)核模塊三要素與驗(yàn)證測(cè)試

這篇具有很好參考價(jià)值的文章主要介紹了【嵌入式Linux內(nèi)核驅(qū)動(dòng)】?jī)?nèi)核模塊三要素與驗(yàn)證測(cè)試。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

內(nèi)核模塊

Linux內(nèi)核模塊是一種可以動(dòng)態(tài)加載和卸載的軟件組件,用于擴(kuò)展Linux操作系統(tǒng)的功能。Linux內(nèi)核本身只包含了必要的核心功能,而內(nèi)核模塊則允許開發(fā)者在運(yùn)行時(shí)向內(nèi)核添加新的功能、驅(qū)動(dòng)程序或文件系統(tǒng)支持,而無需重新編譯整個(gè)內(nèi)核或重新啟動(dòng)系統(tǒng)。

內(nèi)核模塊是一段獨(dú)立的代碼,可以被編譯為共享目標(biāo)文件,并且遵循Linux內(nèi)核的特定接口和標(biāo)準(zhǔn)。它們可以通過加載器(如insmod或modprobe)動(dòng)態(tài)地插入到內(nèi)核中,并通過卸載器(如rmmod)從內(nèi)核中移除。一旦加載到內(nèi)核中,模塊可以訪問和修改內(nèi)核的數(shù)據(jù)結(jié)構(gòu)、函數(shù)和服務(wù),以提供額外的功能或驅(qū)動(dòng)支持。

內(nèi)核模塊在許多方面都非常有用。它們使得開發(fā)者可以通過加載適當(dāng)?shù)哪K來添加硬件設(shè)備的支持,如網(wǎng)卡、聲卡等。此外,內(nèi)核模塊還可以添加新的文件系統(tǒng)支持,以便訪問特定的文件系統(tǒng)類型。開發(fā)者還可以使用內(nèi)核模塊擴(kuò)展內(nèi)核的功能,添加新的系統(tǒng)調(diào)用、網(wǎng)絡(luò)協(xié)議或安全功能等。

使用內(nèi)核模塊的好處是可以減小內(nèi)核的大小,并允許系統(tǒng)僅加載需要的模塊,從而提高系統(tǒng)的性能和靈活性。內(nèi)核模塊也可以動(dòng)態(tài)加載和卸載,使得系統(tǒng)可以根據(jù)需要?jiǎng)討B(tài)地添加或刪除功能,而無需重新啟動(dòng)。

NFS掛載

bootargs啟動(dòng)參數(shù)設(shè)置

  • root=/dev/nfs #指定rootfs所在的設(shè)備是NFS,也就是從NFS啟動(dòng)

  • nfsroot=192.168.9.119:/nfs/rootfs #指定nfs rootfs的位置 (是在ip 是192.168.9.119的機(jī)器上 的/nfs/rootfs目錄下).

    ? 注意/nfs/rootfs必須和前面NFS服務(wù)配置文件設(shè)置一致(見環(huán)境安裝)

  • v3 #ubuntu 20.04,nfs版本的問題需在bootargs 里加v3

  • console=ttyS0,115200 #指定內(nèi)核啟動(dòng)后串口信息從串口0輸出,波特率115200

  • init=/linuxrc #指定第一個(gè)應(yīng)用程序

  • ip=192.168.9.9 #需設(shè)置為板子u-boot自己的IP(通過pri ipaddr查看)


  • ext4load mmc 1:1 0x84000000 /boot/Image //讀ext 文件系統(tǒng)中的 /boot/Image 到內(nèi)存 0x84000000

    ? //這個(gè)鏡像是燒錄在TF卡上的官方鏡像

    ? //fstype mmc 1:1 //查看emmc設(shè)備(flash) 1號(hào)設(shè)備的1號(hào)分區(qū)

  • ext4load mmc 1:1 83100000 /boot/tegra210-p3448-0002-p3449-0000-b00.dtb //和上面一個(gè)道理

  • booti 0x84000000 - 83100000 /*啟動(dòng)Image格式的內(nèi)核 booti,

    引導(dǎo)ARM64 kernel image----Image; bootz,

    引導(dǎo)ARM kernel image----zImage; bootm,

    引導(dǎo)u-boot自定義的kernel image----uImage。

# setenv bootargs  root=/dev/nfs rw nfsroot=192.168.9.119:/nfs/rootfs,v3 console=ttyS0,115200 init=/linuxrc ip=192.168.9.9
# setenv nfsboot ext4load mmc 1:1 0x84000000 /boot/Image \; ext4load mmc 1:1 83100000 /boot/tegra210-p3448-0002-p3449-0000-b00.dtb \; booti 0x84000000 - 83100000
# pri bootcmd /*備份原來的,方便恢復(fù)
   bootcmd=run distro_bootcmd
    */
# set bootcmd run nfsboot  
# saveenv
# run nfsboot  //能nfs掛載成功	

內(nèi)核三要素

  • module_init(led_init); //模塊加載入口聲明
  • module_exit(led_exit); //模塊卸載入口聲明
  • MODULE_LICENSE(“GPL”); //模塊免費(fèi)開源聲明
//led.c
#include <linux/kernel.h>
#include <linux/module.h>

static int led_init(void)
{
    printk("led init yhai 1\n");
    return 0;
}

static void led_exit(void)
{
    printk("led exit\n");
}

module_init(led_init); //模塊加載入口聲明
module_exit(led_exit); //模塊卸載入口聲明
MODULE_LICENSE("GPL"); //模塊免費(fèi)開源聲明
MODULE_AUTHOR("bbcen"); //模塊作者聲明(可選)

Makefile

  • KERNELDIR ?= ~/linux 第二行這里的目錄要選一個(gè)已經(jīng)編譯過的內(nèi)核目錄
  • obj-m := led.o 這里的.o文件名要和.c的文件名一樣
//Makefile
ifeq ($(KERNELRELEASE),)
KERNELDIR ?= ~/linux 
PWD := $(shell pwd)

all:
	$(MAKE) -C $(KERNELDIR) M=$(PWD) modules

clean:
	rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions Module* modules* a.out 

else
    obj-m := led.o
endif

驗(yàn)證測(cè)試

SourceInsight編輯代碼,cp到nfs目錄編譯生成ko文件插入內(nèi)核文章來源地址http://www.zghlxwxcb.cn/news/detail-462377.html

  • make的時(shí)候不要在共享文件夾,會(huì)報(bào)錯(cuò),可以直接復(fù)制到nfs共享目錄下編譯
$ make              //編譯生成 模塊文件 led.ko
$ file led.ko       //查看一下格式,看編譯的是 電腦的, 還是板子的(ARM)

# insmod led.ko     /*加載模塊 
提示: loading out-of-tree module taints kernel    -> 提示內(nèi)核污染,出問題時(shí)你自己驅(qū)動(dòng)的問題,不是內(nèi)核的問題。方便內(nèi)核開放者排查 
可添加   MODULE_INFO(intree, "Y"); 去除提示,但最好別這樣做                
                     */
# lsmod  /*查看已加載模塊列表 -> 檢測(cè)是否已加載
		等效于 cat /proc/modules
     */
# rmmod  led         //卸載模塊     
  
# dmesg      //查看內(nèi)核日志

到了這里,關(guān)于【嵌入式Linux內(nèi)核驅(qū)動(dòng)】?jī)?nèi)核模塊三要素與驗(yàn)證測(cè)試的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包