《嵌入式Linux开发实用教程》——第4章 Linux设备驱动程序设计 4.1 设备驱动概述

第4章 Linux设备驱动程序设计

4.1 设备驱动概述

Linux系统将设备分成3种基本类型:字符设备、块设备、网络接口。

(1)字符设备

字符设备是一个能够像字节流一样被访问的设备,字符终端(/dev/console)和串口(/dev/ttys0)就是两个字符设备。字符设备可以通过文件系统节点来访问,比如/dev/tty1和/dev/lp0等。这些设备文件和普通文件之间的唯一差别在于对普通文件的访问可以前后移动访问位置,而大多数字符设备是一个只能顺序访问的数据通道。

(2)块设备

块设备和字符设备相类似,块设备也是通过/dev目录下的文件系统节点来进行访问的。在大多数UNIX系统中,进行I/O操作时块设备每次只能传输一个或多个完整的块;在Linux系统中,应用程序可以像字符设备一样地读写块设备,允许一次传递任意多字节的数据。块设备和字符设备的区别仅仅在于内核内部管理数据的方式,也就是内核及驱动程序之间的接口。

(3)网络接口

任何网络事务都是经过一个网络接口形成的,即一个能够和其他主机交换数据的设备。网络接口由内核中的网络子系统驱动,负责发送和接收数据包,但它不需要了解每项事物如何映射到实际传送的数据包。

时间: 2024-11-08 07:26:32

《嵌入式Linux开发实用教程》——第4章 Linux设备驱动程序设计 4.1 设备驱动概述的相关文章

《嵌入式Linux开发实用教程》——1.1 Linux基本命令

1.1 Linux基本命令 嵌入式Linux开发实用教程 在学习嵌入式Linux开发的过程中,将经常使用到Linux的操作命令.实际上,Linux系统中的命令也是为实现特定的功能而编写的,而且绝大数的命令是用C语言编写的.有些实用性强的程序被广泛使用和传播,逐渐地演变成Linux的标准命令.但是Linux的操作命令繁多,本节将在U-Boot.Linux移植过程中常用到的Linux操作命令罗列出来进行讲解,为后续的学习做良好的铺垫.读者不要认为这是Linux简单命令则不屑一顾,嵌入式Linux学习

《嵌入式Linux开发实用教程》——导读

前言 嵌入式Linux开发实用教程 2012年11月,当我看到论坛中的同龄大学生在学习嵌入式Linux寸步难行,我就计划将我学习嵌入式Linux的点点滴滴记录下来,从一个学生的角度去写,或许更能让初学者接受.2013年1月,当写完初稿再重新审视的时候,总感觉不尽如意.2013年3月,我联系了我的师弟李强,两人打算以一个全新的思维重新完成这本书. 2013年6月,书稿终于定型. 本书一共有6章,从Linux指令基础到Linux常用软件:从U-Boot移植到Linux移植:从Linux驱动程序设计到

《嵌入式Linux开发实用教程》——4.3 块设备驱动

4.3 块设备驱动 嵌入式Linux开发实用教程 块设备和字符设备从字面上理解最主要的区别在于读写的基本单元不同,块设备的读写基本单元为数据块,数据的输入输出都是通过一个缓冲区来完成的.而字符设备不带有缓冲,直接与实际的设备相连而进行操作,读写的基本单元为字符.从实现的角度来看,块设备和字符设备是两种不同的机制,字符设备的read.write的API直接到字符设备层,但是块设备相对复杂,是先到文件系统层,然后再由文件系统层发起读写请求. 数据块指的是固定大小的数据,这个值的大小由内核来决定.一般

《嵌入式Linux开发实用教程》——1.2 Makefile基本知识

1.2 Makefile基本知识 嵌入式Linux开发实用教程 Makefile如今能得以广泛应用,这还得归功于它被包含在UNIX系统中.在make诞生之前,UNIX系统的编译系统主要由"make"."install"shell脚本程序和程序的源代码组成.它可以把不同目标的命令组成一个文件,而且可以抽象化依赖关系的检查和存档.这是向现代编译环境发展的重要一步.1977年,斯图亚特·费尔德曼在贝尔实验室里制作了这个软件.2003年,斯图亚特·费尔德曼因发明了这样一个重

《嵌入式Linux开发实用教程》——4.1 设备驱动概述

4.1 设备驱动概述 嵌入式Linux开发实用教程Linux系统将设备分成3种基本类型:字符设备.块设备.网络接口. (1)字符设备 字符设备是一个能够像字节流一样被访问的设备,字符终端(/dev/console)和串口(/dev/ttys0)就是两个字符设备.字符设备可以通过文件系统节点来访问,比如/dev/tty1和/dev/lp0等.这些设备文件和普通文件之间的唯一差别在于对普通文件的访问可以前后移动访问位置,而大多数字符设备是一个只能顺序访问的数据通道. (2)块设备 块设备和字符设备相

《嵌入式Linux开发实用教程》——第1章 嵌入式Linux基础 1.1 Linux基本命令

第1章 嵌入式Linux基础 1.1 Linux基本命令 在学习嵌入式Linux开发的过程中,将经常使用到Linux的操作命令.实际上,Linux系统中的命令也是为实现特定的功能而编写的,而且绝大数的命令是用C语言编写的.有些实用性强的程序被广泛使用和传播,逐渐地演变成Linux的标准命令.但是Linux的操作命令繁多,本节将在U-Boot.Linux移植过程中常用到的Linux操作命令罗列出来进行讲解,为后续的学习做良好的铺垫.读者不要认为这是Linux简单命令则不屑一顾,嵌入式Linux学习

《嵌入式Linux开发实用教程》——4.2 字符设备驱动

4.2 字符设备驱动 Linux操作系统将所有的设备都会看成是文件,因此当我们需要访问设备时,都是通过操作文件的方式进行访问.对字符设备的读写是以字节为单位进行的. 对字符设备驱动程序的学习过程,主要以两个具有代表性且在OK6410开发平台可实践性的字符驱动展开分析,分别为LED驱动程序.ADC驱动程序. 4.2.1 LED驱动程序设计 为了展现LED的裸板程序和基于Linux系统的LED驱动程序的区别与减少难度梯度,在写LED驱动程序之前很有必要先看一下LED的裸板程序是怎样设计的. 1.LE

《嵌入式Linux开发实用教程》——1.5 嵌入式Linux移植常用软件

1.5 嵌入式Linux移植常用软件 在进行嵌入式Linux学习与开发的过程中,需要使用到一些常用的开发工具,熟练使用这些软件,能让学习与开发达到事半功倍的效果. 1.5.1 SecureCRT SecureCRT是可以在Window环境下登录UNIX和Linux服务器主机的软件,它不仅支持SSH1.SSH2,而且支持TeInet和rlogin协议. 在Ubuntu宿主机上安装SSH. zhuzhaoqi@zhuzhaoqi-desktop:~/sudo apt-get install open

《嵌入式Linux开发实用教程》——1.4 映像文件的生成和运行

1.4 映像文件的生成和运行 德国罕见的科学大师莱布尼茨,在他的手迹里留下这么一句话:"1与0,一切数字的神奇渊源.这是造物的秘密美妙的典范,因为,一切无非都来自上帝."二进制0和1两个简单的数字,构造了神奇的计算机世界,对人类的生产活动和社会活动产生了极其重要的影响,并以强大的生命力飞速发展.在嵌入式系统移植过程中,不管文件数量多么庞大,经过编译工具的层层处理后,最终生成一个可以加载到存储器内执行的二进制映像文件(.bin).本节内容将会探讨映像文件的生成过程,以及它在存储设备的不同