新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 嵌入式Linux設備驅(qū)動開發(fā)之:實驗內(nèi)容——test驅(qū)動

嵌入式Linux設備驅(qū)動開發(fā)之:實驗內(nèi)容——test驅(qū)動

作者: 時間:2013-09-13 來源:網(wǎng)絡 收藏

本文引用地址:http://butianyuan.cn/article/257106.htm

/*虛擬設備的file_operations結構*/

staticstructfile_operationstest_fops=

{

.owner=THIS_MODULE,

.read=test_read,

.write=test_write,

.open=test_open,

.release=test_release,

};

/*模塊注冊入口*/

intinit_module(void)

{

intresult;

dev_tdev=MKDEV(major,0);

if(major)

{/*靜態(tài)注冊一個設備,設備號先前指定好,并設定設備名,用cat/proc/devices來查看*/

result=register_chrdev_region(dev,1,TEST_DEVICE_NAME);

}

else

{

result=alloc_chrdev_region(dev,0,1,TEST_DEVICE_NAME);

}

if(result0)

{

printk(KERN_WARNINGTestdevice:unabletogetmajor%dn,major);

returnresult;

}

test_setup_cdev(test_dev,0,test_fops);

printk(Themajorofthetestdeviceis%dn,major);

return0;

}

/*卸載模塊*/

voidcleanup_module(void)

{

cdev_del(test_dev);

unregister_chrdev_region(MKDEV(major,0),1);

printk(Testdeviceuninstalledn);

}

(2)編譯代碼。

虛擬設備的驅(qū)動程序的Makefile如下所示:

ifeq($(KERNELRELEASE),)

KERNELDIR?=/lib/modules/$(shelluname-r)/build/*內(nèi)核代碼編譯路徑*/

PWD:=$(shellpwd)

modules:

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

modules_install:

$(MAKE)-C$(KERNELDIR)M=$(PWD)modules_install

clean:

rm-rf*.o*~core.depend.*.cmd*.ko*.mod.c.tmp_versions

.PHONY:modulesmodules_installclean

else

obj-m:=test_drv.o/*將生成的模塊為test_drv.ko*/

endif

(3)加載和卸載模塊。

通過下面兩個腳本代碼分別實現(xiàn)驅(qū)動模塊的加載和卸載。

加載腳本test_drv_load如下所示:

#!/bin/sh

#驅(qū)動模塊名稱

module=test_drv

#設備名稱。在/proc/devices中出現(xiàn)

device=test_dev

#設備文件的屬性

mode=664

group=david

#刪除已存在的設備節(jié)點

rm-f/dev/${device}

#加載驅(qū)動模塊

/sbin/insmod-f./$module.ko$*||exit1

#查到創(chuàng)建設備的主設備號

major=`cat/proc/devices|awk\$2==$device{print\$1}`

#創(chuàng)建設備文件節(jié)點

mknod/dev/${device}c$major0

#設置設備文件屬性

chgrp$group/dev/${device}

chmod$mode/dev/${device}

卸載腳本test_drv_unload如下所示:

#!/bin/sh

module=test_drv

device=test_dev

#卸載驅(qū)動模塊

/sbin/rmmod$module$*||exit1

#刪除設備文件

rm-f/dev/${device}

exit0

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

linux相關文章:linux教程




評論


相關推薦

技術專區(qū)

關閉