您的位置:首页 > 运维架构 > Linux

如何在linux下添加自己的设备驱动

2014-08-18 15:21 309 查看
一.驱动编译到内核:

       1.先选择一个放置驱动代码的位置,例如:Driver/char/xxx.c

        2.在Driver/char/Kconfig文件中添加以下内容:

          menu “xxx support”

          config xxx

                  

tristate "xxx support"

                        ---help---

                          xxx use gpio as ir input .

                        If you want xxx support, you should say Y here and also to the

                       specific driver for your bus adapter(s) below.

                        This xxx support can be built as a module.

             endmenu

    3.编写Makefile,位置与上相同(driver/char/),内容如下:

        

     obj-$(CONFIG_xxx)    += xxx.o                       //黑色xxx与上面Kconfig中的xxx相同,而红色xxx应与

                                                                                 驱动xxx.c的命名相同

    4.修改上一级Makefile和Kconfig

     至此,修改完毕,此时你可以使用make menuconfig,发现已有 xxx support --->   选项,进入后选择M,再make modules,到char目录下,已生成xxx.ko。

      最后,再进入make menuconfig,选择 xxx support编译进内核。

二. 驱动作成模块加载

     一般在开发时采用这种方式比较方便,无需每次都要通过tftp下载内核,nfs去挂载根文件系统,我们只需要把驱动作为模块,在本地虚拟机中完成操作。

    1>.模块制作

        a.驱动编译

          把 xxx.c文件放入drivers/char子目录下,修改drivers/char/Makefile

                 obj-m += xxx.o

           然后,

              make modules,生成模块都 drivers/char/xxx.ko 

         再把 xxx.ko 放到单板根文件系统的/lib/modules/2.6.14.1(自己的内核版本)/目录下

       b.驱动测试

        编写测试代码及Makefile文件,make后,把生成文件放在单板跟文件系统/usr/bin/目录下

    2>.调试

       在根文件系统中建立设备文件:

           # mknod /dev/buttons c 232 0

       加载模块

           # insmod s3c24xx_buttons

      卸载模块

             # rmmod s3c24xx_buttons
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 内核