这个是驱动源码
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
static int hello_drv_open()
{
printk("hello beautiful world!! \n");
return 0;
}
static int hello_drv_write()
{
printk("crul world! \n");
return 0;
}
static struct file_operations hello_drv_fops()=
{
.owner = THIS_MODULE,
.open = hello_drv_open,
.write = hello_drv_write,
}
static int hello_drv_init(void)
{
register_chrdev(260,"hello",&hello_drv_fops);
return 0;
}
void hello_drv_exit()
{
unregister_chrdev(260,"hello");
}
module_init(hello_drv_init);
module_exit(hello_drv_exit);
下面是 测试程序
#include
#include
#include
#include
int main(int argc,char ** argv)
{
int fd;
int val=1;
fd=open("/dev/hello",O_RDWR);
if(fd<0)
printf("your directory can not open \n");
write(fd,&val,4);
return 0;
}
求解
lcdstrongman 于 2011-12-01 22:41:50发表:
看不到打印信息是因为设定的打印级别不够 不能在控制台输出。可以看下Linux驱动资料。另外也可以在insmod 加载后用dmesg -c来查看信息
LeoK12 于 2011-11-12 20:29:43发表:
你确定你的驱动加载成功了吗?
Linux的最大主设备号为255.
static int hello_drv_init(void)
{
register_chrdev(260,"hello",&hello_drv_fops);
return 0;
}
heimanba 于 2011-11-08 17:53:24发表:
printk("hello beautiful world!! \n");
因为printk没有在终端打印。它跟printf不一样。。想了解清楚去看下printk的介绍。。
mw4927 于 2011-11-04 21:19:20发表:
怎么木有人 啊 大侠们 来个啊 我刚才 输入了 dmesg时 就可以显示打印信息了 这是为什么啊
mw4927 于 2011-11-04 16:25:17发表:
现在 发现加载驱动 虽然在/proc/devices 里有hello这个驱动模块了 但貌似不执行 我在入口函数里static int hello_drv_init(void)
{
register_chrdev(260,"hello",&hello_drv_fops);
printk(“hello world \n”);//新添加的
return 0;
}
加载模块时 也不打印信息 怎么回事啊