Linux中怎样通过设备号找到设备,Linux系统中的Device

By admin in 美高梅手机版4858 on 2019年4月2日

至于Linux中的设备文件,设备文件用来为操作系统和用户提供它们代表的装置接口。全数的Linux设备文件均位居/dev目录下,是根(/)文件系统的3个组成都部队分,因为那些设备文件在操作系统运维进度中务必能够运用。应用程序能够打开、关闭和读写那几个设施文件,完结对配备的操作,如同操作普通的数据文件一样。为了管住这么些设备,系统为装备编了号,每一种设备号又分为主设备号和次设备号。主设备号用来分别分裂档次的设施,而次设备号用来区分同1品种的五个装备。对于常用装备,Linux有约定俗成的编号。

Linux系统中的Device Mapper学习,devicemapper

在linux系统中你利用一些下令时(例如nmon、iostat
如下截图所示),有相当的大希望会看到有些名叫dm-xx的配备,那么这几个设备到底是怎么着设备呢,跟磁盘有哪些关联吗?在此之前不领会的时候,小编也很纳闷.
其实dm是Device Mapper的缩写,Device Mapper 是 Linux 贰.6内核中提供的一种从逻辑设备到大体设备的投射框架机制,在该机制下,用户能够很便利的依照自个儿的须要制定落到实处存储能源的管理策略,当前相比较流行的
Linux 下的逻辑卷管理器如 LVM二(Linux Volume Manager 二version)、EVMS(Enterprise Volume Management System)、dmraid(Device
Mapper Raid Tool)等都以遵照该机制落到实处的。关于Device
Mapper的理论知识,最全的材质莫过于IBM的Linux 内核中的 Device Mapper
机制那篇文章。

 

理论知识只是对那几个达到一定中度和深度,想深远钻研的人研讨的,
上边我们如故来看望简单操作中相遇的有的难点和题材,例如上海体育地方所示,dm-0、dm-1、dm-xx各自与那多少个磁盘映射呢?各自又表示的啥意思吗?首先大家来看望dm-0,dm-壹,dm-二那一个八个文件设备

[[email protected] ~]# ls /dev/dm*

/dev/dm-0  /dev/dm-1  /dev/dm-2

[[email protected] ~]# ll /dev/dm*

brw-rw---- 1 root root 253, 0 Dec  7 16:45 /dev/dm-0

brw-rw---- 1 root root 253, 1 Dec  7 16:45 /dev/dm-1

brw-rw---- 1 root root 253, 2 Dec  7 16:45 /dev/dm-2

[[email protected] ~]# 

抑或您使用fdisk -l 命令也能看出

[[email protected] ~]# fdisk -l

 

Disk /dev/sda: 85.8 GB, 85899345920 bytes

255 heads, 63 sectors/track, 10443 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          13      104391   83  Linux

/dev/sda2              14        6788    54420187+  8e  Linux LVM

/dev/sda3            6789       10443    29358787+  83  Linux

 

.....................................................................

.....................................................................

 

Disk /dev/dm-0: 107.2 GB, 107206410240 bytes

255 heads, 63 sectors/track, 13033 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

Disk /dev/dm-0 doesn't contain a valid partition table

 

Disk /dev/dm-1: 12.8 GB, 12884901888 bytes

255 heads, 63 sectors/track, 1566 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

Disk /dev/dm-1 doesn't contain a valid partition table

 

Disk /dev/dm-2: 30.0 GB, 30031216640 bytes

255 heads, 63 sectors/track, 3651 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

Disk /dev/dm-2 doesn't contain a valid partition table

 

虽说/dev/上面未有所谓的dm-叁、dm-肆…., 一般你用nmon、iostat
之类的授命就能来看,其实他也得以查阅那几个dm对应的那些设备,1般都位于
/dev/mapper上面。

[[email protected] VolGroup01]# ls -l /dev/mapper

total 0

crw------- 1 root root  10, 62 Dec  7 16:45 control

brw-rw---- 1 root disk 253,  0 Dec  7 16:45 VolGroup00-LogVol00

brw-rw---- 1 root disk 253,  2 Dec  7 16:45 VolGroup00-LogVol00--PS--user--snapshot

brw-rw---- 1 root disk 253,  1 Dec  7 16:45 VolGroup00-LogVol01

brw-rw---- 1 root disk 253, 11 Dec  7 16:45 VolGroup01-LogVol00

brw-rw---- 1 root disk 253, 12 Dec  7 16:45 VolGroup01-LogVol00--PS--user--snapshot

brw-rw---- 1 root disk 253,  9 Dec  7 16:45 VolGroup02-LogVol00

brw-rw---- 1 root disk 253, 10 Dec  7 16:45 VolGroup02-LogVol00--PS--user--snapshot

brw-rw---- 1 root disk 253,  7 Dec  7 16:45 VolGroup03-LogVol00

brw-rw---- 1 root disk 253,  8 Dec  7 16:45 VolGroup03-LogVol00--PS--user--snapshot

brw-rw---- 1 root disk 253,  5 Dec  7 16:45 VolGroup04-LogVol00

brw-rw---- 1 root disk 253,  6 Dec  7 16:45 VolGroup04-LogVol00--PS--user--snapshot

