Linux设备驱动开发详解(宋宝华)学习笔记-第一章 设备驱动概述

来源:互联网 发布:淘宝宝贝分类怎么设置 编辑:程序博客网 时间:2024/03/28 19:06
       对设备驱动最通俗的解释就是“驱使硬件设备行动”。设备驱动与底层硬件直接
打交道,按照硬件设备的具体工作方式读写设备寄存器,完成设备的轮询、中断处理、
DMA 通信,进行物理内存向虚拟内存的映射,最终使通信设备能够收发数据,使显

示设备能够显示文字和画面,使存储设备能够记录文件和数据。 

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

       字符设备指那些必须以串行顺序依次进行访问的设备,如触摸屏、磁带驱动器、
鼠标等。块设备可以用任意顺序进行访问,以块为单位进行操作,如硬盘、软驱等。
字符设备不经过系统的快速缓冲,而块设备经过系统的快速缓冲。但是,字符设备和
块设备并没有明显的界限。网络设备面向数据包的接收和发送而设计,它并不对应于

文件系统的节点。内核与网络设备的通信和内核与字符设备、块设备的通信方式完全不同。

      source insight的安装及使用 (便于读取开源代码)

      无操作系统时的LED驱动:在嵌入式系统的设计中,LED 一般直接由CPU的GPIO(通用可编程I/O 口)控
制。GPIO 一般由两组寄存器控制,即一组控制寄存器和一组数据寄存器。控制寄存
器可设置GPIO 口的工作方式为输入或输出。当引脚被设置为输出时,向数据寄存器
的对应位写入1 和0会分别在引脚上产生高电平和低电平;当引脚设置为输入时,读
取数据寄存器的对应位可获得引脚上相应的电平信号。

      有操作系统的LED驱动代码更为复杂,添加了许多Linux 驱动与内核的接口。