adolf110 发表于 2011-7-2 14:39:32

疯了~2天了,书上拷贝的驱动一直无法打开。。

现在学习linux驱动。上来就在电脑上的linux写最简单的驱动。
在驱动中的open函数只有个printk语句。
但在应用程序中调用open函数时。。。返回总是-1.这是为什么?



下面是我加载测试过程。
我在驱动程序中用的主设备号是240.
insmod call_dev.ko
mknod /dev/call c 240 0
./call2(应用程序名字)

billowtust 发表于 2011-7-2 16:50:19

最简单的hello world程序吧?

通常这么简单的例程是没有open函数与close函数的,只有init, exit

通常printk在init函数和exit函数中,只要运行了insmod driver.ko,就可以看到打印信息的

如果你非要在写段用户程序来OPEN它,那肯定有问题了

再有,如果你是在PC上调,终端没有显示是很正常的,因为PC终端不是所有的内核MESSAGE都显示的,得用dmesg | tail 看最末尾的信息

adolf110 发表于 2011-7-3 19:40:16

回复【1楼】billowtust
-----------------------------------------------------------------------

我用的是一个比hello,world复杂一点的程序,所有的fileoperation里的基本操作都有,但都只是一个printk函数。这个程序比较完整,算是一个演示吧。我驱动模块加载是成功的。我用dmesg能够看到。但是我在自己编写的应用程序中。open函数总是失败。我用了一个printf查看了。后来我用gdb看应用程序。open函数返回的fd总是-1.根本没有成功。一直找不到这个问题的根本原因。。
页: [1]
查看完整版本: 疯了~2天了,书上拷贝的驱动一直无法打开。。