发布网友 发布时间:2022-04-22 01:56
共2个回答
热心网友 时间:2023-07-20 17:06
如何把设备驱动文件添加到Linux内核编译选项配置的menuconfig中:【目的】把一个字符设备驱动文件,添加到内核中,希望编译成模块,而非build-in。【具体步骤】1.首先保证已经有驱动源文件了:as352x_afe_charger.c放在和其他你所要添加的模块放在一个目录下,此处是drivers\i2c\chips下。2.在drivers\i2c\chips\makefile中,添加:obj-$(CONFIG_AS352X_AFE_CHG)+=as352x_afe_charger.o3.在drivers\i2c\chips\Kconfig中,添加如下内容:---------------------无敌分割线-------------------------configAS352X_AFE_CHGtristate"AS352XAFEChargerDriver"dependsonI2C_AS352X&&AS352X_AFEhelpIfyousayyeshereyougetsupportforAS352XAFECharger.Thisdrivercanalsobebuiltasamole.Ifso,themolewillbecalledAS352XAFECharger.---------------------无敌分割线-------------------------解释如下:(1)AS352X_AFE_CHG是自己定义的名字,当然要尽量保证有意义。同时,你会注意到,在上面的makefile中添加的obj-$(CONFIG_AS352X_AFE_CHG)+=as352x_afe_charger.o中的CONFIG_AS352X_AFE_CHG,是CONFIG_加上我们在kconfig下写的config变量。这两个要匹配,才能实现你在menconfig定义的结果,传递到makefile中,以便决定编译的时候是如何编译:不编译/编译进内核/编译成模块(2)tristate表示我此处添加的模块,可以在makeARCH=armmenuconfig中看到的,选择之后:*编译到内核中M编译成模块,即生成XXX.ko不选中,就不编译该文件(3)dependsonI2C_AS352X&&AS352X_AFE是前面自己找到的,表示此编译选项只有当I2C_AS352X和AS352X_AFE都选中,才会出现。当然,如果此模块不依赖于其他模块,则不需要加上这个dependson了。【附录】1.如果设置成M,mole模式,则要用makeARCH=arm编译出as352x_afe_charger.ko而makeARCH=armuImage只能编译内核,而不编译模块。热心网友 时间:2023-07-20 17:06
像这样的话,你可以下载一份原生的内核源码,然后参照厂家给的内核源码并根据对于的开发板进一步的移植。如果想要从0开始写的话,那你就不会问这个问题了。追问谢谢你的回答!