知识结构:

1.       Linux驱动程序设计规范 50%

2.       内核相关知识 25%

3.       硬件相关知识 25%

学习方法:

理论->实验-(疑问)->理论->实验

早期驱动程序-模式一

缺点:没有实现驱动的复用,没有操作系统的保护。

早期驱动程序-模式二

缺点:应用程序和驱动紧密耦合,驱动程序修改后,应用程序也要进行修改。

驱动分类

*字符设备驱动(重点)

*网路接口驱动(重点)

*块设备驱动

字符设备

字符设备是一种按字节来访问的设备,字符驱动则负责驱动字符设备,这样的驱动程序通常实现open,close,read和write系统调用。

块设备

*在大部分的Unix系统,块设备不能按照字节处理数据,只能一次传送一个或者多个长度是512字节(或者一个更大的2次幂的数)的整块数据。

*而Linux则允许块设备传送任意数目的字节。因此,块和字符设备的区别仅仅是驱动的与内核的接口不同。

*字符设备必须顺序读取数据,而块设备可以跳过某些数据。

网路接口

任何网络事务都通过一个接口来进行,一个接口通常是一个硬件设备(eth0),但是它也可以是一个纯粹的软件设备,比如回环接口(lo)。一个网路接口负责发送和接受数据报文。

驱动程序安装

*模块方式(已知)

*直接编译进内核

直接编译进内核

*Kconfig? 用于产生menuconfig的菜单选项。

*Makefile?

例:将helloWorld编译进内核

修改/driver/Kconfig,添加

config HELLO_DRIVER 显示在.config中

bool “my hello driver” 显示在menuconfig中

修改Makefile,添加

Obj-$(CONFIG_HELLO_DRIVER)    +=hello_dev.o

驱动程序的使用

Linux 驱动程序介绍相关推荐

  1. Linux驱动程序安装步骤

    一.PC机上Ubuntu9.10系统下 1. 驱动程序源码及Makefile如下: #------源程序------# #include <linux/module.h> #include ...

  2. Linux驱动程序编写

    工作需要写了我们公司一块网卡的Linux驱动程序.经历一个从无到有的过程,深感技术交流的重要.Linux作为挑战微 软垄断的强有力武器,日益受到大家的喜爱.真希望她能在中国迅速成长.把程序文档贴出来, ...

  3. linux内核模块是什么,Linux内核模块介绍,使用Linux模块的优点

    描述 1.1 Linux内核模块介绍1.1.1 Linux内核模块概述 嵌入式设备驱动开发中将驱动程序以模块的形式发布,更是极大地提高了设备使用的灵活性--用户只需要拿到相关驱动模块,再插入到用户的内 ...

  4. Linux驱动程序学习步骤

     了解linux驱动程序技巧学习的方法很重要,学习linux操作系统时,你可能会遇到关于驱动方面的问题, 这里将介绍学习linux驱动程序的方法,在这里拿出来和大家分享一下. 1.学会写简单的make ...

  5. poll接口《来自Linux驱动程序开发实例》

    您所在的位置:读书频道 > 操作系统 > Linux > 1.2.7 poll接口 1.2.7 poll接口 2012-05-22 13:38 冯国进 机械工业出版社 我要评论(0) ...

  6. 异步通知《来自Linux驱动程序开发实例》

    您所在的位置:读书频道 > 操作系统 > Linux > 1.2.8 异步通知 1.2.8 异步通知 2012-05-22 13:38 冯国进 机械工业出版社 我要评论(0) 字号: ...

  7. 第一个linux驱动程序

    本章将进行实例的学习,第一个linux驱动程序:统计单词个数.本例子的目的不是讲解如何统计单词个数,而是该算法的实现技术:Linux驱动.Linux系统将每一个驱动都映射成一个文件,这些文件称为设备文 ...

  8. Linux常用命令(本篇包括,Linux目录结构介绍、Linux Shell介绍、9个常见命令介绍、文件的概念、文件的操作(20个)、目录的操作、文件和目录的权限、文件压缩及解压缩)

    Linux常用命令(本篇包括,Linux目录结构介绍.Linux Shell介绍.9个常见命令介绍.文件的概念.文件的操作(20个).目录的操作.文件和目录的权限.文件压缩及解压缩)         ...

  9. 嵌入式Linux驱动程序开发

    嵌入式Linux驱动程序开发 1.设备驱动程序的概念... 2 2.处理器与设备间数据交换方式... 2 21.查询方式... 2 2.2.中断方式... 3 2.3.直接访问内存(DMA)方式... ...

最新文章

  1. 吸顶wifi_分享 | 酒店WiFi网络的三种部署模式
  2. 【Codeforces】835B The number on the board (贪心)
  3. 笔记 | PyTorch张量Tensor的一些必备操作
  4. Python列表之for循环应用
  5. 网站运营手册_新媒体代运营模式价格
  6. #1182 : 欧拉路·三(有向图的欧拉路)
  7. Ajax+Node.js前后端交互最佳入门实践(04)
  8. Spring Mvc Url和参数名称忽略大小写
  9. 组装台式计算机需要哪些配件,组装电脑需要哪些配件 电脑装机教程图解
  10. windows录屏_ApowerREC for Mac(屏幕录屏工具) V1.2.7.10激活版
  11. Jetty使用教程(四:24-27)—Jetty开发指南
  12. 存在链接注入漏洞_【安全提示】CNVD发布上周关注度较高的产品安全漏洞(20200817-20200823)...
  13. 从目标文件结构,加载、执行阶段,汇编角度来理解C程序内存分区
  14. 关灯游戏 Lights out (一)(极速求解)
  15. Postman安装与简单使用
  16. 卡尔曼滤波系列——(二)扩展卡尔曼滤波
  17. 经纬财富:昭通炒现货白银技巧
  18. python数据可视化第三章图表辅助元素的定制
  19. 08-图8 How Long Does It Take (25分)
  20. macOS Monterey 12.2 (21D49) 虚拟机 IOS 镜像

热门文章

  1. 成年后常用的资源都从哪里来的?原来是在几个网站里面搜索到的!
  2. windows开启SMB
  3. 面向对象编程(OOP)面向对象编程(OOP)
  4. django 缓存cache配置注意事项
  5. [Validation set: 'activiti-executable-process' | Problem: 'activiti-exclusive-gateway-condition-not-
  6. Apache CXF 简介
  7. torch.meshgrid 使用探究
  8. [Halcon] WriteImage保存图像崩溃问题
  9. 技术博客那些事儿-如何写好博客
  10. 硬件知识:独立显卡和集成显卡的区别