0

我正在尝试自定义硬件组件的驱动程序,源代码可以在这里找到:

https://github.com/godspeed1989/zedboard/blob/master/led_drv/driver/myled.c

问题是当我这样做时:

insmod myled.ko

控制台或 dmesg 日志中没有显示任何内容。我正在阅读 Linux Device Driver 3,上面写着你总是必须做的:

module_init(init_function);
module_exit(exit_function);

在源代码中没有它们,而是有:

module_platform_driver(myled_driver);

但是当我用这个函数加载一个模块时,什么都没有打印,而是如果我使用 module_init 和 module_exit 消息出现,这两种指令有什么区别?

4

1 回答 1

0

“但是为什么后一个语句不起作用而第一个没问题?” 第一个方法将通过module_platform_driver宏将驱动程序注册到系统和总线。后一条语句不会将您的驱动程序注册到系统和总线。为此,您需要通过调用 platform_device_register() 在 init_function() 例程中注册驱动程序。

于 2014-11-09T04:14:46.013 回答