如何将linux驱动程序添加到内核中

如何将linux驱动程序添加到内核中,第1张

工具/原料

Ubuntu12.04 *** 作系统和测试驱动程序(beep_arv.c)

方法/步骤

在介绍2种方法前,必须知道的知识点:

1.关联文件Makefile:

Makefile:分布在Linux内核源代码中的Makefile用于定义Linux内核的编译规则;

2.管理文件Kconfig:

给用户提供配置选择的功能;

配置工具:

1)包括配置命令解析器;

2)配置用户界面;menuconfig || xconfig;

3)通过脚本语言编写的;

3.

---tristate 代表三种状态:1.[ ]不选择,2.[*]选择直接编译进内核,加载驱动到内核里,3.[m]动态加载驱动;

---bool 代表两种状态,1.[ ]不选择,2.[*]选择;

---"Mini2440 module sample"这个是在make menuconfig时刷出的提示字符;

---depends on MACH_MINI2440 这个配置选项出现在make menuconfig菜单栏下,在内核配置中必须选中、MACH_MINI2440;

---default m if MACH_MINI2440 这个如果选中了MACH_MINI2440,默认是手

动加载这个驱动;

help:提示帮助信息;

在了解了基本的知识点,便开始进行第一种添加驱动的方法,本次交流是以beep_arv.c蜂鸣驱动程序为基础的

方法一:

1)进入内核的驱动目录;

#cp beep_arv.c /XXX/.../linux-XXXl/drivers/char

2)进入Kconfig添加驱动信息;

#cd /XXX/linux-XXX/.../drivers/char

#vim Kconfig

添加基本信息:

config BEEP_MINI2440

tristate "---HAH--- BEEP"

default

help

this is test makefile!

3)进入Makefile添加驱动编译信息;

#vim Makefile

添加基本信息:

obj-$(CONFIG-BEEP_MINI2440) +=beep_drv.o

方法一结果:

在--Character devices下就能看到配置信息了;

方法二:

1)进入驱动目录,创建BEED目录;

#cd /XXX/.../linux-XXX/drivers/char

#mkdir beep

2)将beep_arv.c驱动程序复制到新建目录下;

#cp beep_arv.c /XXX/.../linux-XXXl/drivers/char/beep

3)创建Makefile和Kconfig文件

#cd char/beep

#mkdir Makefile Kconfig

#chmod 755 Makefile

#chmod 755 Kconfig

4)进入Kconfig添加驱动信息;

#vim Kconfig

添加基本信息:

config BEEP_MINI2440

tristate "---HAH--- BEEP"

default

help

this is test makefile!

5)进入Makefile添加驱动编译信息;

#vim Makefile

添加基本信息:

obj-$(CONFIG_BEEP_MINI2440) +=beep_drv.o

6)并且要到上一级目录的Makefile和Kconfig添加驱动信息;

#cd ../

#vim Makefile

#vim Kconfig

在Linux下安装驱动程序的实施步骤如下:

第一步:首先使用lsmod|grep "*" *为你需要查看的驱动模块

第二步:首先去相应设备提供商官网下载相应的Linux版本驱动程序包,可以是rpm包也可以是源码包,下载完毕后使用rpm或者make命令进行编译安装;

第三步:使用insmod或者modprobe将安装后的模块加载到内核中去即完成了驱动程序的安装。

最后一步在加载模块时主机维护人员可能会碰到成功安装后无法加载到内核的问题,现我详细介绍一下inmod和modprobe的用法。

1)modprobe:

在挂载某个内核模块的同时,这个模块所依赖的模块也被同时挂载;这是于insmod挂载模块有区别的地方。当然modprobe也有列出内核所有模块的功能modprobe -l,还有移除模块的功能modprobe -r 模块名称;

2)insmod:

insmod挂载模块这个工具和modprobe有点类似,但功能上没有modprobe强,modprobe在挂载模块是不用指定模块文件的路径,也不用带文件的后缀.o 或.ko;而insmod需要的是模块的所在目录的绝对路径,并且一定要带有模块文件名后缀。

在以后管理员使用modprobe工具无法加载安装的模块时用建议可以使用insmod或者modprobe -f进行强制加载。

linux有那些命令有很多,而且驱动程序与因为发布商喜好不同而不一样.

比如Intel

网卡.

你只需要把驱动程序用tar

释放手(tar

xvzf

xx.tar.gz)

进入生成的目录

./configure

.make

.make

insall

就可以了

有些驱动程序需要在/etc/ld.so.conf增加搜索库文件的路径.

所Linux的使用与Windows的区别较大.

你通常内核都支持很多驱动程序,你可以通过下载较新内核来重新编译以实现使用新驱动的目的.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8657440.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-19
下一篇 2023-04-19

发表评论

登录后才能评论

评论列表(0条)

保存