brw-rw---- 1 root disk 253,  3 Dec  7 16:45 VolGroup05-LogVol00

brw-rw---- 1 root disk 253,  4 Dec  7 16:45 VolGroup05-LogVol00--PS--user--snapshot

 

[[email protected] ~]# ls /dev/VolGroup*

/dev/VolGroup00:

LogVol00  LogVol00-PS-user-snapshot  LogVol01

 

/dev/VolGroup01:

LogVol00  LogVol00-PS-user-snapshot

 

/dev/VolGroup02:

LogVol00  LogVol00-PS-user-snapshot

 

/dev/VolGroup03:

LogVol00  LogVol00-PS-user-snapshot

 

/dev/VolGroup04:

LogVol00  LogVol00-PS-user-snapshot

 

/dev/VolGroup05:

LogVol00  LogVol00-PS-user-snapshot

[[email protected] ~]# 

 

[[email protected] ~]# cd /dev/VolGroup01

[[email protected] VolGroup01]# ll

total 0

lrwxrwxrwx 1 root root 31 Dec  7 16:45 LogVol00 -> /dev/mapper/VolGroup01-LogVol00

lrwxrwxrwx 1 root root 51 Dec  7 16:45 LogVol00-PS-user-snapshot -> /dev/mapper/VolGroup01-LogVol00--PS--user--snapshot

[[email protected] VolGroup01]# 

实际上大家能够行义务令dmsetup
ls查看dm-0、dm-一、dm-x对应的设施,在那之中dm前边的数字对应(2五3,
xx)前边的数字。如下所示

[[email protected] ~]# dmsetup ls 

VolGroup03-LogVol00--PS--user--snapshot (253, 8)

VolGroup00-LogVol00--PS--user--snapshot (253, 2)

VolGroup05-LogVol00     (253, 3)

VolGroup04-LogVol00     (253, 5)

VolGroup05-LogVol00--PS--user--snapshot (253, 4)

VolGroup03-LogVol00     (253, 7)

VolGroup02-LogVol00--PS--user--snapshot (253, 10)

VolGroup02-LogVol00     (253, 9)

VolGroup01-LogVol00     (253, 11)

VolGroup00-LogVol01     (253, 1)

VolGroup04-LogVol00--PS--user--snapshot (253, 6)

VolGroup00-LogVol00     (253, 0)

VolGroup01-LogVol00--PS--user--snapshot (253, 12)

[[email protected] ~]#

二伍三背后的数字就对应dm前面的数字,假诺您要翻看具体的音讯就动用命令
dmsetup info 就能看出上面详细新闻。

[[email protected] ~]# more /etc/fstab 

/dev/VolGroup00/LogVol00 /                      ext3    defaults        1 1

/dev/VolGroup01/LogVol00 /u01                   ext3    defaults        1 1

/dev/VolGroup02/LogVol00 /u02                   ext3    defaults        1 1

/dev/VolGroup03/LogVol00 /u03                   ext3    defaults        1 1

/dev/VolGroup04/LogVol00 /u04                   ext3    defaults        1 1

/dev/VolGroup05/LogVol00 /u05                   ext3    defaults        1 1

LABEL=/boot             /boot                   ext3    defaults        1 2

tmpfs                   /dev/shm                tmpfs   defaults        0 0

devpts                  /dev/pts                devpts  gid=5,mode=620  0 0

sysfs                   /sys                    sysfs   defaults        0 0

proc                    /proc                   proc    defaults        0 0

/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0

有了地方音信大家就能明了dm-0、dm-一、dm-贰分别对应上面包车型地铁有个别装置

dm-0 对应LVM的 VolGroup00-LogVol00 对应根目录/

dm-1 对应LVM的 VolGroup00-LogVol01 对应swap

dm-2 对应LMV的 VolGroup00-LogVol00–PS–user–snapshot

…………………………………………………

 

参考资料:

 

Mapper学习,devicemapper
在linux系统中您选用1些限令时(例如nmon、iostat
如下截图所示),有不小希望会看出有个别称为dm-xx的设…

使得概述

转自:

 

        提起 android 驱动是离不开 Linux 驱动的。Android 内核接纳的是
Linux2.6 内核 (近日Linux 三.叁 已经包蕴了部分 Android 代码)。但 Android
并从未完全照搬 Linux 系统基本,除了对Linux
举行部分改进,还增添了众多剧情。android 驱动 重要分三种档次:Android
专用驱动 和 Android 使用的设施驱动(linux)。

版权注解:本文为博主原创文章,未经博主允许不得转载。

1个字符设备只怕块设备都有多少个主设备号和次设备号。主设备号和次设备号统称为设备号。主设备号用来表示三个特定的驱动程序。次设备号用来代表使用该驱动程序的各装备。

Linux中怎样通过设备号找到设备,Linux系统中的Device。      Android 专有驱动程序:

使得概述

 

      一)Android Ashmem 匿名共享内部存储器;
为用户空间程序提供分配内部存款和储蓄器的机制,为经过间提供大块共享内部存款和储蓄器,同时为内核提供回收和保管那一个内部存款和储蓄器。

        说到
