Я пытаюсь драйвер для пользовательских аппаратных компонентов, исходный код можно найти здесь:Не удается получить сообщения ядра от модуля
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, в чем разница между этими двумя типами istructions?
Взгляните на https://www.kernel.org/doc/Documentation/driver-model/platform.txt и http://stackoverflow.com/questions/22722520/who-calls-probe-function-in -driver-code Также может быть файл платы, который перечисляет ресурсы по имени. В этом случае параметр .name важен, поскольку он будет использоваться для привязки ресурсов. –
Последний оператор (или макрос) может заменить первые два: см. Lxr.free-electrons.com/source/include/linux/platform_device.h#L214 – sawdust
ok, но почему последнее утверждение не работает, в то время как первое ОК? – Luca