繁体   English   中英

在内核中添加中断服务程序

[英]Adding Interrupt service routine in kernel

我正在尝试添加一个开关/ GPIO中断。 我想将其编写为内核源代码树的一部分。 构建内核映像并部署到我的自定义板后,它必须以proc / interrupts的形式出现。 我已经写了模块,如果执行insmod,它就可以正常工作。 与其单独编译,我不希望它成为内核树的一部分。 将irq添加到内核源代码的步骤是什么。

实际上,如果您已在内核树中编写了模块,则非常简单:

可以说您将源代码放置在drivers目录中,因此层次结构如下所示:drivers / hello Kconfig Makefile hello.c

在驱动程序/ Makefile中,应添加以下内容:

obj-$(CONFIG-HELLO) += hello/

在drivers / Kconfig中,应添加以下内容:

source "drivers/hello/Kconfig"

驱动程序/ hello / Kconfig的示例代码:

config HELLO
tristate "Hello world module"
default n
help
   Enable Hello world module support

驱动程序/ hello / Makefile的示例代码:

obj-$(CONFIG_HELLO) += hello.o

drivers / 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宏可同时使用这两个选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM