添加驱动程序到内核步骤为:添加驱动程序到内核源代码位置;配置内核;编译内核;下载运行测试。
添加驱动程序到内核
Linux
内核的配置系统由以下3
个部分组成:
Makefile
:分布在Linux
内核源代码中的Makefile
定义内核的编译规则。- 配置文件
Kconfig
:给用户提供配置选择的功能。 - 配置工具:包括配置命令解释器(对配置脚本中使用的配置命令进行解释)、配置用户界面(提供字符界面和图形界面),这些配置工具都是使用脚本语言(
Perl
等)编写的。
在Linux
内核中增加程序需要完成以下3
项工作:
- 将编写的源代码复制到
linux
内核源代码的相应目录。 - 在目录的
Kconfig
文件中增加新源代码对应项目的编译配置选项。 - 在目录的
Makefile
文件中增加对新源代码的编译条目。
添加BEEP
驱动程序到内核:
- 方法一:在
linux-2.6.32.2/drivers/char/
目录下直接添加beep_drv.c
源文件。 - 方法二:在
linux-2.6.32.2/drivers/char/
目录下添加beep
驱动目录。
添加BEEP驱动程序到内核(方法一)
添加Beep
设备的内核配置选项,打开drivers/char/Kconfig
文件,添加如下内容:
config BEEP_MINI2440
tristate "BEEP Driver Support for Mini2440 BEEP Test"
depends on MACH_MINI2440
default y if MACH_MINI2440
help
This option enables support for BEEP connectded to GPIO lines on Mini2440 boards.
配置编译新内核
在内核源代码目录下执行命令make menuconfig
,重新配置内核,依次选择进入如下子菜单:
Device Drivers --->
Character devices --->
根据该驱动的配置定义,把对应的驱动目标文件加入内核中。打开linux-2.6.32.2/drivers/char/Makefile
文件,添加如下内容:
obj-$(CONFIG_BEEP_MINI2440) += beep_drv.o
在内核linux-2.6.32.2/drivers/char/
目录下,新建BEEP
驱动文件beep_drv.c
。
添加BEEP驱动程序到内核(方法二)
在linux-2.6.32.2/drivers/char/
目录下新建BEEP
驱动目录,其树形目录如下:
|-- beep
|-- beep_drv.c
|-- Konfig
|-- Makefile
步骤如下:
- 在
drivers/char/
路径下新建beep
目录。 - 在
beep
目录下添加beep_drv.c
文件。 - 在
beep
目录下创建Kconfig
和Makefile
。 - 修改新增目录的父目录的
Kconfig
和Makefile
,以便新增的Kconfig
和Makefile
能够被引用。
在drivers/char/beep/Kconfig
文件中添加如下代码:
config BEEP_MINI2440
tristate "BEEP Driver Support for Mini2440 BEEP Test"
depends on MACH_MINI2440
default y if MACH_MINI2440
help
This option enables support for BEEP connectded to GPIO lines on Mini2440 boards.
在drivers/char/beep/Makefile
文件中添加如下代码:
obj-$(CONFIG_BEEP_MINI2440) += beep_drv.o
修改新增目录的父目录的Kconfig
和Makefile
,在drivers/char/Kconfig
中加入:
source "driver/char/beep/Kconfig"
在drivers/char/Makefile
中加入:
obj-$(CONFIG_BEEP_MINI2440) += beep/
在内核源代码目录下执行命令make menuconfig
,重新配置内核,依次选择进入如下子菜单:
Device Drivers --->
Character devices --->
进入Linux
内核根目录重新编译内核:
cd /opt/linux-2.6.32.2
make zImage
进入目录/arch/arm/boot
,将新生成的zImage
转换成uImage
,通过uboot
下载uImage
到开发板。
编写BEEP测试程序
1. 编写BEEP
测试程序beep_test.c
,完成对BEEP
的调试。
2. 上电开发板,运行新的uImage
内核。
3. 使用命令cat /proc/devices | grep beep
查看BEEP
驱动系统自动分配的主设备号。
4. 使用命令mknod /dev/beep c major 0
制作BEEP
对应的设备文件节点。
5. 将编译生产的beep_test
,下载到开发板并测试BEEP
驱动(使用命令./beep_test
)。