Linux驱动程序概述

来源:互联网 发布:澳门域名 编辑:程序博客网 时间:2024/06/04 20:21

1-Linux驱动程序分类

  1. 字符设备驱动(我们学习中90%的都是字符设备驱动)
  2. 块设备驱动
  3. 网络设备驱动
    (块设备驱动、网络设备驱动基本上固定好了—需要开发内容比较少)

2-常用机制:

中断
内核定时器,延时操作
并发控制
内存分配管理
阻塞、非阻塞IO

3-我们需要掌握Linux模块的编译和装载

4-什么是驱动程序?

操控硬件,是应用程序和硬件设备之间的一个接口
优点: 隐藏硬件细节,提高软件可移植性

5-设备驱动程序:提供机制而不是策略

机制:驱动程序能实现什么功能
策略:用户如何使用这些功能

6-字符设备特点:

1.如字节流一样操作,如同文件,对它的读写以字节为单位
如串口
2.通常需要实现open,write,read,close
3.APP可以通过/dev下文件系统结点来访问字符设备
如:/dev/led, /dev/ttySAC0 (com0)
4.只能顺序访问,不能前后移动指针
特例:framebuffer设备,APP可以使用mmp或者lseek来访问图像各个区域

7-块设备

1.以块的形式

如:Nandflash以页为单位

2.Open等,也可以/dev/mtdblock0

3.与字符设备区别:

1.以块为单位读写
2.块设备按照一定格式存放数据,不同文件系统类型就是用来定义这种格式。

8-网络设备:

1.有结构,大小不固定
2.任何网络事务都通过一个网络接口
如: 网卡,软件设备:回环接口loopback
3. 一个网络接口负责数据报文发送和接收

9-驱动程序加入内核的方法

Linux提供(module)机制

  • 每个模块由目标代码组成(没有连接成一个完整可执行程序)
  • insmod将模块动态加载到正在运行的内核
  • rmmod程序移除模块
0 0
原创粉丝点击