有关Linux中的设备文件,设备文件用来为操作系统和用户提供它们代表的配备接口。全体的Linux设备文件均位于/dev目录下,是根(/)文件系统的二个组成都部队分,因为这个设施文件在操作系统运转进程中必须能够使用。应用程序可以打开、关闭和读写这个装备文件,完毕对装备的操作,就好像操作普通的数据文件1样。为了管住那个设备,系统为设备编了号,每一种设备号又分为主设备号和次设备号。主设备号用来区分不相同品种的装置,而次设备号用来分歧同1档次的四个装备。对于常用装备,Linux有约定俗成的号码。

Linux系统中的Device Mapper学习,devicemapper

在linux系统中你利用部分指令时(例如nmon、iostat
如下截图所示),有望会看到1些名称为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前边的数字对应(二五三,
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系统中你利用部分发令时(例如nmon、iostat
如下截图所示),有相当大希望晤面到部分名称为dm-xx的设…

使得概述

转自:

 

        说起 android 驱动是离不开 Linux 驱动的。Android 内核采纳的是
Linux二.6 内核 (目前Linux 三.三 已经蕴含了1些 Android 代码)。但 Android
并不曾完全照搬 Linux 系统基本,除了对Linux
举行一些校勘,还扩张了许多情节。android 驱动 首要分两类别型:Android
专用驱动 和 Android 使用的装备驱动(linux)。

版权评释:本文为博主原创文章,未经博主允许不得转发。

2个字符设备可能块设备都有贰个主设备号和次设备号。主设备号和次设备号统称为设备号。主设备号用来代表2个一定的驱动程序。次设备号用来表示使用该驱动程序的各装备。

      Android 专有驱动程序:

使得概述

 

      ①)Android Ashmem 匿名共享内部存储器;
为用户空间程序提供分配内部存款和储蓄器的编写制定,为经过间提供大块共享内部存款和储蓄器,同时为水源提供回收和治本那么些内部存款和储蓄器。

        说到
Android 驱动是离不开
Linux 驱动的。Android 内核选取的是
Linux二.六 内核 (近来Linux 3.叁 已经包括了有的 Android 代码)。但 Android
并不曾完全照搬 Linux 系统基本,除了对Linux
实行壹些改正,还扩张了更仆难数内容。android 驱动 首要分二种档次:Android
专用驱动 和 Android 使用的装置驱动(linux)。

 

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

      Android 专有驱动程序:

查阅主设备号:

      三)Android Binder     基于 OpenBinder 框架的二个驱动;

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

 

      4)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 框架的三个驱动;

 

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

      四)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

      九)Time Device             定时间控制制设施;  

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

 

     十)Android Alarm         硬件挂钟;

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

内部Device
Mapper,Device Mapper 是 Linux 二.6内核中提供的一种从逻辑设备到大体设备的炫耀框架机制,在该机制下,用户能够很有利的依据本人的急需制定落实存款和储蓄财富的管理策略,当前比较流行的
Linux 下的逻辑卷管理器如 LVM2(Linux Volume Manager 二version)、EVMS(Enterprise Volume Management System)、dmraid(Device
Mapper Raid Tool)等都以依照该机制完成的。

 

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

 

     Android 上的设施驱动:

     10)Android Alarm         硬件机械钟;

 

      1)Framebuff 突显驱动;

     Android 上的装置驱动:

 

Linux中怎样通过配备号找到设备,底层驱动开发。      二)伊夫nt 输入设备驱动;

      1)Framebuff 突显驱动;

次设备号查阅

      3)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二摄像头:摄像驱动;

      四)OSS 音频驱动;

 

      6)MTD 驱动;

      5)v412录像头:录像驱动;

而是在1台服务器的日记消息境遇上面错误音信,通过/dev
未有找到次设备号为25三:14的块设备。 如下所示

      柒)蓝牙五.0驱动;

      6)MTD 驱动;

 

      捌)WLAN 设备驱动;

      7)蓝牙( Bluetooth® )驱动;

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 .主设备号 10.

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

