linux设备驱动的编译与下载

这里我们以mini2440为例来说明驱动程序的编译与下载

ƒLinux内核有2种加载驱动程序的方法:
 ƒ 静态:
      Linux系统启动时,通过代码自身加载模块. 这种方式称为静态编译入内核,  驱动程序开发完毕后一般使用这种方式.
ƒ 动态:
      Linux系统启动后,通过insmod 等命令加载模块. 这种方式称为动态加载, 驱动程序开发调试过程中一般使用这种方式.

方法1 :驱动程序以驱动模块加载(动态)

1.将完成的驱动程序放入相应的内核驱动文件下:如字符设备放入drivers/char目录下

2.将模块加入内核代码树,这样模块才可以在内核空间运行。并做相应的配置。

  第一步:编译配置文件Kconfig,加入驱动选项,使之在make menuconfig 的时候出现

   打开linux-2.6.32.2/drivers/char/Kconfig文件,添加如图所示:


保存退出,这时在linux-2.6.32.2 目录位置运行一下make menuconfig就可以在Device Drivers Æ Character devices  菜单中看到刚才所添加的选项了,按下空格键将会选择为<M>,此意为要把该选项编译为模块方式;再按下空格会变为<*> ,意为要把该选项编译到内核中,在此我们选择<M>,如图:


第二步:我们虽然可以在配置内核的时候进行选择,但实际上此时执行编译内核还是不能把mini2440_hello_module.c 编译进去的,还需要在Makefile中把内核配置选项和真正的源代码联系起来,打开linux-2.6.32.2/driver s/char/Makefile,如图添加并保存退出:


第三步:这时回到linux-2.6.32.2 源代码根目录位置,执行make modules ,就可以生成我们所需要的内核模块文件mini2440_hello_module.ko了

至此,我们已经完成了模块驱动的编译。


方法2 :静态

静态和动态的不同之处在于在make menuconfig 中选择<*>而不是<M>,最后一步不是回到linux-2.6.32.2 源代码根目录位置,执行make modules ,而是执行make zImage



最简单的莫过于写Makefile文件,一个Makefile文件解决了所有问题,Make一下就可以了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值