我正在尝试定制硬件组件的驱动程序,可在此处找到源代码:
https://github.com/godspeed1989/zedboard/blob/master/led_drv/driver/myled.c
问题是当我这样做时:
insmod myled.ko
控制台或dmesg日志中未显示任何内容。我正在阅读Linux设备驱动程序3,上面写着您总是必须做的:
module_init(init_function);
module_exit(exit_function);
在源代码中,没有一个,而是:
module_platform_driver(myled_driver);
但是,当我使用此功能加载模块时,什么也不会打印,相反,如果我使用module_init和module_exit消息出现,这两种指令之间有什么区别?
最佳答案
“但是为什么后面的陈述在第一个陈述没问题的时候就不起作用?”
第一个方法将通过module_platform_driver宏将驱动程序注册到系统和总线。
后面的语句不会将您的驱动程序注册到系统和总线。为此,您需要通过调用platform_device_register()在init_function()例程中注册驱动程序。