如何将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 内核中增加程序需要完成以下三项工作:

1. 将编写的源代码复制到 Linux 内核源代码的相应目录;

2. 在目录的 Kconfig 文件中增加新源代码对应项目的编译配置选项;

3. 在目录的 Makefile 文件中增加对新源代码的编译条目。

bq27501驱动编译到内核中具体步骤如下:

1. 先将驱动代码bq27501文件夹复制到 ti-davinci/drivers/ 目录下。

确定bq27501驱动模块应在内核源代码树中处于何处。

设备驱动程序存放在内核源码树根目录 drivers/ 的子目录下,在其内部,设备驱动文件进一步按照类别,类型等有序地组织起来。

a. 字符设备存在于 drivers/char/ 目录下

b. 块设备存放在 drivers/block/ 目录下

c. USB 设备则存放在 drivers/usb/ 目录下。

因为linux的驱动是内核的一部分,内核启动时会检测硬件需要按需加载相应的驱动,如果在编译内核时没有为你的选择的硬件编译相应的模块,内核是无法加载相应的驱动的,这时候就需要你自己动手编译驱动模块了。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存