Android 驱动是离不开
Linux 驱动的。Android 内核选取的是
Linux2.陆 内核 (近期Linux 三.3 已经包蕴了1部分 Android 代码)。但 Android
并不曾完全照搬 Linux 系统基本,除了对Linux
举办一些查对,还扩展了不少情节。android 驱动 主要分两类别型:Android
专用驱动 和 Android 使用的配备驱动(linux)。

 

      二)Android Logger    轻量级的LOG(日志) 驱动;

      Android 专有驱动程序:

查阅主设备号:

      3)Android Binder     基于 OpenBinder 框架的2个驱动;

      1)Android Ashmem 匿名共享内部存款和储蓄器;
为用户空间程序提供分配内部存款和储蓄器的机制,为经过间提供大块共享内部存储器,同时为基石提供回收和保管那个内部存款和储蓄器。

 

      四)Android Power Management  电源管理模块;

      贰)Android Logger  
 轻量级的LOG(日志) 驱动;

# cat /proc/devices

Character devices:

  1 mem

  4 /dev/vc/0

  4 tty

  4 ttyS

  5 /dev/tty

  5 /dev/console

  5 /dev/ptmx

  6 lp

  7 vcs

 10 misc

 13 input

 14 sound

 21 sg

 29 fb

116 alsa

128 ptm

136 pts

162 raw

180 usb

189 usb_device

202 cpu/msr

203 cpu/cpuid

216 rfcomm

249 blkwatch_272

250 hidraw

251 usbmon

252 bsg

253 pcmcia

254 rtc

 

Block devices:

  1 ramdisk

  2 fd

259 blkext

  7 loop

  8 sd

  9 md

 11 sr

 65 sd

 66 sd

 67 sd

 68 sd

 69 sd

 70 sd

 71 sd

128 sd

129 sd

130 sd

131 sd

132 sd

133 sd

134 sd

135 sd

253 device-mapper

254 mdp

      5)Low Memory Killer  低内部存款和储蓄器管理器;

      三)Android Binder     基于
OpenBinder 框架的三个使得;

 

      6)Android PMEM      
 物理内部存款和储蓄器驱动;

      4)Android Power Management
 电源管理模块;

如上所示,该命令会呈现字符设备和块设备的主设备号。倘若你想查看有些主设备号,那么能够

      7)USB Gadget             USB 驱动(基于 gaeget 框架);

      伍)Low Memory Killer
 低内部存款和储蓄器管理器;

 

      8)Ram Console           用于调节和测试写入日志新闻的设施;

      陆)Android PMEM      
 物理内部存款和储蓄器驱动;

[root@mylnx01 ~]# cat /proc/devices | grep 253

253 pcmcia

253 device-mapper

      玖)提姆e Device             定时间控制制设施;  

      7)USB Gadget             USB
驱动(基于 gaeget 框架);

 

     10)Android Alarm         硬件石英钟;

      八)Ram Console          
用于调节和测试写入日志音信的设备;

里头Device
Mapper,Device Mapper 是 Linux 二.陆内核中提供的壹种从逻辑设备到大体设备的炫耀框架机制,在该机制下,用户可以很有利的根据自个儿的急需制定落到实处存款和储蓄财富的管理策略,当前相比流行的
Linux 下的逻辑卷管理器如 LVM贰(Linux Volume Manager 2version)、EVMS(Enterprise Volume Management System)、dmraid(Device
Mapper Raid Tool)等都以依照该机制落到实处的。

 

      九)Time Device            
定时间控制制配备;  

 

     Android 上的设施驱动:

     十)Android Alarm         硬件机械钟;

 

      1)Framebuff 展现驱动;

     Android 上的装置驱动:

 

      2)伊夫nt 输入设备驱动;

      1)Framebuff 显示驱动;

次设备号查阅

      三)ALSA 音频驱动;

      2)伊夫nt 输入设备驱动;

 

      四)OSS 音频驱动;

      三)ALSA 音频驱动;

[root@mylnx01 ~]#  ls -l /dev   或   ll  /dev

 

 

 

[root@mylnx01 ~]#  ll  /dev | grep 253 | grep -v grep

brw-rw---- 1 root root   253,   0 Jul 17 23:08 dm-0

brw-rw---- 1 root root   253,   1 Jul 17 23:08 dm-1

brw-rw---- 1 root root   253,   2 Jul 17 23:08 dm-2

brw-rw---- 1 root root   253,   3 Jul 17 23:08 dm-3

brw-rw---- 1 root root   253,   4 Jul 17 23:09 dm-4

brw------- 1 root root   253,   1 Jul 17 23:09 root

      伍)v41二摄像头:录制驱动;

      4)OSS 音频驱动;

 

      6)MTD 驱动;

      5)v41二摄像头:摄像驱动;

然则在1台服务器的日记音信蒙受上面错误音信,通过/dev
未有找到次设备号为二伍三:1四的块设备。 如下所示

      柒)蓝牙( Bluetooth® )驱动;

      6)MTD 驱动;

 

      8)WLAN 设备驱动;

      7)蓝牙5.0驱动;

