在此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

最新文章

  1. survey on Time Series Analysis Lib
  2. Maven项目无法引入 Maven Dependencies Libraries 问题
  3. ASP------<input type="file"/>上传文件
  4. LeetCode:Clone Graph
  5. Facial Detection and Recognition with opencv on ios
  6. 国内顺利使用Google的另类技巧
  7. Cracking the coding interview--Q1.8
  8. shell 脚本FTP自动上传文件
  9. Nginx VS Apache
  10. AWS EMR上搭建HBase环境
  11. redis资源未释放引发的问题
  12. vetur插件提示 [vue-language-server] Elements in iteration expect to have 'v-bind:key' directives错误的解决办法
  13. [OC] 使用 cocoaPods 导入 AFNetworking
  14. KKT(Karush-Kuhn-Tucher)条件
  15. 简析iOS动画原理及实现——Core Animation
  16. Python 爬虫-图片的爬取
  17. this 的使用方法 —— javascript中的this讲解!
  18. Ruby gem 更换国内源
  19. 【OpenCV】图像增强---灰度变换、直方图均衡化
  20. ios - 上下滚动的新闻

热门文章

  1. wx:for
  2. spring 回顾
  3. node phantomjs linux 安装问题
  4. 模拟登录新浪微博(Python)
  5. JavaScript中原生事件
  6. 三列布局中 float引发的一个问题-当“非float的元素”和“float的元素”在一起的时候,如果非float元素在先,那么float的元素将受到排斥。
  7. IE与标准浏览器对事件处理的区别
  8. nyoj23-取石子(一)
  9. Bootstrap关于表单控件(按扭)
  10. pl/sql developer br 文件