第1章 设备驱动概述

来源:互联网 发布:nginx pagespeed 编辑:程序博客网 时间:2024/06/04 18:54

本文摘自(偶有较小改动)《Linux 设备驱动开发详解》(宋宝华 编著;人民邮电出版社;),留作纪念。
——Living Park

 1 设备驱动概述

1.1 设备驱动的作用

没有硬件的软件是空中楼阁,而没有软件的硬件则是一堆废铁。

计算机系统的软硬件互相成就了对方。

对设备驱动最通俗的解释就是“驱动硬件设备行动”

驱动工程师必须按照相应的架构设计设备驱动,这样,设备驱动才能良好的整合到操作系统的内核中。

1.2 无操作系统时的设备驱动

并不是任何一个计算机系统都一定要运行操作系统,在许多情况下操作系统是不必要的。

一个无限循环中夹杂对设备中断的检测或者对设备的轮询是这种系统中软件的典型架构。

1.3 有操作系统时的设备驱动

       当系统中存在操作系统的时候,设备驱动变成了连接硬件和内核的桥梁,它对外呈现为操作系统的API,不再给应用软件工程师直接提供接口。

       操作系统通过给设备驱动制造麻烦来达到给上层应用提供便利的目的。

1.4 Linux设备驱动

1.4.1 设备的分类及特点

       计算机系统硬件主要由CPU、存储器和外设组成。

       驱动针对的对象是存储器和外设(包括CPU内部集成的存储器和外设),而不是针对CPU核。Linux将存储器和外设分为3个基础大类:

l       字符设备;

l       块设备;

l       网络设备。

字符设备不经过系统的快速缓冲,而块设备经过系统的快速缓冲。

1.4.2 Linux设备驱动与整个软硬件系统的关系

除网络设备外,字符设备与块设备都被映射到Linux文件系统的文件和目录。

1.4.3 编写Linux设备驱动的技术基础

1.4.4 Linux设备驱动的学习方法

       动手实践永远是学习任何软件开发的最好方法。

1.5设备驱动的Hello World: LED驱动

1.5.1 无操作系统时的LED驱动

       在嵌入式系统的设计中,LED一般直接由CPUGPIO(通用可编程的I/O口)控制。GPIO一般由两组寄存器控制,即一组控制寄存器和一组数据寄存器。

1.5.2 Linux系统下的LED驱动

原创粉丝点击