昨天游戏机弄好了,内核也编译安装完毕。接下来可以写第一个驱动了。(不会编译安装内核?)
hello.c
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello, world\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);
Makefile
KERN_DIR = /home/hongjincao/work/linux-2.6.32.63/
all:
make -C $(KERN_DIR) M=`pwd` modules
clean:
make -C $(KERN_DIR) M=`pwd` modules clean
rm -rf modules.order
install:
cp *.ko /nfs/busybox/fs_mini2440
obj-m := hello.o
注:
KERN_DIR 要设置成正确的内核源码路径
install: 对应的命令是将驱动模块复制到一个文件系统,这个文件系统被我的mini2440以网络文件系统的方式挂载。 所以可以忽略此句。
测试:
$ sudo insmod hello.ko
(如果没有任何输出,说明日志级别较低,把hello.c 中的 KERN_ALERT改成 KERN_EMERG即可。解释见这里)
参考:
ldd3
代码已经在我的github上: https://github.com/huntinux/ldd/tree/master/helloworld