澳门金沙国际 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
一种进度间通讯机制。他的历程能够为任何进度提供劳务
—–
通过正规的 Linux 系统调用 API。

                设备节点
:/dev/binder

澳门金沙国际 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
  

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

有关次设备号的主要用途,那篇博客主设备号和次设备号介绍了壹些内容。

               二个依照专业 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机制就像,只是完成情势不一致

一、区分设备驱动程控的莫过于设备;

               
它在用户空间中钦定了1组内存临界值,当在这之中有个别值与经过描述中的 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 首要成效正是向用户空间提供连续的物理内部存款和储蓄器区域。

                      壹.让 GPU 或 VPU
缓冲区共享 CPU 焦点。

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

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

                      2.用于 Android
service 堆。

 

                      2.用于 Android service 堆。

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

平时,为了使应用程序区分所控制设备的类别,内核使用主设备号。而留存多台同类装备时,为了选用中间的壹种,设备驱动程序就采用次设备号。

               源码地方: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       

               
提供三个定时器,用于把装备从睡眠处境提醒,同时它还提供了三个固然在设备睡眠时也会运作的钟表基准。

               
提供贰个定时器,用于把装备从睡眠景况提示,同时它还提供了1个便是在装置睡眠时也会运作的钟表基准。

               
 设备节点:/dev/alarm

                 设备节点:/dev/alarm

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

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

 

Android 设备驱动

Android 设备驱动

    一.
Framebuffer 帧缓存设备

 

         Framebuffer 驱动在 Linux
中是正经的显得设备的驱动。对于 PC 系统,它是显卡的驱动 ;
对于嵌入式 SOC
处理器系统,它是 LCD
控制器可能别的突显控制器的驱动。它是3个字符设备,在文件系统中装置节点平时是
/dev/fbx 。 各样系统能够有三个展现设备 , 依次用 /dev/fbO 、 /dev/fb l
等来代表。在 Android 系统中主设备号为 2玖 ,次设备号递增生成。

    一. Framebuffer 帧缓存设备

         Android 对 Framebuffer
驱动的使用方法是规范的 , 在 / dev / graphie / 中的 Framebuffer
设备节点由 init 进度自动成立 , 被 libui 库调用 。 Android 的 GUI 系统中
, 通过调用 Framebuffer 驱动的标准接口,落成展现设备的肤浅。

         Framebuffer 驱动在
Linux 中是正规的展现设备的驱动。对于 PC
系统,它是显卡的驱动 ; 对于嵌入式 SOC 处理器系统,它是 LCD
控制器也许其余展现控制器的驱动。它是2个字符设备,在文件系统中装备节点经常是
/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驱动(4)–驱动的完成       
                            

          linux
LCD驱动(二)–FrameBuffer  

 

    2.伊芙nt输入设备驱动

         Input 驱动程序是 Linux
输入设备的驱动程序 , 分为游乐杆 (joystick) 、 鼠标 (mouse 和
mice)和事件设备 (伊夫nt queue)三种驱动程序。其中事件驱动程序是当下通用的次序,可支持键盘 、
鼠标、触摸屏等三种输入设备。 Input 驱动程序的主设备号是 l三 ,每一种
Input 设备从设备号占 用五 位 , 三 种从设备号分配是 : 游戏杆 0 ~ 六1 ;
Mouse 鼠标 3叁 ~ 6二 ; Mice 鼠标 6三 ; 事件设备 64 ~ 95,各种具体的配备在 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
那样提供壹组基本驱动程序模块之外 , ALSA
还特意为简化应用程序的编写制定提供相应的函数库,与 OSS 提供的基于 ioctl
等原来编制程序接口比较, ALSA 函数库使用起来要越发有利于一些 

       
利用该函数库,开发职员能够方便、飞快地开发出自身的应用程序,细节则留给函数库进行内处。 所以就算 ALSA 也提供了就好像于 OSS 的连串接口 ,
但建议应用程序开发者使用音频函数库,而不是直接调用驱动函数。

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

                                   
 澳门金沙国际 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( 通用声音设备 ) 、 ALacrosseM
