我正在尝试为嵌入式设备创建简约的Linux . 这意味着编译内核和驱动程序的必要性 . 一个驱动程序由它的创建者直接为设备的板写入,因此它不是存储库 . 它可以编译为内核模块 .
但是由于Linux的不可变性以及对内存使用极少的要求,我不想使用模块 . 我想要内核中内置的所有驱动程序 . 所有提供内核的驱动程序都是这样设置的 .
所以我的问题是如何将一个特殊的驱动程序编译到内核?
所有搜索都没有为我提供解决方案 - 所有这些只是关于编译为模块 .
谢谢你的帮助 .
您肯定必须将驱动程序源放在内核源代码树中并更新makefile以包含它 . 您可以在步骤1.1到1.3 here中查看其工作原理 .
如果用户级软件与设备驱动程序进行任何通信,则可能通过系统调用进行 . 搜索驱动程序的源代码,查找 asmlinkage ,如果您发现其中任何一个,那么您必须修改至少两个文件(根据您的内核版本,它们可能略有不同) .
asmlinkage
如果设备驱动程序直接与内核进行任何通信,那么我们就可以了,或者它们是否还需要修改源树中的其他文件 . Linux Kernel Module Programming Guide是这类事物的好资源 .
祝好运
1 回答
您肯定必须将驱动程序源放在内核源代码树中并更新makefile以包含它 . 您可以在步骤1.1到1.3 here中查看其工作原理 .
如果用户级软件与设备驱动程序进行任何通信,则可能通过系统调用进行 . 搜索驱动程序的源代码,查找
asmlinkage
,如果您发现其中任何一个,那么您必须修改至少两个文件(根据您的内核版本,它们可能略有不同) .如果设备驱动程序直接与内核进行任何通信,那么我们就可以了,或者它们是否还需要修改源树中的其他文件 . Linux Kernel Module Programming Guide是这类事物的好资源 .
祝好运