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 メッセージが表示される場合、この 2 種類の命令の違いは何ですか?

4

1 に答える 1

0

「しかし、最初のステートメントは問題ないのに、なぜ後者のステートメントが機能しないのですか?」 最初の方法は、module_platform_driver マクロによってドライバーをシステムとバスに登録します。後者のステートメントは、ドライバーをシステムとバスに登録しません。これを行うには、platform_device_register() を呼び出して init_function() ルーチンにドライバーを登録する必要があります。

于 2014-11-09T04:14:46.013 に答える