Jul
19 05:02:01 mylnx01 kernel: BLKWATCH ERR: Attempt to get a sector index
out of the bitmap bounds.

 

      捌)WLAN 设备驱动;

Jul
19 05:02:01 mylnx01 kernel: BLKWATCH ERR: Critical error 1 happened for
device 253:14. Additional info: Failed to mark block as dirty.

 Android
专有驱动程序

 Android 专有驱动程序

 

 

      1.Android Ashmem 

 

      1.Android Ashmem 

             
 为用户空间程序提供分配内部存款和储蓄器的机制,为经过间提供大块共享内部存款和储蓄器,同时为基本提供回收和管理那么些内部存款和储蓄器。

[root@getlnx01
~]#  ll  /dev | grep 253 |
grep -v grep

             
 为用户空间程序提供分配内部存款和储蓄器的建制,为经过间提供大块共享内部存款和储蓄器,同时为基石提供回收和管制那一个内部存款和储蓄器。

               设备节点:/dev/ashmen
.主设备号 10.

 

               设备节点:/dev/ashmen .主设备号 拾.

               源码地点:
include/linux/ashmen.h    Kernel /mm/ashmen.c

美高梅手机版4858 1

               源码地方: include/linux/ashmen.h    Kernel /mm/ashmen.c

                     相比较于 malloc 和
anonymous/named mmap
等守旧的内部存款和储蓄器分配机制,其优势是经过基础驱动提供了声援内核的内部存款和储蓄器回收算法机制(pin/unoin)

 

                     比较于 malloc 和 anonymous/named mmap
等古板的内部存款和储蓄器分配机制,其优势是由此基础驱动提供了帮衬内核的内部存款和储蓄器回收算法机制(pin/unoin)

      2.Android Logger  

 

      2.Android Logger  

                   
无论是底层的源代码还上层的利用,大家都足以利用 logger
那么些日志设备看、来进展调剂。

因为这几个设备是1个VG,所以上述命令无法找到设备,可是可以因此命令dmsetup查看。如下所示:

                   
无论是底层的源代码还上层的施用,大家都能够运用 logger
那一个日志设备看、来进展调节。

                     设备节点:
 /dev/log/main      /dev/log/event   /dev/log/radio

 

                     设备节点:  /dev/log/main      /dev/log/event  
/dev/log/radio

                   
 源码地点:include/linux/logger.h         include/linux/logger.c

# dmsetup ls

VolGroup03-LogVol00--PS--user--snapshot-cow     (253, 15)

VolGroup05-LogVol00-real        (253, 5)

VolGroup03-LogVol00--PS--user--snapshot (253, 16)

VolGroup00-LogVol00-real        (253, 0)

VolGroup00-LogVol00--PS--user--snapshot (253, 3)

VolGroup01-LogVol00--PS--user--snapshot-cow     (253, 23)

VolGroup05-LogVol00     (253, 6)

VolGroup04-LogVol00-real        (253, 9)

VolGroup04-LogVol00     (253, 10)

VolGroup05-LogVol00--PS--user--snapshot (253, 8)

VolGroup04-LogVol00--PS--user--snapshot-cow     (253, 11)

VolGroup03-LogVol00     (253, 14)

VolGroup02-LogVol00--PS--user--snapshot (253, 20)

VolGroup03-LogVol00-real        (253, 13)

VolGroup02-LogVol00     (253, 18)

VolGroup02-LogVol00--PS--user--snapshot-cow     (253, 19)

VolGroup01-LogVol00     (253, 22)

VolGroup02-LogVol00-real        (253, 17)

VolGroup00-LogVol01     (253, 4)

VolGroup04-LogVol00--PS--user--snapshot (253, 12)

VolGroup00-LogVol00     (253, 1)

VolGroup05-LogVol00--PS--user--snapshot-cow     (253, 7)

VolGroup01-LogVol00--PS--user--snapshot (253, 24)

VolGroup00-LogVol00--PS--user--snapshot-cow     (253, 2)

VolGroup01-LogVol00-real        (253, 21)

                     源码地方:include/linux/logger.h        
include/linux/logger.c

      3.Android Binder     

 

      3.Android Binder     

                IPC Binder
1种进度间通讯机制。他的进度能够为别的进度提供劳务 —– 通过规范的
Linux 系统调用 API。

 

                IPC Binder
1种进程间通讯机制。他的进度能够为别的进程提供服务
—–
通过专业的 Linux 系统调用 API。

                设备节点
:/dev/binder

美高梅手机版4858 2

                设备节点 :/dev/binder

               
源码地方:Kernel/include/linux/binder.h  
 Kernel/drivers/misc/binder.c

 

                源码地方:Kernel/include/linux/binder.h  
 Kernel/drivers/misc/binder.c

      4.Android Power Management  

 

      4.Android Power
Management
  

               3个基于专业 linux
电源管理的轻量级 Android 电源管理连串,在 drivers/android/power.c    
 kernel/power/

至于次设备号的首要用途,那篇博客主设备号和次设备号介绍了1部分剧情。

               一个依据专业 linux 电源管理的轻量级 Android
电源管理体系,在 drivers/android/power.c      kernel/power/

      5.Low Memory Killer 

 

      5.Low Memory Killer 

               
