linux内核驱动加载方法


一般的,在测试阶段的设备驱动都是先使用ko文件加载到系统,然后生成设备节点,再使用应用调用测试。但当驱动测试ok,至少是不会有大的改动的时候,再使用ko文件加载设备驱动就显得不太合理了。首先,ko文件需要系统启动之后才能加载(即使写在脚本里),而且驱动多了维护也麻烦。


设备驱动本来就是内核的一部分,所以在测试好的驱动可以直接编译到内核里面。这里我就不再写ko文件怎么编译怎么测试了,直接从设备驱动配置到内核中的方法开始。在此之前,我先说一下,linux内核的编译方式,理解了这个,也就明白备驱动配置到内核里面的方法了。


linux内核的编译是使用Kconfig和Makefile管理的,在最顶层的Makefile会一层层的管理到各个子目录下的Makefile,所以打开linux内核你会看到内核根目录下的有Makefile,drivers下也有Makefile,drivers/char也有Makefile,这是linux自上而下的编译结构。那么另一个问题来了,Makefile怎么知道编译哪些文件呢,drivers里面这么多驱动并不是都要编译的,这就是Kconfig的用处了。


Kconfig对每个文件都有一个配置项,只有这个配置项被选中,Makefile才会编译这个文件。
例如我在drivers/char/Kconfig添加了下面一条配置:
config XILINX_XUART2
tristate “Xilinx use uart2 ip”
depends on ARCH_ZYNQ
default y
—help—
this module driver will support GA uart IP
XILINX_XUART2是配置明,Makefile根据他来确定是否要编译某个文件,tristate后的字符串是在配置内核时我们能看到的配置选项,default是默认的选项,y默认编译,n默认不编译。


Makefile中添加此配置:
obj-$(CONFIG_XILINX_XUART2) += xilinx-xuart2-baud.o

使用make menuconfig来选择配置:
这里写图片描述
当xilinx use uart2 ip被配置上,CONFIG_XILINX_XUART2的值就是y,Makefile也就知道xilinx-xuart2-baud.c文件需要被编译到内核中去。
这里写图片描述


更多内容请关注我的公众号,欢迎转载!

这里写图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值