当前位置: 代码迷 >> 驱动开发 >> 初学者 第一个驱动 hello world
  详细解决方案

初学者 第一个驱动 hello world

热度:139   发布时间:2016-04-28 11:20:31.0
菜鸟求助 第一个驱动 hello world
小弟 在网上找了一个简单的驱动 想在linux上熟悉下 生成hello.ko文件了 但是就是不打印信息 一天了 大师们帮小弟看下巴
驱动源代码:hello.c
#include<linux/init.h>
#include<linux/kernel.h>
#include<linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_EMERG "Hello ,Linux Driver!\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_EMERG "Hello Diver Exit !\n");
}
module_init(hello_init);
module_exit(hello_exit);
Makefile:
obj-m :=hello.o
KERNELDIR :=/usr/src/linux 2.6.25-generic
PWD :=$(shell pwd)
all:
make -C $(KERNELDIR) M=$(PWD) modules

.PHONY :clean
clean:
  rm -rf *.o *ko
操作截屏:
[email protected]:~/test2$ ls
hello.c hello.mod.c hello.o modules.order
hello.ko hello.mod.o Makefile Module.symvers
[email protected]:~/test2$ sudo insmod hello.ko
[email protected]:~/test2$ lsmod
Module Size Used by
hello 692 0 
rfcomm 33811 4 
binfmt_misc 6599 1 
sco 7998 2 
bnep 9542 2 
parport_pc 26058 0 
l2cap 37008 16 rfcomm,bnep
ppdev 5556 0 
nfs 274966 0 



------解决方案--------------------
http://baike.baidu.com/view/3201386.htm
应该能帮到你
------解决方案--------------------
Linux驱动的打印信息必须通过dmesg命令看的。
------解决方案--------------------
难道是printk 中KERN_EMERG 后面没加空格。。。。。
------解决方案--------------------
打印等级能不能提高些啊?
------解决方案--------------------
printk始终是能输出信息的,只不过不一定是到了终端上。可以去
  /var/log/messages这个文件里面去看。
  如果klogd没有运行,只能查看/proc/kmsg
或者使用dmesg,printk的级别最高是<0>
  相关解决方案