它在用户空间中钦定了一组内部存款和储蓄器临界值,当当中有个别值与经过描述中的 oom_adj
值在同样范围时,该进程将被Kill掉(在parameters/adj中钦赐oome_adj
的最小值)。它与行业内部的Linux OOM机制就像,只是达成方式分裂

一、区分设备驱动程控的实际设备;

               
它在用户空间中钦定了一组内部存款和储蓄器临界值,当其中有些值与经过描述中的 oom_adj
值在平等范围时,该进程将被Kill掉(在parameters/adj中钦命oome_adj
的最小值)。它与正规的Linux OOM机制就像,只是达成方式不一样

               
源码地点:drivers/misc/lowmemorykiller.c 
     

 

                源码地方:drivers/misc/lowmemorykiller.c       

     
6.Android PMEM     
 

二、区分不一致用途的装备
(misc 系列设备)

      6.Android PMEM       

                PMEM
首要成效正是向用户空间提供一而再的情理内部存款和储蓄器区域。

 

                PMEM 主要功用正是向用户空间提供一连的物理内存区域。

                      1.让 GPU 或 VPU
缓冲区共享 CPU 宗旨。

3、区分块设备的分区
(partition)

                      一.让 GPU 或 VPU 缓冲区共享 CPU 大旨。

                      2.用于 Android
service 堆。

 

                      2.用于 Android service 堆。

             
 源码地点:include/linux/android_pmem.h drivers/android/pmem.c                        

一般,为了使应用程序区分所控制配备的档次,内核使用主设备号。而存在多台同类设备时,为了选拔中间的1种,设备驱动程序就应用次设备号。

               源码地点:include/linux/android_pmem.h
drivers/android/pmem.c                        

      7.USB Gadget            

 

      7.USB Gadget            

                基于专业 Linux USB gaeget
驱动框架的设备驱动。

# ll /dev/ | grep sd    #或者命令  ll /dev/ | grep disk

brw-r----- 1 root disk     8,   0 Jul 17 23:08 sda

brw-r----- 1 root disk     8,   1 Jul 17 23:10 sda1

brw-r----- 1 root disk     8,   2 Jul 17 23:08 sda2

brw-r----- 1 root disk     8,   3 Jul 17 23:08 sda3

brw-r----- 1 root disk     8,  16 Jul 17 23:08 sdb

brw-r----- 1 root disk     8,  17 Jul 17 23:08 sdb1

brw-r----- 1 root disk     8,  18 Jul 17 23:08 sdb2

brw-r----- 1 root disk     8,  21 Jul 17 23:08 sdb5

brw-r----- 1 root disk     8,  32 Jul 17 23:08 sdc

brw-r----- 1 root disk     8,  33 Jul 17 23:08 sdc1

brw-r----- 1 root disk     8,  34 Jul 17 23:08 sdc2

brw-r----- 1 root disk     8,  37 Jul 17 23:08 sdc5

brw-r----- 1 root disk     8,  48 Jul 17 23:08 sdd

brw-r----- 1 root disk     8,  49 Jul 17 23:08 sdd1

brw-r----- 1 root disk     8,  50 Jul 17 23:08 sdd2

brw-r----- 1 root disk     8,  51 Jul 17 23:08 sdd3

brw-r----- 1 root disk     8,  53 Jul 17 23:08 sdd5

brw-r----- 1 root disk     8,  64 Jul 17 23:08 sde

brw-r----- 1 root disk     8,  65 Jul 17 23:08 sde1

brw-r----- 1 root disk     8,  66 Jul 17 23:08 sde2

brw-r----- 1 root disk     8,  67 Jul 17 23:08 sde3

brw-r----- 1 root disk     8,  69 Jul 17 23:08 sde5

brw-r----- 1 root disk     8,  80 Jul 17 23:08 sdf

brw-r----- 1 root disk     8,  81 Jul 17 23:08 sdf1

brw-r----- 1 root disk     8,  85 Jul 17 23:08 sdf5

brw-r----- 1 root disk     8,  96 Jul 17 23:08 sdg

brw-r----- 1 root disk     8,  97 Jul 17 23:08 sdg1

brw-r----- 1 root disk     8,  98 Jul 17 23:08 sdg2

brw-r----- 1 root disk     8, 101 Jul 17 23:08 sdg5

brw-r----- 1 root disk     8, 112 Jul 17 23:08 sdh

brw-r----- 1 root disk     8, 113 Jul 17 23:08 sdh1

brw-r----- 1 root disk     8, 117 Jul 17 23:08 sdh5

                基于专业 Linux USB gaeget 驱动框架的装备驱动。

               
源码地方:drivers/usb/gadet/ 

 

                源码地点:drivers/usb/gadet/ 

      8.Ram Console         

 

      8.Ram Console         

                为了提供调试作用,android
允许将调试日志音讯写入那些设备,它是基于 RAM 的 buffer.

参考资料:

                为了提供调节和测试功能,android
允许将调节和测试日志音讯写入这几个设备,它是基于 RAM 的 buffer.

                源码地方:
drivers/staging/android/ram_console.c

 

                源码地方: drivers/staging/android/ram_console.c

     