体系布局协理,以及兼容 OSS 的多少个选项。 ALsA
音频驱动配置相应的公文是sound / core / Kconfig 。

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

      四.OSS音频驱动

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

         OSS
是字符设备,主设备号1四,首要包含上面三种配备文件:

          1) /dev/sndstat

                
它是声卡驱动程序提供的简便接口,它一般是三个只读文件,成效也只限于汇报声卡的近年来情状。(用于检查实验声卡)

          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驱动架构图:

        澳门金沙国际 4

     伍.V四l2录制驱动

   V四L二是V肆L的晋级版本,为linux下录像设备程序提供了壹套接口规范。包罗一套数据结构和底部V4L二驱动接口。V四L二提供了不可胜举造访接口,你能够依据具体须要选取操作方法。要求注意的是,很少有驱动完全落到实处了全部的接口作用。所以在动用时需求参考驱动力源码,或仔细翻阅驱动提供者的接纳表明。

     
V四L二的主设备号是八一,次设备号:0~25伍,这一个次设备号里也有某个种配备(录像设备、Radio设备、Teletext、VBI)。

        V四L二的装置节点: /dev/videoX,
/dev/vbiX and /dev/radioX

      V4L2框架图:

        
澳门金沙国际 5

              Linux
LCD驱动(四)–驱动的完毕 
                                  

 

 

    二.伊夫nt输入设备驱动

         Input 驱动程序是 Linux 输入设备的驱动程序 , 分为游戏杆
(joystick) 、 鼠标 (mouse 和 mice)和事件设备 (伊芙nt queue)3种驱动程序。在那之中事件驱动程序是时下通用的程序,可支撑键盘 、
鼠标、触摸屏等三种输入设备。 Input 驱动程序的主设备号是 l3 ,每一种
Input 设备从设备号占 用五 位 , 三 种从设备号分配是 : 游戏杆 0 ~ 61 ; Mouse 鼠标 3三 ~ 6贰 ; 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
。它是贰个完全开放源代码的旋律驱动程序集 ,除了像 OSS
那样提供1组基本驱动程序模块之外 , ALSA
还特别为简化应用程序的编制提供对应的函数库,与 OSS 提供的基于 ioctl
等原来编制程序接口比较, ALSA 函数库使用起来要更为便宜一些 

       
利用该函数库,开发人士能够便宜、快速地开发出团结的应用程序,细节则留给函数库进行内部处理。 所以即便 ALSA 也提供了就如于 OSS 的类别接口 ,
但提议应用程序开发者使用音频函数库,而不是一向调用驱动函数。

 

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

                                   
 澳门金沙国际 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昂CoraM 类别布局帮衬,以及兼容 OSS 的几个采纳。 ALsA
音频驱动配置相应的文件是sound / core / Kconfig 。

 

      Android 没有平素利用 ALSA 驱动,能够遵照 A-LSA 驱动和 ALSA 库完结Android 奥迪(Audi)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驱动架构图:

        澳门金沙国际 7

     5.V四l二摄像驱动

   V四L贰是V4L的晋升版本,为linux下摄像设备程序提供了1套接口规范。包含一套数据结构和尾巴部分V四L二驱动接口。V四L二提供了成百上千走访接口,你能够依据实际要求采纳操作方法。要求小心的是,很少有驱动完全落实了装有的接口效用。所以在使用时供给参考驱动力源码,或仔细翻阅驱动提供者的应用表达。

      V四L2的主设备号是八一,次设备号:0~255,这一个次设备号里也有几许种配备(摄像设备、Radio设备、Teletext、VBI)。

        V肆L二的配备节点: /dev/videoX, /dev/vbiX and /dev/radioX

      V4L2框架图:

         澳门金沙国际 8

 

 

 

 

 


相关文章