2014-10-01 339 views
0

我为beagle-bone写了一个基本字符驱动程序,该驱动程序通过使用printk的workqueue和tasklet在1秒间隔内打印两条消息。当驱动程序内置驱动程序时,驱动程序不工作

首先,我将它建立为模块驱动程序,生成.ko文件,使用insmod命令加载它,并在通过dmesg查看时打印即将到来。

然后,我建立内置驱动程序并加载uImage,启动后我检查了dmesg打印。但没有印刷品。

在config文件

CONFIG_MY_DRIVER=y 

因此,它作为内置的驱动程序,我认为。

我怎样才能确认它是否真的建立在最终的形象。建设时没有错误报告。

是否有任何额外的步骤来加载构建驱动程序。

如果我在任何基础知识上出错,请原谅我。我对Linux非常陌生。

+0

如果您肯定驱动程序已编译并链接到内核中,请参阅[此答案](http://stackoverflow.com/questions/12865054/init-function-invocation-of-drivers-compiled- into-kernel/12869195#12869195)关于如何使用“initcall_debug”来检查你的驱动程序的init例程是否被调用。 – sawdust 2014-10-01 17:44:49

回答

0

这意味着,您添加它可能在某处的Kconfig文件: “CONFIG_MY_DRIVER = Y”

,但是,你必须添加它来Makefile文件?它的工作原理就是这样,然后在构建Image的过程中,内核将所有这些指令“CONFIG_ *”都取出来,并使用它从Makefile构建特定的源文件。

例子:

cat fs/ext2/Makefile 
ext2-$(CONFIG_EXT2_FS_SECURITY) += xattr_security.o 

cat fs/ext2/Kconfig 
config EXT2_FS_SECURITY 
    bool "Ext2 Security Labels" 
    depends on EXT2_FS_XATTR 

所以在这个上面的例子,如果你的源文件是xattr_security.c那么你应该得到在FS/EXT2目录xattr_security.o文件,当这是建立。如果您的文件是在编译过程中编译的,您还应该看到它。

+0

我也在make文件中做了修改...但是仍然不能正常工作.... – 2014-10-01 17:24:26

+0

你能告诉我所有的配置吗?也许你不只是把它包含在其他的Makefile中。 .o文件是否创建? – RaFD 2014-10-01 18:29:30

+1

感谢您的帮助。我刚刚在init函数中放了一个内核打印,并且打印即将到来,显示设备正在注册。我会用一些内核打印检查更多内容,并且很快就会更新 – 2014-10-07 04:24:35

相关问题