9.Time Device         
  

      9.Time Device            

             
 定时间控制制,提供了对装备举行定时间控制制的功用。

               定时间控制制,提供了对装备实行定时间控制制的功力。

             
 源码地点:drivers/staging/android/timed_output.c(timed_gpio.c)

             
 源码位置:drivers/staging/android/timed_output.c(timed_gpio.c)

    10.Android Alarm       

    10.Android Alarm       

               
提供二个定时器,用于把装备从睡眠意况提示,同时它还提供了2个哪怕在配备睡眠时也会运作的钟表基准。

               
提供贰个定时器,用于把装备从睡眠意况提醒,同时它还提供了贰个就算在装备睡眠时也会运作的钟表基准。

               
 设备节点:/dev/alarm

                 设备节点:/dev/alarm

               
 源码地方:drivers/trc/alarm.c

                 源码位置:drivers/trc/alarm.c

 

Android 设备驱动

Android 设备驱动

    1.
Framebuffer 帧缓存设备

 

         Framebuffer 驱动在 Linux
中是正规的展现设备的驱动。对于 PC 系统,它是显卡的驱动 ;
对于嵌入式 SOC
处理器系统,它是 LCD
控制器也许别的呈现控制器的驱动。它是1个字符设备,在文件系统中装置节点日常是
/dev/fbx 。 每种系统能够有四个展现设备 , 依次用 /dev/fbO 、 /dev/fb l
等来代表。在 Android 系统中主设备号为 2九 ,次设备号递增生成。

  美高梅手机版4858 ,  1. Framebuffer 帧缓存设备

         Android 对 Framebuffer
驱动的施用格局是正经的 , 在 / dev / graphie / 中的 Framebuffer
设备节点由 init 进度自动创造 , 被 libui 库调用 。 Android 的 GUI 系统中
, 通过调用 Framebuffer 驱动的标准接口,完成展现设备的虚幻。

         Framebuffer 驱动在
Linux 中是规范的来得设备的驱动。对于 PC
系统,它是显卡的驱动 ; 对于嵌入式 SOC 处理器系统,它是 LCD
控制器只怕别的展现控制器的驱动。它是贰个字符设备,在文件系统中配备节点日常是
/dev/fbx 。 每一个系统能够有三个彰显设备 , 依次用 /dev/fbO 、 /dev/fb l
等来表示。在 Android 系统中主设备号为 2玖 ,次设备号递增生成。

         

         Android 对 Framebuffer 驱动的施用情势是行业内部的 , 在 / dev /
graphie / 中的 Framebuffer 设备节点由 init 进度自动创设 , 被 libui
库调用 。 Android 的 GUI 系统中 , 通过调用 Framebuffer
驱动的标准接口,实现展现设备的空洞。

     Framebuff的布局框架和兑现 : 

          

          linux
LCD驱动(二)–FrameBuffer
 

     Framebuff的组织框架和促成 : 

              Linux
LCD驱动(肆)–驱动的兑现       
                            

          linux
LCD驱动(二)–FrameBuffer  

 

    贰.伊芙nt输入设备驱动

         Input 驱动程序是 Linux
输入设备的驱动程序 , 分为玩乐杆 (joystick) 、 鼠标 (mouse 和
mice)和事件设备 (伊夫nt queue)三种驱动程序。个中事件驱动程序是现阶段通用的程序,可支撑键盘 、
鼠标、触摸屏等多种输入设备。 Input 驱动程序的主设备号是 l三 ,每1种
Input 设备从设备号占 用5 位 , 3 种从设备号分配是 : 游戏杆 0 ~ 六一 ;
Mouse 鼠标 33 ~ 62 ; Mice 鼠标 陆三 ; 事件设备 6肆 ~ 九五,各样具体的设施在 misc 、 touchscreen 、 keyboard 等目录中。
        伊夫nt 设备在用户空问使用 read 、 ioctl 、 poll
等文件系统的接口操作, read 用于读取输入新闻, ioctl
用于获取和设置消息, poll
用于用户空间的不通,当内核有按键等中断时,通过在刹车中升迁内核的 poll
达成。 

        伊夫nt
输入驱动的架构和实现:

                         
Linux设备驱动之——input子系统

 

     三.ALSA音频驱动

         高级 Linux 声音类别ALSA(Advanced Linux Sound Architecture ) 是为音频系统提供驱动 的Linux
内核组件,以替代原先的付出声音系统 OSS
。它是3个一心开放源代码的旋律驱动程序集 ,除了像 OSS
那样提供1组基本驱动程序模块之外 , ALSA
还特地为简化应用程序的编排提供相应的函数库,与 OSS 提供的遵照 ioctl
等原来编制程序接口相比较, ALSA 函数库使用起来要更为便利一些 

       
利用该函数库,开发人员能够1本万利、飞速地付出出团结的应用程序,细节则留给函数库进行之中处理
。 所以即便 ALSA 也提供了类似于 OSS 的系统接口 ,
但提出应用程序开发者使用音频函数库,而不是一向调用驱动函数。

                     ALSA
