首页 文章

将驱动程序编译为内核的一部分,而不是作为模块

提问于
浏览
8

我正在尝试为嵌入式设备创建简约的Linux . 这意味着编译内核和驱动程序的必要性 . 一个驱动程序由它的创建者直接为设备的板写入,因此它不是存储库 . 它可以编译为内核模块 .

但是由于Linux的不可变性以及对内存使用极少的要求,我不想使用模块 . 我想要内核中内置的所有驱动程序 . 所有提供内核的驱动程序都是这样设置的 .

所以我的问题是如何将一个特殊的驱动程序编译到内核?

所有搜索都没有为我提供解决方案 - 所有这些只是关于编译为模块 .

谢谢你的帮助 .

1 回答

  • 7

    您肯定必须将驱动程序源放在内核源代码树中并更新makefile以包含它 . 您可以在步骤1.1到1.3 here中查看其工作原理 .

    如果用户级软件与设备驱动程序进行任何通信,则可能通过系统调用进行 . 搜索驱动程序的源代码,查找 asmlinkage ,如果您发现其中任何一个,那么您必须修改至少两个文件(根据您的内核版本,它们可能略有不同) .

    如果设备驱动程序直接与内核进行任何通信,那么我们就可以了,或者它们是否还需要修改源树中的其他文件 . Linux Kernel Module Programming Guide是这类事物的好资源 .

    祝好运

相关问题