分享

向内核添加自己的驱动程序(Kconfig&Makefile)

 guitarhua 2012-03-01
向内核添加自己的驱动程序(Kconfig&Makefile)
2011-03-13 11:30

向内核添加自己的驱动程序(Kconfig&Makefile)

DIY:向内核添加自己的程序

A.在Linux内核中增加自己的程序步骤(注意这里只是程序文件):
1.将编写的源代码复制到Linux内核源代码的相应目录中。
2.在目录的Kconfig文件中增加新源代码对应项目的编译配置选项
3.在目录的Makefile文件中增加对新源代码的编译条目。

B.在Linux内核drivers/目录中增加目录和子目录步骤:
1.所加目录为daiq,文件如下:
[daiq@localhost daiq]$ tree
.
|-- Kconfig
|-- Makefile
|-- led
|   |-- Kconfig
|   |-- Makefile
|   `-- led.c
`-- test.c

#注意此时各个目录中的Makefile和Kconfig文件是空的
2.在新增的相应目录添加Kconfig和Makefile文件,上面的目录中已经添加。
3.修改新增目录的父目录的Kconfig和Makefile文件,以便新增的Kconfig和
Makefile能被引用。向父目录中的Makefile添加:
 obj-y                           += daiq/
表示在编译过程中包含子目录daiq目录。然后修改Kconfig文件,添加:
source “drivers/daiq/Kconfig”
表示在配置时引用子目录daiq中的配置文件Kconfig。
4.实际上,要让drivers/daiq/Kconfig有效,要在arch/arm/Kconfig文件中添加:
source “drivers/daiq/Kconfig”
父目录drivers/Kconfig的修改可以不要。

5.经过上面一步,内核就可以找到所加的目录daiq了,然后就是编辑各个目录中的Makefile和Kconfig文件,在你添加的目录daiq中的Makefile加入:
  obj-$(CONFIG_TEST) += test.o #因为在daiq目录中要编译test.c文件
     #所以会根据CONFIG_TEST来决定编译选项
    obj-y += led/#编译daiq目录中的子目录led
 然后Kconfig文件是:

menu "DaiQ device support"   #在make menuconfig时要显示的菜单入口                                       
config DAIQ_TEST
 bool "Test"
 help
   DaiQ device support
source "drivers/daiq/led/Kconfig"
endmenu

注意:menu和endmenu的前后要加回车,不然make menuconfig的时候会出错。

再看led目录下的Makefile和Kconfig:
Makefile为文件:
obj-$(CONFIG_LED)+=led.o
Kconfig文件:
 config LED
      tristate “led support”

5.现在可以make menuconfig来配置添加自己目录daiq的驱动了!


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/richardxwb/archive/2010/08/30/5849907.aspx


1.解压内核 tar zxvf kernel_armsys2410_2.6.15.tgz,得到linux-2.6.152Ey中国教育信息网
2.cd linux-2.6.15/drivers2Ey中国教育信息网
  在drivers目录中有个Kconfig,打开这个文件 vi Kconfig2Ey中国教育信息网
  可以看到如下内容2Ey中国教育信息网
2Ey中国教育信息网
  menu "Device Drivers"  '这个在执行make menuconfig时看到的菜单2Ey中国教育信息网
     source "drivers/base/Kconfig"2Ey中国教育信息网
     source "drivers/connector/Kconfig"2Ey中国教育信息网
     ..2Ey中国教育信息网
     source "drivers/char/Kconfig"    '这是指定下一级目录的Kconfig2Ey中国教育信息网
    ....2Ey中国教育信息网
  endmenu2Ey中国教育信息网
3.我们在看char目录下的Kconfig2Ey中国教育信息网
  cd char2Ey中国教育信息网
  vi Kconfig2Ey中国教育信息网
  在Kconfig中可以看到2Ey中国教育信息网
  menu "Character devices" '这也是在make menuconfig中可以看到的菜单2Ey中国教育信息网
   //添加LED和键盘驱动2Ey中国教育信息网
   config S3C2410_LED2Ey中国教育信息网
     bool "S3C2410 LED Driver" //这个在菜单里显示出来,2Ey中国教育信息网
     depends on ARCH_S3C2410   //在ARCH_S3C2410打开的时候,才能使用2Ey中国教育信息网
     help                      //帮助的显示内容2Ey中国教育信息网
        use led.2Ey中国教育信息网
   config S3C2410_BUTTON2Ey中国教育信息网
     bool "S3C2410 BUTTON Driver"2Ey中国教育信息网
     depends on ARCH_S3C24102Ey中国教育信息网
     help2Ey中国教育信息网
      ......2Ey中国教育信息网
  endmenu2Ey中国教育信息网
4.在Makefile中添加2Ey中国教育信息网
  obj-$(CONFIG_S3C2410_LED) +=led.o2Ey中国教育信息网
  obj-$(CONFIG_S3C2410_BUTTON) +=example_button.o2Ey中国教育信息网
2Ey中国教育信息网
5.重新make menuconfig,选中led和button就可以了2Ey中国教育信息网
2Ey中国教育信息网
2Ey中国教育信息网
本文来自ChinaUnix博客,如果查看原文请点:http://blog./u2/68560/showart_1165125.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多