驱动的主设备号为 11陆,次设备号由种种设施单独定义,首要的设施节点如下:
                             / dev / snd / contmlCX —— 主控制 ;
                             / dev / snd / pcmXXXc —— PCM 数据通道 ;
                             / dev / snd / seq —— 顺序器;
                             / dev / snd / timer —— 定义器。
        在用户空问中 , ALSA 驱动常常协作 ALsA 库使用 , 库通过 ioctl
等接口调用 ALSA 驱动程序的设施节点。对于 AIJSA
驱动的调用,调用的是用户空间的 ALsA 库的接口,而不是一贯调用
 ALSA 驱动程序。 ALSA 音频驱动的架构如下图所示:

                                   
 美高梅手机版4858 3

        ALSA 驱动程序的最首要头文件是
include / sound ./ sound . h
,驱动主旨数据结构和切实驱动的挂号函数是 include / sound / core . h ,驱动程序
的基本完成是 Sound / core / sound . c 文件。                   
 

       ALSA
驱动程序使用上边的函数注册控制和设备:

                int snd _ pcm _ new
(struct snd _ card * card , char * id , int device , int playback
_ count , int capture _ count ,
struct snd _ pcm ** rpcm) ;

                 int snd ctl _
add(struct snd _ card * card , struct snd _ kcontrol * kcontro1)

         ALSA 音频驱动在根本实行menuconfig 配置时 , 配置选项为 “ Device Drivers ” > “ Sound c
ard support ” 壹 > “ Advanced Linux Sound Architecture ”
。子选项包涵了 Generic sound devices( 通用声音设备 ) 、 AHavalM
体系布局辅助,以及包容 OSS 的多少个选拔。 ALsA
音频驱动配置相应的文本是sound / core / Kconfig 。

      Android 没有一向运用 ALSA
驱动,能够依照 A-LSA 驱动和 ALSA 库达成 Android 奥迪o 的硬件抽象层;
ALSA 库调用内核的 ALSA 驱动, 奥迪(Audi)o 的硬件抽象层调用 ALSA 库。   
  

      四.OSS音频使得

         OSS(Open Sound
System开放声音系统)是 linux 上最早出现的声卡驱动。OSS
由1套完整的根本驱动程序模块组成,可以为大部分声卡提供联合的编制程序接口。

         OSS
是字符设备,主设备号1四,重要包罗下边二种配备文件:

          1) /dev/sndstat

                
它是声卡驱动程序提供的大概接口,它一般是三个只读文件,功用也只限于汇报声卡的近来情形。(用于检查测试声卡)

          2)/dev/dsp

                
用于数字采集样品和数字录音的设施文件。对于音频编制程序很首要。完结模拟实信号和数字频限信号的转换。

          3)/dev/audio

                 类似于/dev/dsp,使用的是
mu-law 编码方式。

          4)/dev/mixer

                
用于四个非功率信号结合恐怕叠加在1起,对于差别的声卡来说,其混音器的效果可能各差异。

          5)/dev/sequencer

                  
这一个装置用来对声卡内建的波表合成器举行操作,大概对 MIDI
总线上的乐器举办控制。

           OSS
驱动所波及的文本根本总结:

               
kernel/include/linux/soundcard.h

               
kernel/include/linux/sound.h   定义 OSS 驱动的次设备号和注册函数

                kernel/sound_core.c   
OSS宗旨完结部分

           OSS驱动框架结构图:

        美高梅手机版4858 4

     5.V4l2录像驱动

   V4L二是V四L的提高版本,为linux下录制设备程序提供了一套接口规范。包涵1套数据结构和底部V四L二驱动接口。V四L二提供了无数做客接口,你能够依照现实需求选取操作方法。必要留意的是,很少有驱动完全落到实处了有着的接口作用。所以在动用时索要参考驱动力源码,或仔细翻阅驱动提供者的使用验证。

     
V肆L2的主设备号是八1,次设备号:0~25伍,那么些次设备号里也有少数种配备(录像设备、Radio设备、Teletext、VBI)。

        V肆L二的设施节点: /dev/videoX,
/dev/vbiX and /dev/radioX

      V4L2框架图:

        
美高梅手机版4858 5

              Linux
LCD驱动(④)–驱动的完结 
                                  

 

 

    二.伊芙nt输入设备驱动

         Input 驱动程序是 Linux 输入设备的驱动程序 , 分为游戏杆
(joystick) 、 鼠标 (mouse 和 mice)和事件设备 (伊芙nt queue)三种驱动程序。当中事件驱动程序是当前通用的次序,可支撑键盘 、
鼠标、触摸屏等三种输入设备。 Input 驱动程序的主设备号是 l3 ,每一种
Input 设备从设备号占 用伍 位 , 3 种从设备号分配是 : 游戏杆 0 ~ 六1 ; Mouse 鼠标 3三 ~ 6二 ; Mice
鼠标 6三 ; 事件设备 6肆 ~ 九伍
,种种具体的装备在 misc 、
touchscreen 、 keyboard 等目录中。
        伊芙nt 设备在用户空问使用 read 、 ioctl 、 poll
