我想添加一个开关/ GPIO中断。我想把它写成内核源码树的一部分。在构建内核映像并部署到我的自定义板之后,它必须出现在proc/interrupts中。我已经写过这个模块,并且如果执行insmod,它正在工作。我不想单独编译,而是希望它成为我的内核树的一部分。 将irq添加到内核源代码的步骤是什么?在内核中添加中断服务程序
回答
其实,如果你写内核树里面的模块,它是非常简单的:
比方说,你把驱动程序目录中的源代码,所以层次如下所示: 驱动器/你好 的Kconfig Makefile文件 的hello.c
在驱动程序/ Makefile中应该增加以下内容:
obj-$(CONFIG-HELLO) += hello/
在驱动器/ Kconfi g您应该添加以下内容:
source "drivers/hello/Kconfig"
示例代码驱动程序/你好/的Kconfig:
config HELLO
tristate "Hello world module"
default n
help
Enable Hello world module support
示例代码驱动程序/你好/ Makefile文件:司机
obj-$(CONFIG_HELLO) += hello.o
示例代码/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文件不是我最终内核映像的一部分吧? –
你不会看到一个.ko文件,因为它现在被内置到内核中,如果你看到hello.o它编译得很好 - 只需在你的probe函数中添加一个pr_err()来查看它是否被调用。 – tomereli
我无法看到/ proc/interrupts中的条目 –
- 1. 中断服务程序8086
- 2. 添加到arraylist中断应用程序
- 3. Linux内核中的中断处理程序的返回值
- 4. 内核模块编程(中断处理程序)
- 5. 添加Amazon简单存储服务(aws-s3)时,Heroku应用程序中断了
- 6. 在Linux内核中跟踪中断
- 7. linux内核中断劫持
- 8. 设备驱动程序和中断服务程序
- 9. 在内核调用中使用断言
- 10. Java中的中断服务例程
- 11. 在.net核心SQL服务器中设置应用程序
- 12. 在linux内核驱动程序中添加属性到平台设备
- 13. 什么都不能在中断服务程序?
- 14. Android服务中断
- 15. BigQuery服务中断?
- 16. 映射Linux内核中的DMA中断
- 17. 在ASP.NET核心应用程序中添加授权
- 18. 在通用应用程序中添加核心数据?
- 19. 如何将服务引用添加到服务应用程序
- 20. 为WCF服务添加Silverlight应用程序的服务引用
- 21. 将Azure Web应用程序添加到App服务环境中
- 22. ISR(中断服务程序)中的信号量同步
- 23. 中断服务程序中的互斥体
- 24. Windows服务多核应用程序
- 25. 在执行器服务中的ThreadPool中添加线程
- 26. 在WPF/Winform应用程序中内存占用不断增加
- 27. 在netbeans中添加tomcat服务器
- 28. 在MariaDB服务器中添加外键
- 29. 在REST服务中添加Atom链接
- 30. 在ASP .NET API中添加Web服务
为什么它是一个我不知道的话题。我已经提到过我有一个工作代码,但我需要将它作为源代码的一部分。 –