Linux驱动与设备节点简介 & Android内核与Linux内核的区别

Linux驱动与设备节点简介 & Android内核与Linux内核的区别,第1张

驱动是内核的一部分,作为直接访问物理硬件的一个软件层,用于应用程序与物理硬件设备通信。内核包含多种驱动,如WIFI、USB、Audio、蓝牙、相机、显示驱动。

(1)设备驱动程序三类:字符设备驱动程序、块设备驱动程序、网络设备驱动程序;

(2)对应Linux三类设备:字符设备、块设备、网络设备;

(3)常见字符设备:鼠标、键盘、串口、控制台等;

(4)常见块设备:各种硬盘、flash磁盘、RAM磁盘等;

(5)网络设备(网络接口):eth0、eth1,注:网络设备没有设备节点,应用程序通过Socket访问网络设备。由于网络设备面向报文,较难实现相关read、write等文件读写函数,所以驱动的实现也与字符设备和块设备不同。

Linux使用对文件一样的管理方式来管理设备,所有设备都以文件的形式存放在/dev目录下,系统中的每个字符设备或者块设备都必须为其创建一个设备文件,它包含了该设备的设备类型(块设备或字符设备)、设备号(主设备号和次设备号)以及设备访问控制属性等。设备节点通过 mknod 命令创建,也可以由Udev用户工具软件在系统启动后根据/sys目录下每个设备的实际信息创建,使用后一种方式可以为每个设备动态分配设备号。

Linux中设备节点通过“mknod”命令创建,创建时需要指定主设备号和次设备号,即指定对应的驱动程序和对应的物理设备(访问设备节点时就相当于通过其设备号访问驱动程序进而间接访问到物理设备)。主设备号用来区分不同种类的设备,而次设备号用来区分同一类型的多个设备。对于常用设备,Linux有约定俗成的编号,如硬盘的主设备号是3

理解:应用程序通过访问设备节点读取主设备号和次设备号,通过主设备号找对应的驱动,通过次设备号对应到具体物理设备。注:1个驱动对应一类设备,并用唯一主设备号标识。

Linux支持的各种设备的主设备号定义在include/linux/major.h文件中,已经在官方注册的主设备号和次设备号在Documentation/devices.txt文件中。

Android系统最底层是Linux,并且在中间加上了一个Dalvik / ART的Java虚拟机,从表面层看是Android运行库。每个Android应用都运行在自己的进程上,享有Dalvik / ART虚拟机为它分配的专有实例,并支持多个虚拟机在同一设备上高效运行,虚拟机执行的是专有格式的可执行文件(.dex) - 该格式经过优化,以将内存好用降到最低。

Android内核和Linux内核的差别主要体现在如下11个方面:

Linux启动时内核会检测硬件,这些启动信息会很快的在屏幕上闪过(有些发行版则不会显示)。所有内核检测信息,会被记录到内存中的一个保护区段,而用dmesg这个命令则会读取该内存区段的内容。dmesg命令的用法是:dmesg | more,之所以用管道加more命令,是因为dmesg显示的内容太长了,加上more命令可以让显示界面暂停。也可以用管道符加grep命令只选取需要的内容。