等文件系统的接口操作, read 用于读取输入消息, ioctl
用于获取和装置新闻, poll
用于用户空间的堵截,当内核有按键等中断时,通过在刹车中唤醒内核的 poll
落成。 

        伊夫nt 输入驱动的架构和落成:

                          Linux设备驱动之——input子系统

  

     3.ALSA音频驱动

         高级 Linux 声音种类 ALSA(Advanced Linux Sound Architecture )
是为音频系统提供驱动 的Linux 内核组件,以代替原先的开支声音系统 OSS
。它是三个全然开放源代码的节拍驱动程序集 ,除了像 OSS
那样提供1组基本驱动程序模块之外 , ALSA
还专门为简化应用程序的编辑撰写提供相应的函数库,与 OSS 提供的依照 ioctl
等原来编制程序接口比较, ALSA 函数库使用起来要进一步方便人民群众1些 

       
利用该函数库,开发职员能够便宜、急迅地开发出本身的应用程序,细节则留给函数库进行内部处理。 所以固然 ALSA 也提供了近乎于 OSS 的体系接口 ,
但建议应用程序开发者使用音频函数库,而不是一向调用驱动函数。

 

                     ALSA 驱动的主设备号为 11陆
,次设备号由逐一设备单独定义,首要的装备节点如下:
                             / dev / snd / contmlCX —— 主控制 ;
                             / dev / snd / pcmXXXc —— PCM 数据通道 ;
                             / dev / snd / seq —— 顺序器;
                             / dev / snd / timer —— 定义器。
        在用户空问中 , ALSA 驱动通常协作 ALsA 库使用 , 库通过 ioctl
等接口调用 ALSA 驱动程序的配备节点。对于 AIJSA
驱动的调用,调用的是用户空间的 ALsA 库的接口,而不是从来调用
 ALSA 驱动程序。 ALSA 音频驱动的架构如下图所示:

                                   
 美高梅手机版4858 6

        ALSA 驱动程序的根本头文件是 include / sound ./ sound . h
,驱动大旨数据结构和切实驱动的挂号函数是 include / sound / core . h
,驱动程序 的基本落成是 Sound / core / sound . c 文件。                 
   

       ALSA 驱动程序使用下边包车型大巴函数注册控制和设备:

                int snd _ pcm _ new (struct snd _ card * card ,
char * id , int device , int playback _ count , int capture _
count , struct snd _ pcm ** rpcm) ;

                 int snd ctl _ add(struct snd _ card * card , struct
snd _ kcontrol * kcontro1) ;

         ALSA 音频驱动在根本举行 menuconfig 配置时 , 配置选项为 “
Device Drivers ” > “ Sound c ard support ” 一 > “ Advanced Linux
Sound Architecture ” 。子选项包括了 Generic sound devices( 通用声音设备
) 、 A奥迪Q3M 种类布局协助,以及兼容 OSS 的多少个选拔。 ALsA
音频驱动配置相应的公文是sound / core / Kconfig 。

 

      Android 未有直接行使 ALSA 驱动,能够依据 A-LSA 驱动和 ALSA 库达成Android 奥迪(Audi)o 的硬件抽象层; ALSA 库调用内核的 ALSA 驱动, 奥迪o
的硬件抽象层调用 ALSA 库。      

 

      4.OSS音频驱动

         OSS(Open Sound System开放声音系统)是 linux
上最早出现的声卡驱动。OSS
由一套完整的水源驱动程序模块组合,能够为多数声卡提供联合的编制程序接口。

         OSS 是字符设备,主设备号1肆,首要包含上面两种装备文件:

          1) /dev/sndstat

                
它是声卡驱动程序提供的简约接口,它一般是2个只读文件,功能也只限于汇报声卡的当下处境。(用于检查测试声卡)

          2)/dev/dsp

                
用于数字采集样品和数字录音的配备文件。对于音频编程很重点。完成模拟数字信号和数字时限信号的变换。

          3)/dev/audio

                 类似于/dev/dsp,使用的是 mu-law 编码形式。

          4)/dev/mixer

                
用于多少个时域信号结合大概叠加在一起,对于分歧的声卡来说,其混音器的功能也许各差异。

          5)/dev/sequencer

                   那个设备用来对声卡内建的波表合成器举行操作,或许对
MIDI 总线上的乐器进行支配。

           OSS 驱动所涉及的文书根本总结:

                kernel/include/linux/soundcard.h

                kernel/include/linux/sound.h   定义 OSS
驱动的次设备号和注册函数

                kernel/sound_core.c    OSS宗旨实现部分

           OSS驱动架构图:

        美高梅手机版4858 7

     5.V4l2录制使得

   V四L2是V四L的升高版本,为linux下录像设备程序提供了1套接口规范。包罗一套数据结构和尾部V四L二驱动接口。V四L贰提供了无数拜访接口,你能够根据实际需求采纳操作方法。必要专注的是,很少有驱动完全达成了颇具的接口功能。所以在行使时索要参考驱动力源码,或仔细翻阅驱动提供者的行使验证。

      V肆L二的主设备号是八一,次设备号:0~255,那一个次设备号里也有好两种配备(录制设备、Radio设备、Teletext、VBI)。

        V4L二的装置节点: /dev/videoX, /dev/vbiX and /dev/radioX

      V4L2框架图:

         美高梅手机版4858 8

 

 

 

 

 


发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有