添加驱动程序到Linux内核

  添加驱动程序到内核步骤为:添加驱动程序到内核源代码位置;配置内核;编译内核;下载运行测试。

添加驱动程序到内核

  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目录下创建KconfigMakefile
  • 修改新增目录的父目录的KconfigMakefile,以便新增的KconfigMakefile能够被引用。

  在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

修改新增目录的父目录的KconfigMakefile,在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)。

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值