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

时间:2016-07-25 11:42:43

标签: c linux linux-kernel irq

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

1 个答案:

答案 0 :(得分:1)

实际上,如果你已经在内核树中编写了模块,那么它非常简单:

假设您将源代码放在drivers目录中,因此层次结构如下所示: 司机/你好    的Kconfig    Makefile文件    的hello.c

在drivers / Makefile中,您应该添加以下内容:

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

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

source "drivers/hello/Kconfig"

drivers / hello / Kconfig的示例代码:

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

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