用ftp命令进行远程文件传输ftp命令是标准的文件传输协议的用户接口。ftp是在TCP/IP网络上的计算机之间传输文件的简单有效的方法。它允许用户传输ASCII文件和二进制文件。在ftp会话过程中,用户可以通过使用ftp客户程序连接到另一台计算机上。从此,用户可以在目录中上下移动、列出目录内容、把文件从远程机拷贝到本地机上、把文件从本地机传输到远程系统中。需要注意的是,如果用户没有那个文件的存取权限,就不能从远程系统中获得文件或向远程系统传输文件。为了使用ftp来传输文件,用户必须知道远程计算机上的合法用户名和口令。这个用户名/口令的组合用来确认ftp会话,并用来确定用户对要传输的文件可以进行什么样的访问。另外,用户显然需要知道对其进行ftp会话的计算机的名字或IP地址。Ftp命令的功能是在本地机和远程机之间传送文件。该命令的一般格式如下:$ftp主机名/IP其中“主机名/IP”是所要连接的远程机的主机名或IP地址。在命令行中,主机名属于选项,如果指定主机名,ftp将试图与远程机的ftp服务程序进行连接;如果没有指定主机名,ftp将给出提示符,等待用户输入命令:$ftpftp>此时在ftp>提示符后面输入open命令加主机名或IP地址,将试图连接指定的主机。不管使用哪一种方法,如果连接成功,需要在远程机上登录。用户如果在远程机上有帐号,就可以通过ftp使用这一帐号并需要提供口令。在远程机上的用户帐号的读写权限决定该用户在远程机上能下载什么文件和将上载文件放到哪个目录中。如果没有远程机的专用登录帐号,许多ftp站点设有可以使用的特殊帐号。这个帐号的登录名为anonymous(也称为匿名ftp),当使用这一帐号时,要求输入email地址作为口令。如果远程系统提供匿名ftp服务,用户使用这项服务可以登录到特殊的,供公开使用的目录。一般专门提供两个目录:pub目录和incoming目录。pub目录包含该站点供公众使用的所有文件,incoming目录存放上载到该站点的文件。一旦用户使用ftp在远程站点上登录成功,将得到“ftp>”提示符。现在可以自由使用ftp提供的命令,可以用help命令取得可供使用的命令清单,也可以在help命令后面指定具体的命令名称,获得这条命令的说明。最常用的命令有:ls列出远程机的当前目录cd在远程机上改变工作目录lcd在本地机上改变工作目录ascii设置文件传输方式为ASCII模式binary设置文件传输方式为二进制模式close终止当前的ftp会话hash每次传输完数据缓冲区中的数据后就显示一个#号get(mget)从远程机传送指定文件到本地机put(mput)从本地机传送指定文件到远程机open连接远程ftp站点断开与远程机的连接并退出ftp?显示本地帮助信息!转到Shell中下面简单将ftp常用命令作一简介。启动ftp会话open命令用于打开一个与远程主机的会话。该命令的一般格式是:open主机名/IP如果在ftp会话期间要与一个以上的站点连接,通常只用不带参数的ftp命令。如果在会话期间只想与一台计算机连接,那么在命令行上指定远程主机名或IP地址作为ftp命令的参数。终止ftp会话close、disconnect、和bye命令用于终止与远程机的会话。close和disronnect命令关闭与远程机的连接,但是使用户留在本地计算机的ftp程序中。和bye命令都关闭用户与远程机的连接,然后退出用户机上的ftp程序。改变目录“cd[目录]”命令用于在ftp会话期间改变远程机上的目录,lcd命令改变本地目录,使用户能指定查找或放置本地文件的位置。远程目录列表ls命令列出远程目录的内容,就像使用一个交互shell中的ls命令一样。ls命令的一般格式是:ls[目录][本地文件]如果指定了目录作为参数,那么ls就列出该目录的内容。如果给出一个本地文件的名字,那么这个目录列表被放入本地机上您指定的这个文件中。从远程系统获取文件get和mget命令用于从远程机上获取文件。get命令的一般格式为:get文件名您还可以给出本地文件名,这个文件名是这个要获取的文件在您的本地机上创建时的文件名。如果您不给出一个本地文件名,那么就使用远程文件原来的名字。mget命令一次获取多个远程文件。mget命令的一般格式为:mget文件名列表使用用空格分隔的或带通配符的文件名列表来指定要获取的文件,对其中的每个文件都要求用户确认是否传送。向远程系统发送文件put和mput命令用于向远程机发送文件。Put命令的一般格式为:put文件名mput命令一次发送多个本地文件,mput命令的一般格式为:mput文件名列表使用用空格分隔的或带通配符的文件名列表来指定要发送的文件。对其中的每个文件都要求用户确认是否发送。改变文件传输模式默认情况下,ftp按ASCII模式传输文件,用户也可以指定其他模式。ascii和brinary命令的功能是设置传输的模式。用ASCII模式传输文件对纯文本是非常好的,但为避免对二进制文件的破坏,用户可以以二进制模式传输文件。检查传输状态传输大型文件时,可能会发现让ftp提供关于传输情况的反馈信息是非常有用的。hash命令使ftp在每次传输完数据缓冲区中的数据后,就在屏幕上打印一个#字符。本命令在发送和接收文件时都可以使用。ftp中的本地命令当您使用ftp时,字符“!”用于向本地机上的命令shell传送一个命令。如果用户处在ftp会话中,需要shell做某些事,就很有用。例如用户要建立一个目录来保存接收到的文件。如果输入!mkdirnew_dir,那么Linux就在用户当前的本地目录中创建一个名为new_dir的目录。从远程机grunthos下载二进制数据文件的典型对话过程如下:$ftpgrunthosConnectedtogrunthos220grunthosftpserverName(grunthos:pc):anonymous33lGuestloginok,sendyourcompletee-mailaddressaspassword.Password:230Guest1oginok,accessrestrictionsapply.RemotesystemtypeisUNIX.ftp>cdpub250CWDcommandsuccessful.ftp>ls200PORTcommandsuccessful.l50openingASCIImodedataconnectionfor/bin/1s.totalll4rog1rog2226Transfercomp1ete.ftp>binary200typesettoI.ftp>hashHashmarkprintingon(1024bytes/hashmark).ftp>getrog1200PORTcommandsuccessfu1.150openingBINARYmodedataconnectionforrogl(l4684bytes).#############226Transfercomplete.14684bytesreceivedin0.0473secs(3e+02Kbytes/sec)ftp>22lGoodbye.


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/5903393.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-07
下一篇2023-03-07

发表评论

登录后才能评论

评论列表(0条)

    保存