在此Linux驱动开发采用网络的方式,介绍两种驱动开发的方法:
一.驱动编译到内核
1.先选择一个放置驱动代码的位置,例:drivers/char/xxx.c
2.在drivers/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,位置与上相同(drivers/char/),内容如下:
  obj-$(CONFIG_xxx) += xxx.o //黑色xxx与上面Kconfig中的xxx相同,而红色xxx应与
  驱动xxx.c的命名相同
4.修改上一级Makefile和Kconfig //根据自己驱动的位置做相应的修改,参考上级的Mak_
  efile和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下添加自己的驱动的更多相关文章

  1. 如何在Linux下写无线网卡的驱动【转】

    转自:http://www.crifan.com/files/doc/docbook/linux_wireless/release/html/linux_wireless.html 版本:v0.3 H ...

  2. 如何在Linux下添加函数库

    如何为Linux增加库一. 静态库在Linux下的静态库是以.a为后缀的文件.1. 建静态库h1.c 源文件#include<stdio.h>void hello1(){printf(“t ...

  3. 一步一步教你如何在linux下配置apache+tomcat(转)

    一步一步教你如何在linux下配置apache+tomcat   一.安装前准备. 1.   所有组件都安装到/usr/local/e789目录下 2.   解压缩命令:tar —vxzf 文件名(. ...

  4. 如何在Linux下拷贝一个目录呢

    cp -af newadmin/movie/.   uploadfile/mallvideo/ 如何在Linux下拷贝一个目录呢?这好像是再简单不过的问题了. 比如要把/home/usera拷贝到/m ...

  5. Linux下添加shell脚本使得nginx日志每天定时切割压缩

    Linux下添加shell脚本使得nginx日志每天定时切割压缩一 简介 对于nginx的日志文件,特别是access日志,如果我们不做任何处理的话,最后这个文件将会变得非常庞大 这时,无论是出现异常 ...

  6. 如何在linux下制作一个windows的可启动u盘?

    如何在linux下制作一个windows的可启动u盘? 情景是这样的,有一个windows10的iso,现在想通过U盘安装,要求即支持UEFI(启动引导器),又支持Legacy(启动引导器),因为有一 ...

  7. 如何在linux下开启FTP服务

    如何在linux下开启FTP服务 1. 首先服务器要安装ftp软件,查看是否已经安装ftp软件下:   #which vsftpd   如果看到有vsftpd的目录说明服务器已经安装了ftp软件 2. ...

  8. 如何在Computer下添加System Folder(续)

    之前的一篇博客如何在Computer下添加System Folder里提到需要每次都使用一个新的guid,否则再次在"HKEY_LOCAL_MACHINE\SOFTWARE\Microsof ...

  9. linux下添加用户到sudo组 并禁止sudo用户修改密码

    linux下添加用户到sudo组 创建用户  useradd hanli 为新用户设置密码  passwd hanli 创建用户组  groupadd  op 将用户添加到用户组  usermod - ...

随机推荐

  1. drf03 drf视图中提供的请求类和响应类

    drf除了在数据序列化部分简写代码以外,还在视图中提供了简写操作.所以在django原有的django.views.View类基础上,drf封装了多个子类出来提供给我们使用. Django REST ...

  2. kvm介绍、安装及创建虚拟机

    kvm虚拟化介绍 一.虚拟化分类 1.虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机.在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立 ...

  3. 微信小程序-蓝牙连接

    最近的项目需要使用小程序的蓝牙功能与硬件设备进行连接相互传送数据指令,联调过程中发现一些问题,于是想着记录下来,方便以后查看! 1.0一般使用蓝牙功能肯定是想连接某一个蓝牙设备,所以需要知道这个蓝牙设 ...

  4. Linux—Ubuntu14.0.5安装gitlab

    1.下载gitlab-ce,到该连接选择版本   https://mirror.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/trusty/main/g/git ...

  5. JDK环境变量设置(linux)

    1.下载jdk1.8版本软件包 2.解压 tar -zxvf jdk1.8.tar.gz mv jdk1.8 /usr/local/ 3.添加环境变量 vim /etc/profile 在文件底部加入 ...

  6. python orm框架-----SQLALchemy-查询篇

    似乎ORM最难设计的部分是查询.特别是面向对象的查询,今天学习SQLAlchemy,发现SQLAlchemy的查询语法竟如此灵活,惊叹其如此强大的表达能力的同时也对Python也有了更深的认识.下面看 ...

  7. 把 Python 脚本打包成可以直接双击运行的 .exe 文件 【转】

    因为最近要用到 Python 脚本,所以自己学习了一下,顺便学习如何把它打包成 .exe 可执行文件,达到双击运行的效果,网上找了资料,保存下来学习用,原文出处:https://baijiahao.b ...

  8. List集合中把其中一个元素 调整到集合的第一位

    要求:现在想把集合中的某个元素,放到该集合的第一个位置,但是其他元素的顺序不需要管. 方法:需要遍历集合,找到这个元素在集合中的位置,然后使用Collections.swap(list,o,i) (O ...

  9. 【例题 4-4 uva 213】Message Decoding

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 输入的二进制长度最长为7 所以得开个sta[7][2^7]的样子才存的下所有的字符的.. 定义这么一个数组当字典. 然后一个字符一个 ...

  10. (13)处理静态资源(自定义资源映射)【从零开始学Spring Boot】

    上面我们介绍了Spring Boot 的默认资源映射,一般够用了,那我们如何自定义目录? 这些资源都是打包在jar包中的,然后实际应用中,我们还有很多资源是在管理系统中动态维护的,并不可能在程序包中, ...