开发环境是:Mini 2440,根文件系统采用的是NFS网络根文件系统,宿主机是Fedora 14.
本文所需代码在此处:
http://www.jyguagua.com/bbs/forum.php?mod=viewthread&tid=13
1.首先我们看下hello.c代码,里面定义了模块初始化和退出的方法:
#include <linux/init.h> #include <linux/module.h> 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插件自动生成