您的位置:首页 > 运维架构 > Linux

linux设备驱动的编译与下载

2014-10-23 14:37 113 查看
这里我们以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一下就可以了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: