我正在尝试使用自定义硬件组件的驱动程序,源代码可以在这里找到:
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消息出现,这两种结构有什么区别?
答案 0 :(得分:0)
"但是为什么后者的声明在第一个声明无效的情况下不起作用? " 第一个methond将通过module_platform_driver宏将驱动程序注册到系统和总线。 后面的语句不会将您的驱动程序注册到系统和总线。为此,您需要通过调用platform_device_register()在init_function()例程中注册驱动程序。