スイッチ/ GPIO割り込みを追加しようとしています。カーネルソースツリーの一部として書きたいと思います。カーネルイメージをビルドしてカスタムボードにデプロイしたら、proc/interruptsで表示する必要があります。私はすでにモジュールを書いており、insmodを実行している場合は動作しています。別々にコンパイルするのではなく、カーネルツリーの一部にしたいと思っています。 カーネルソースにirqを追加する手順は何ですか?あなたはカーネルツリーにモジュールを書かれている実際にはifカーネルで割り込みサービスルーチンを追加する
答えて
は、非常に簡単です:
あなたはdriversディレクトリ内のソースコードを置くとしましょう、次のようになって階層は見えます: ドライバー/ hello kconfigを をMakefileの hello.cの次を追加する必要がありますドライバ/ Makefileで
:
ドライバー/ Kconfiでobj-$(CONFIG-HELLO) += hello/
source "drivers/hello/Kconfig"
ドライバのサンプル・コードを/ハロー/ kconfigを:あなたは以下を追加する必要がありますグラムのドライバーのための
obj-$(CONFIG_HELLO) += hello.o
サンプルコード:ドライバ/こんにちは/ Makefileのための
config HELLO
tristate "Hello world module"
default n
help
Enable Hello world module support
サンプルコード/hello.c:
#include <linux/module.h>
#include <linux/moduleparam.h>
...
...
static int __init hello_init(void)
{
...
}
static void __exit hello_exit(void)
{
...
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_AUTHOR("Obi One Kenoby");
MODULE_DESCRIPTION("Hello Driver");
MODULE_LICENSE("GPL");
MODULE_VERSION("1.0");
make menuconfigでhelloモジュールを見ることができるはずです。モジュールには 'm'を、組み込みには '*'を選択します。module_init/module_exitマクロは両方のオプションで動作します。
こんにちは、私は同じことをしました、そして、私は問題なしでそれをコンパイルできるmenuconfigで見ることができます。今問題は、.koエントリがmodue.orderとmodule.builtinに存在しないことです。メインのmodule.builtinファイルにエントリがない場合、.koファイルは最終的なカーネルイメージの一部ではありません。 –
コンパイルされたhello.oがあれば、カーネルに組み込まれているため、.koファイルは表示されません。プローブ関数にpr_err()を追加するだけで呼び出されます。 – tomereli
私は/ proc/interruptsのエントリを見ることができません –
- 1. C++の割り込みサービスルーチン
- 2. サービスルーチンと割り込みサービスルーチンの違いは何ですか?
- 3. 割り込みサービスルーチン内のmutexes
- 4. msp430シリーズマイクロコントローラの割り込みサービスルーチンの名前は何ですか?
- 5. pic18で割り込みサービスルーチンを行う方法
- 6. ftraceはどのように割り込みサービスルーチンを追跡しますか?
- 7. ISR(割り込みサービスルーチン)でのセマフォのような同期
- 8. 割り込みサービスルーチンには何もありませんか?
- 9. 割り込みサービスルーチンからの奇妙な動作
- 10. 8051で外部割り込みサービスルーチン(ISR)を終了する方法
- 11. PCIe割り込み処理用Linuxカーネル
- 12. 組み込みのDOSでx86リアルモードのキーボード割り込みサービスルーチンを設定してリセットする
- 13. 割り込みサービスルーチンのためのx86_64のレジスタを保存するには?
- 14. Linuxカーネルで割り込みをトレースする
- 15. ピン設定ファイルに割り込みを追加するATmega 2560
- 16. 割り込みサービスルーチンにほとんどのシステムコールが含まれない理由
- 17. arduino割り込みサービスルーチン内で関数ポインタを使用してISRを変更する方法は?
- 18. タイマ割り込みサービスルーチンが10マイクロ秒以上の速度で動作しているホストコンピュータ
- 19. getTimeで動作する割り込み/割り込み関数の実行
- 20. x86アーキテクチャ用のLinuxカーネルでの割り込み処理コードの位置
- 21. 畳み込みニューラルネットワーク入力に追加値を追加する?
- 22. Arduinoでの割り込み
- 23. 割り込みsuper.onCreate()
- 24. TRAP、ソフトウェア割り込みとハードウェア割り込みの違いは?
- 25. 割り込みフラグと割り込み保留中のビットstm32
- 26. 割り込みハンドラでargsを渡す
- 27. 仮想アドレス空間を処理する割り込みベクタテーブルを追加するのは誰ですか?
- 28. 他の割り込みベクタ内の割り込みベクタを呼び出す
- 29. モジュール.Cをlinuxカーネルに追加する
- 30. BSDカーネルにスタックレススレッドを追加する?
なぜ私は知らないオフトピックです。私は作業コードを持っていると言いましたが、ソースコードの一部として含める必要があります。 –