1、1嵌入式嵌入式系统系统An Introduction to Embedded System浙江大学计算机学院2019年4月第4课 嵌入式Linux开发基础Linux准备知识 Linux的文件系统 常用的Linux命令及使用 Linux 下的 Shell Linux 下的编译器 GCC 认识 Makefile 嵌入式 Linux 简介u许多 Linux 改良品种迎合了嵌入式市场,它们包括:u虽然大多数 Linux 系统运行在 PC 平台上,但 Linux 也可以作为嵌入式系统的操作系统。u嵌入式 Linux 标准吸引了“Linux 标准库”以及 UNIX 组织中有益的元素u在嵌入式系统上运行Li
2、nux的一个缺点是Linux 体系提供实时性能需要添加实时软件模块Linux嵌入式开发领域稳步发展RTLinuxuCLinuxMontavista LinuxARM-Linux其他Linux系统常用的Linux发行版发行版发行版发行版发行版发行版发行版Redhat/FedoraDebianSuseMEPISMandrakeUbuntuuLinux 是一个操作系统中的内核。一个完整的操作系统不仅仅是内核而已。所以,许多个人、组织和企业,开发了基于 GNU/Linux 的 Linux 发行版。Linux下的文件类型 普通文件 目录文件 连接文件 设备文件普通文件 系统文件.conf:配置文件,也用
3、.cfg .lock:锁文件,用来判定程序或设备是否正在被使用.rpm:RedHat用来安装软件的软件包管理器文件 编程和脚本文件.c .cpp .h .o .pl(Perl脚本).py(Python 脚本).so(库文件).sh(shell脚本).tcl(TCL脚本)普通文件 文件格式.au(音频文件).gif.html/.htm .jpg .pdf .png(PNG(Portable Network Graphic,可移植网络图形)文件).ps(PostScript文件).txt .wav .xpm(图像文件)压缩以及归档文件.bz2(使用bzip2压缩的文件).gz(使用gzip压缩的文
4、件).tar(使用tar归档的文件).tbz(使用tar和bzip压缩的文件).tgz(使用tar和gzip压缩的文件).zip(使用ZIP压缩的文件)察看一个没有扩展名的文件的类型,可以使用file命令,file filename 目录文件(directory)目录中包含文件以及下级子目录,但目录也是文件。这个文件中记录了包含在它中的文件和子目录的名称与它所处的地址。一个文件本身的记录不包含文件名,对文件名进行的更改,实际是修改它上一层的目录文件中的一条文件记录 连接文件(link)连接是Linux中比较特殊而非常有用的一种文件,类似于Windows中的快捷方式,它本身不包含任何内容,它指向
5、别的文件或目录 设备文件 Linux下所有的设备都是通过文件来表示的,所有的设备文件都存放在/dev目录下,设备文件的文件名就是设备名$cd /dev$ls 设备文件的种类 块设备文件:/dev/hda1,这些设备以块为最小单位。块的大小随设备不同而不同,一般将一块定义为1kB 字符设备:/dev/ttyS0,字符设备按顺序一个一个传递字符 网络接口:/dev/eth0,由内核中的网络系统驱动,负责发送和接收数据包 文件名通常是尾部带有设备编号数字的缩写名称。-rw-r-r-1 root root 15228 2019-01-25 a2ps.cfg-rw-r-r-1 root root 256
6、2 2019-01-25 a2ps-site.cfg-rw-r-r-1 root root 47 12月 26 23:39 adjtimedrwxr-xr-x 2 root root 4096 2019-05-16 aep-rw-r-r-1 root root 688 2019-02-04 aep.conf文件类型文件权限链接个数文件属主名用户分组名文件长度 文件上次被修改的时间和日期文件名Linux下的文件详细信息Linux下的目录结构linux采用的是树型结构。最上层是根目录,其他的所有目录都是从根目录出发而生成的。微软的DOS和windows也是采用树型结构,但是在DOS和windows
7、中这样的树型结构的根是磁盘分区的盘符,有几个分区就有几个树型结构,他们之间的关系是并列的。/usr/bin/tmp/home/dev/etc/var/lib/mnt/root/proc/local /bin/src/lib/bin/etc/man/usr1 /usr2 /usr3/up-armmp3/up-netarm2410/sbinLinux下的目录结构/bin 二进制可执行命令/dev 设备文件/etc 系统管理和配置文件/etc/rc.d 启动的配置文件和脚本/home 用户主目录的基点,比如用户user的主目录就是/home/user,可以用user表示/lib 标准程序设计库,又叫
8、动态链接共享库,作用类似windows里的.dll文件/sbin 系统管理命令,这里存放的是系统管理员使用的管理程序/tmp 公用的临时文件存储点/root 系统管理员的主目录/mnt 让用户临时挂载(mount)其他的文件系统。/lost+found 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下的.chk)放在这里/proc 虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息。/var 某些大文件的溢出区,比方说各种服务的日志文件Linux下的目录结构/usr 是最庞大的目录,要用到的应用程序和文件几乎都在这个目录。其中包含:/usr/X11R6
9、存放X window的目录/usr/bin 众多的应用程序/usr/sbin 超级用户的一些管理程序/usr/doc linux文档/usr/include linux下开发和编译应用程序所需要的头文件/usr/lib 常用的动态链接库和软件包的配置文件/usr/man 帮助文档/usr/src 源代码,linux内核的源代码就放在/usr/src/linux里/usr/local/bin 本地增加的命令/usr/local/lib 本地增加的库 Linux 源代码的目录内容/Documentation/arch/drivers/fs/include/init/ipc/kernel/lib/m
10、m/net/scriptsu它包含了用来配置内核的脚本u包含了 Linux 应用的网络协议代码u包含了体系结构无关的内存管理代码u这个目录包含两部分的内容u包含了实现平台独立的基本功能u这个目录下的文件实现了进程间通讯u这个目录下面只有两个文件u包含了 Linux 源程序树中大部分的.h 文件u文件系统在该目录下面都有对应的子目录u包括显卡、网卡、SCSI 适配器等u所有子目录中都是体系结构相关的代码u这个目录下面只有内核文档Shell 简介uShell 是一种具备特殊功能的程序,它是介于使用者和 UNIX/Linux 操作系 统核心程序(kernel)之间的一个接口。u在系统起动的时候,核心
11、程序会被加载内存,负责管理系统的工作,直到系 统关闭为止。它建立并控制着处理程序,管理内存、档案系统、通讯等等。而其它的程序,包括 shell 程序,都存放在磁盘中。核心程序将它们加载 内存,执行它们,并且在它们中止后清理系统。u一个 shell 命令档很像是 DOS 下的批次档(如 Autoexec.bat):它把一 连串的 UNIX 命令存入一个文档,然后执行该文档。使用者ShellUNIX/Linux操作系统Shell 的发展历史uC shell 是柏克莱大学所开发的,且 加入了一些新特性:u命令列历程u别名u内建算术u档名完成u工作控制uC shell 提示符号的默认值是%uBourn
12、e shell 是标准的 UNIX shellu以前常被用来做为管理系统之用u大部份的系统管理命令文件,rc start、stop 与 shutdown 都是 Bourne shell 的命令档u在单一使用者模式下以 root 签入 时它常被系统管理者使用uKorn shell 是 Bourne shell 的超集,由 AT&T 的 David Korn 所开发。u它增加了一些特色,比 C shell 更为先进。u Korn shell 的特色包括了可编辑的历程、别名、函式、正规表达式、万用u 字符、内建算术、工作控制、共作处理和特殊的除错功能。Shell 的使用Shell主要功用解译指令主要
13、功用提供环境u Shell 语法分析命令行,把它分解成 以空白区分开的符号,在此空白包括:vTab 键v空白v换行uShell也能当解译性的程序语言,Shell 程序,通常叫做 命令文件,它由列在档案内的命令所构成uShell 的另一个重要功用是提供个人化的使用者环境,这通常在 shell 的初始化档案中完成Shell 的功能l为了确保任何提示符号下输入的命令都能够适当地执 行。shell 担任的工作包括有:u 读取输入和语法分析命令列;u 对特殊字符求值;u 设立管线、转向、和幕后处理;u 处理讯号;u 设立程序来执行。包括包括Shell常用的Linux命令及使用lschownpasswdp
14、wdchmodtouchmvmkdircpclearcalwritecatcdtarshutdownechormmesg 查看系统nLinux 的系统管理主要在控制终端下进行,通过使用 命令行的方式进行管理。uLinux 的文件命令可以完成各种复杂的工作:u对目录进行复制u目录移动u目录链接u搜索和查找文件u搜索和查找目录u阅读文件内容u显示文件内容u打印文件内容帮助 如何获取帮助信息 使用man命令查看手册权限:所有用户使用方法:man 查找内容说明:打印出需要查找帮助内容的手册页信息 使用“-help”或“-help”参数权限:所有用户使用方法:命令 -help 说明:打印出需要查找帮助命
15、令的帮助信息,根据命令不同可能采用不同的参数“-help”或“-help”基本命令 date权限:所有用户使用方法:date说明:显示系统时间应用示例:$date exit权限:所有用户使用方法:exit说明:图形模式下exit为关闭一个终端窗口应用示例:$exit基本命令(二)who权限:所有用户使用方法:who说明:确定系统上的用户应用示例:$who ps(process)权限:所有用户使用方法:ps说明:列出所有的进程应用示例:$ps基本命令(三)passwd权限:当前用户使用方法:passwd说明:更改密码应用示例:$passwd file权限:所有用户使用方法:file 文件名说明:
16、判断文件类型应用示例:$file xx.c基本命令(四)reboot权限:所有用户使用方法:reboot说明:重启系统应用示例:$reboot halt权限:所有用户使用方法:halt说明:关闭系统应用示例:$halt基本命令(五)su(super-user)权限:所有用户使用方法:su 用户 说明:以替代用户身份执行命令应用示例:$su bc startx(start X Window)权限:所有用户使用方法:startx 说明:文本方式下启动图形界面应用示例:$startx基本命令(六)which权限:所有用户使用方法:which 程序名说明:寻找实用程序所在位置应用示例:$which w
17、ho echo权限:所有用户使用方法:echo 显示内容说明:将一行字显示到标准输出应用示例:$echo this is a echo test浏览目录常用命令 pwd 命令(print working directory)权限:所有用户使用方法:pwd说明:显示用户当前工作子目录的完整路径应用示例:$pwd浏览目录常用命令 ls 命令(list)权限:所有用户使用方法:ls 选项.文件.说明:列出当前工作子目录(默认)中的文件及子目录清单 常用参数:-a 显示所有文件及目录(包括隐藏文件)(all)-l 显示文件的详细信息(long)-h 以容易理解的方式打印文件大小(1k 32M 2G)-
18、t 将文件按建立的先后次序列出(time)-F 在列出的文件名称后加一个符号(可执行文件“*”,目录“/”)应用示例:$ls-lh浏览目录常用命令 cd 命令(change directory)权限:所有用户使用方法:cd 目标路径说明:变换工作目录到目标路径,其中目标路径可以是绝对路径也可以是相对路径。目标路径名可以缺省,若缺省则变换至使用者的home directory(用户登录子目录)。常用参数:home directory .:当前目录 .:当前目录的上一层目录-:返回切换目录后的前一个目录应用示例:$cd/home/bc/$cd././阅读常用命令 cat 命令(concatenat
19、e)权限:所有用户使用方法:cat 参数 文件名说明:把文件串连接后输出到基本输出(或另一个文件)常用参数:-n或-number:由1开始对所有输出行数编号-b或-number-nonblank:与-n类似,只是不对空白行编号 应用示例:$cat n textfile1 textfile2(将textfile1的内容加上行数编号,写入textfile2中。如果textfile2已存在,则覆盖原有内容。$cat text1 text2 text3(将text1与text2的内容串行放在一起,再附在text3文件的最后(不覆盖text3的原有内容。)阅读常用命令 more 命令权限:所有用户使用方
20、法:more 参数 文件名说明:类似cat,但它可以分页显示,适合显示长文件清单或文本内容,最基本的指令就是按空格换页,按回车下一行,按b键返回上一页。常用参数:-num:一次显示的行数-d :在屏幕最下方显示提示信息+num:从第num行开始显示应用示例应用示例:$more textfile目录操作常用命令 mkdir 命令(make directory)权限:所有用户使用方法:mkdir 子目录或子目录完整路径说明:建立一个新的子目录,使用子目录的路径作为参数应用示例:$mkdir/home/bc/temp rmdir 命令(remove directory)权限:当前目录有适当权限的所有
21、者使用方法:rmdir 参数 子目录或子目录完整路径说明:删除空的目录(当目录非空时,返回错误)应用示例:$rmdir/home/bc/temp文件操作常用命令 wc命令(word count)权限:当前文件有适当权限的所有者使用方法:wc 参数 文件名说明:统计文件中的单词数常用参数:-c:显示文件内的字符数(character)-w:显示文件内以空格符分隔的字数(word)-l:显示文件内的行数(line)应用示例:$wc cl users(显示当前目录下的文件(显示当前目录下的文件users的字符数和行数)的字符数和行数)文件操作常用命令 rm 命令(remove)权限:当前文件有适当权
22、限的所有者使用方法:rm 参数 文件名或目录说明:删除文件以及 目录常用参数:-i:删除前逐一询问确定(inform)-f:即时原文件为只读也强制删除,并不询问确定(force)-r:同时删除该目录层下的所有目录和文件(recursive)应用示例:$rm textfile(删除当前目录下的textfile文件)$rm rf/home/bc/temp(删除/home/bc/temp目录以及其下的所有目录和文件)文件操作常用命令 mv 命令(move)权限:当前文件有适当权限的所有者使用方法:mv 参数 原文件或目录 目标文件或目录说明:将一个文件移至另一个文件,或将多个文件移动至另一个目录,也
23、可以将一个目录移动至另一个目录常用参数:-i:若目的位置已有同名文件,则询问是否覆盖旧文件应用示例:$mv text1 text2(将当前目录下的文件text1的内容复制到text2中并删除text1。如果text2已存在,则覆盖其中的原有内容)$mv i*.c/home/bc/temp(将当前目录下的所有以.c为后缀的文件移至/home/bc/temp目录下)文件操作常用命令 cp 命令(copy)权限:所有用户使用方法:cp 参数 原文件或目录 目标文件或目录说明:将一个文件复制到另一个文件,或将数个文件复制到另一个目录中,也可以将一个目录复制到另一个目录常用参数:-a:尽可能将文件的状态
24、、权限等信息全部复制(all)-f:若目的地址有同名文件,则将已有的文件删除再进行复制(force)-r:若原目录中包含子目录,则原目录中的文件及子目录也依次复制到目的地址中(recursive)应用示例:$cp text1 text2(将文件text1的内容复制到text2中。如果text2已存在,则覆盖其中的原有内容)$cp arf up-tech/temp(将当前目录下的up-tech/目录中的所有内容复制到/temp目录下)文件操作常用命令 sort 命令权限:所有用户使用方法:sort 参数 文件名说明:将文本文件数据排序常用参数:-u:输出结果中去掉重复的行(unique)-r:以
25、相反顺序排序(reverse)-o:将排序后的结果写入文件()(output)-n:把行中的第一个字段当作数值,数据按算术方法排序(numeric)应用示例:$sort rn data(将data文件每行以相反算术顺序排序,并显示在当前的用户终端上(不改动原文件)文件操作常用命令 chmod 命令(change mode)权限:所有用户使用方法:chmod +|-模式 文件说明:改变文件模式常用参数:+-r:修改读模式(增加(+)或去除(-)可读(read)权限)+-w:修改写模式(增加(+)或去除(-)可写(write)权限)+-x:修改执行模式(增加(+)或去除(-)可执行(execute
26、)权限)应用示例:$chmod +x users(将users文件或目录增加可执行权限)文件操作常用命令 chown 命令(change owner)权限:根用户使用方法:chown 参数所有者:组 文件或目录说明:改变文件的所有者常用参数:-R:以递归方式处理目录下所有文件(recursive)应用示例:$chown jessie:users file1.txt(将档案 file1.txt 的拥有者设为 users组的用户 jessie)压缩及解压缩命令 tar 命令权限:所有用户使用方法:tar 参数 归档文件名 原文件或目录说明:将文件及目录复制到归档文件中,常用参数:-c:创建文档(c
27、reate)-f:表示存档到文件而非磁盘(file)-v:显示每个复制文件的名称(verbose)-x:解压缩 -z:使用gzip或ungzip -j:使用bz2应用示例:$tar cvjf temp.tar.bz2 temp/(将当前目录下的temp/目录包含的所有内容归档并用bz2压缩到temp.tar.bz2文件中)$tar xvjf temp.tar.bz2(将当前目录下的temp.tar.bz2文件解压缩)挂载文件系统命令 mount 命令权限:所有用户使用方法:mount 参数 设备 挂载目录(挂载点)说明:在命令行中使用mount命令挂载文件系统常用参数:-t:指定挂载文件系统类
28、型应用示例:adfs,affs,autofs,coda,coherent,cramfs,devpts,efs,ext,ext2,ext3,hfs,hpfs,iso9660,jfs,minix,msdos,ncpfs,nfs,ntfs,proc,qnx4,ramfs,reiserfs,romfs,smbfs,sysv,tmpfs,udf,ufs,umsdos,vfat,xenix,xfs,xiafs.#mount-t nfs 192.168.0.43:/home/wj/mnt/nfs/(将IP地址为192.168.0.43的计算机上的/home/wj目录以NFS的文件系统类型挂载为/mnt/nf
29、s/卸载mounted文件系统命令 umount 命令权限:所有用户使用方法:umount 参数 设备 挂载目录(挂载点)说明:将指定的文件系统从系统文件结构中卸载常用参数:-V:显示umount程序版本信息(Version)-v:输出详细信息(verbose)-t vfstype:指定文件系统类型,只卸载该指定文件系统类型的文件系统应用示例:#umount mnt/nfs(卸载/mnt/nfs/。该命令执行后,mnt/nfs不再是一个有效路径)网络常用命令 ifconfig 命令权限:所有用户使用方法:ifconfig 接口接口是可选项,如果不加此项,则显示系统中所有网卡的信息。如果添加此选
30、项则显示所指定的网卡信息说明:用来配置网络接口应用示例:#ifconfig eth0 192.168.0.102(配置网卡eth0的IP地址)#ifconfig eth0 down(将网卡eth0禁用)#ifconfig eth0 up(将网卡eth0启用)NFS服务 NFS(Network File System)是由Sun公司开发的一套协议 通过RPC(Remote Procedure Call)技术,使我们可以达到文件的共享,能够在多台计算机上透明的访问彼此间的目录。它们使用分布式文件系统方案来实现,在UNIX工作站和Linux系统下比较常见。NFS使用mount命令来将远程的文件系统挂
31、载到本机上的文件系统上,用户在使用时不会感觉到两者有任何差异。Linux 下的编辑器 vi插入模式插入模式编辑编辑模式模式工工作作模模式式vivi命令模式命令模式退出命令行号与文件字符串搜索正文替换删除正文恢复文件 选项设置shell 切换vim 和 gvim 的高级特色Linux 下的编译器 GCCu在使用 GCC 编译程序时,编译过程可以被细分为四个阶段:u预处理(Pre-Processing);u编译(Compiling);u汇编(Assembling);u链接(Linking)。uLinux 程序员可以根据自己的需要让 GCC 在编译的任何阶段结束,以便检 查或使用编译器在该阶段的输出
32、信息uGCC 提供了 30 多条警告信息和三个警告级别,使用它们有助于增强程序 的稳定性和可移植性。预处理编译汇编链接认识 Makefile-Makefile概述umake 命令对于构建具有多个源文件的程序有很大的帮助u只有 make 命令还是不够的,还必须用 makefile 告诉它要做什么以及 怎么做才行umake 命令和 Makefile 配合使用,能给我们的项目管理带来极大的便 利u一个 makefile 由依赖关系和规则两部分内容组成依赖关系由一个目标和一组该目标所依赖的源文件组成规则用来说明怎样使用所依赖的文件来建立目标文件依赖关系规则Makefile+=认识 Makefile-m
33、akefile 中的依赖关系 umake 程序自动生成和维护通常是可执行模块或应用程序的目标,目标的状态 取决于它所依赖的那些模块的状态。uMake 的思想是为每一块模块都设置一个时间标记,然后根据时间标记和依赖 关系来决定哪一些文件需要更新。一旦依赖模块的状态改变了,make 就会 根据时间标记的新旧执行预先定义的一组命令来生成新的目标。u依赖关系规定了最终得 到的应用程序跟生成它 的各个源文件之间的关 系认识 Makefile-makefile 中的规则umakefile 规定相应的规则来描述如何生成目标,或者说使用哪些命令来根 据依赖模块产生目标。umakefile 是以相关行为基本单位
34、的,相关行用来描述目标、模块及规则三 者之间的关系。一个相关行格式通常为:冒号左边是目标名;冒号右边是 目标所依赖的模块名;紧跟着的规则是由依赖模块产生目标所使用的命令。相关行的格式为:习惯上写成多行形式目标:依赖模块;命令目标:依赖模块 命令 命令 嵌入式 Linux 开发 嵌入式 Linux 开发模型 嵌入式 Linux 简介 嵌入式 Linux 开发流程 Bootloader、内核、文件系统 Linux 驱动开发 Linux 的设备驱动程序概述 设备驱动的结构 Linux 设备驱动程序的分类嵌入式 Linux 开发流程建立开发环境配置开发主机建立引导装载程序 bootloader建立根文
35、件系统建立应用程序的 Flash 磁盘分区开发应用程序烧写内核根文件系统应用程序发布产品下载Linux操作系统 Bootloader、内核、文件系统Bootloader内核文件系统uBootloader 就是在引导操作系统内核或用户应用程序之前运行的一段程序,其主要功能是完成处理器和周边电路正常运行所需要的初始化工作,建立内存空间 的映射u内核是 Linux 的心脏,它是在引导时装入的程序,用来提供用户层程序和硬件之间的接口,执行发生在多任务系统中的实际任务转换,处理读写磁盘的需求,处理网络接口等功能u文件系统是Linux操作系统的重要组成部分,Linux文件具有强大的功功能文件系统中的文件是
36、数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构 Linux 操作系统的引导程序 u为了满足 Bootloader 的专有性和灵活性需要,大多数 Bootloader 的代码 都由 stage1 和 stage2两部分组成。Bootloader 有两种操作模式启动加载模式下载模式嵌入式 Linux 的 Flash分区Linux 内核Linux 内核u对文件系统的读写进行管理u管理程序的运行u管理存储器u管理输入输出u管理网络任务内核组成虚拟文件系统进程调度内存管理进程间通信网络接口lLinux 内核主要由 5 个子系 统组成:u 进程调度(SCHED)u内存管理(MM)u虚拟文
37、件系统(VFs)u网络接口(NET)u进程间通信(IPC)Linux 内核各部分的工作机制 进程调度虚拟文件系统内存管理u一个进程就是处于执行期的程序u通常进程还要包括其它资源u执行线程简称线程,是进程中活动的对象u内存管理子系统是操作系统的重要部分u为了满足大于系统中物理能力的内存需要u开发了虚拟内存这种策略u通过在竞争进程之间共享内存的方式使系统 显得拥有比实际更多的内存uVFS 是 Linux 内核中的一个软件层u用于给用户空间的程序提供文件系统接口 Linux 的设备驱动程序概述uLinux 通过设备驱动程序为应用程序提供了统一抽象的接口,从而隐藏 了大量不同设备之间的区别和细节。设备
38、驱动u设备驱动可以理解为操作系统的一部分,u 对于一个特定的硬件设备来说,其对应的u 设备驱动程序是不同的。u在 Linux 操作系统中,驱动程序是操作系统内 核与硬件设备的直接接 口,它屏蔽了硬件的细 节,是内核的一部分,完成以下功能:u对设备初始化和释放;u对设备进行管理,包括实时参数设置以及 提供对设备的操作接口;u负责应用程序和设备文件间的数据传输;u检测处理设备出现的错误。设备驱动的结构设备驱动设备驱动程序的组成设备驱动程序的组成file_operations 结构结构u每个设备文件都有其文件属性,表 示是字符设备还是块设备。u另外每个文件都有两个设备号u第一个是主设备号u第二个是从
39、设备号 设备文件和设备号设备文件和设备号 u自动配置和初始化子程序u服务与 I/O 的子程序u中断服务程序 inode 和和 file 数据结构数据结构 u在系统内部,I/O 设备的存取通过一组固定的入口点来进行,这组入口点是由每个设备的驱动程序提供的。uinode 数据结构中存放磁盘上的一个文件或目录信息;ufile 数据结构主要被与文件系统对应的设备驱动程序使用,它提供有关被打开的文件的信息。Linux 设备驱动程序的分类 字符设备网络设备接口 块设备u字符设备以字节为单位进行数据处理u大多数字符设备仅仅是数据通道u只能按顺序读/写,不支持随机读写u块设备数据可以按可寻址的块为单位进行处理u块设备也支持像文件一样被访问u每一个块设备驱动程序都必须提供普通的文件 操作接口u网络接口用于网络通信u为了屏蔽网络环境中物理网络设备的多样性,Linux 对所有的物理设备进行抽象并定义了一 个统一的概念,称之为接口Thanks!