开发环境是:Mini 2440,根文件系统采用的是NFS网络根文件系统,宿主机是Fedora 14.
本文所需代码在此处:
1.首先我们看下hello.c代码,里面定义了模块初始化和退出的方法:
#include
#include
MODULE_LICENSE("Dual BSD/GPL");
static int __init hello_init(void)
{
printk(KERN_EMERG "Hello world\n");
return 0;
}
static void __exit hello_exit(void)
{
printk(KERN_EMERG " Hello world exit\n");
}
module_init(hello_init);
module_exit(hello_exit);
然后看Makefile,我们需要修改下KERNELDIR的值,这个值是Linux的源码,我们需要用到Linux的里面一些头文件等等。
ifeq ($(KERNELRELEASE),)
KERNELDIR ?=/pub/sh_shenqian/src/kernel/linux-2.6.32.2
PWD := $(shell pwd)
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 *.order Module*
.PHONY: modules modules_install clean
else
obj-m := hello.o
endif
2.我们进行修改Makefile之后,然后执行命令:make ,然后生成了一个 hello.ko,我们在Fedora里面,将它拷贝到Mini2440根目录的nfs文件夹,然后在SecureCRT终端,进入根目录,可以看到hello.ko;
3.在终端根目录,我们执行如下命令:
[root@FriendlyARM /]# insmod hello.ko
Hello world
[root@FriendlyARM /]# lsmod
hello 505 0 - Live 0xbf006000
[root@FriendlyARM /]# rmmod hello
Hello world exit
rmmod: module 'hello' not found
[root@FriendlyARM /]#
其中insmod命令意思是插入一个新的模块,lsmod命令我们可以看到当前所加载的模块,rmmod是移除模块。
文章的脚注信息由WordPress的wp-posturl插件自动生成
|2|left
打赏
微信扫一扫,打赏作者吧~