android的linux内核和驱动程序
Androidr专用驱动
Ashmem:匿名共享内存驱动
Logger:轻量级的log驱动
Binader:基于operBinder系统的驱动,为android提供IPC支持
AndroidpowerManager:电源管理器
LowMemoryKiller:缺少内存时,杀死进程
AndroidPMEM:物理内存驱动
Android使用的设备驱动
Framebuffer驱动是标准和显示设备驱动,对于PC系统就是显卡驱动设备节点
通常是/dev/fbx
Framebuffer驱动的主要头文件:include/llinux/fb.h
核心实现:drivers/video/fbmem.c
核心数据接口是:fb_info,在fb.h中定义
它在android中的路径为:/dev/graphic/fb0
注:android中直接使用标准的framebuffer驱动,/dev/graphic中的framebuffer设备节
点由init进程自动创建,被libui库调用
Event输入设备驱动
Input驱动程序是linux输入设备的驱动程序,分游戏杆(joystick),鼠标(mousemice)和事件设备(eventqueue)设备号是13
Joystick游戏杆0-61
Mouse鼠标33-62
Mice鼠标63
每种input设备占用5位,每种设备个数是32
Read读取输入信息
Ioctl获得设置信息
Poll可以进行用户空间的阻塞
Event的设备节点:dev/input/eventX
Input驱动的头文件是:include/linux/input.h
视频驱动V4L2摄像头(video4linux2)camera
设备节点:/dev/video/videoX
设备号是:81,
头文件的路径是:include/linux/videodev.h
Include/linux/videodev2.h数据接口和常量
Include/media/v412-dev.c完成接口注册
核心实现路径:driver/media/video/v412-dev.c
Oss音频驱动
Oss(opensoundsystem开放声音系统)数字音频设备(codec,PCM,DSP,ADC/DAC)采样速率(电话为8k,DVD为96k),channel数目(单声道,立体声),采样分辩率(8bit,16bit)
是字符设备,主设备号14
主要有以下几种设备文件
/dev/mixer次设备号为0访问声卡中的mixer调整音量大小,选择音源
/dev/sndstat次设备号为6测试声卡
/dev/dsp次设备号为3读此设备就相当于录音write用于放音,read用于录音
/dev/sequencer次设备号为1访问声卡内置的或是连接在MIDI端口的syntherizer(合成器)
/dev/midiXX次设备号为21834MIDI端口
OOS的主要头文件
Include/linux/soundcard.h
Include/linux/sound.h用于设备的注册
OOS驱动程序的核心
Sound/sound_core.c
ALSA音频驱动
ALSA(advancedLinuxSoundarchitecture高级Linux声音体系)
ALSA驱动的主设备号为116,
主要的设备节点:
/dev/snd/controlCX主控制
/dev/snd/pcmXXXcPCM控制
/dev/snd/pcmXXXpPCM数据通道
/dev/snd/seq顺序器
/dev/snd/timer定时器
ALSA驱动的头文件
Include/sound/asound.hALSA驱动的主要头文件
Include/sound/core.hALSA注册函数
MTD驱动
MTD(MemoryTechnologyDevice)称为内存技术设备通常用于Linux中的Flash驱动程序
分为:
字符设备的设备节点/dev/mtdX设备号90
块设备的设备节点/dev/bolck/mtdblockX设备号为13
MDT的头文件路径:include/linux/mth/mtd.h
源代码路径:drivers/mtd/mtdcore.c定义原始设备
Drivers/mtd/mtdchar.c字符设备
蓝牙驱动
蓝牙设备驱动是网络设备,使用网络接口
定义的协议族为:AF_BLUETOOTH(31)
蓝牙协议的头文件:
Include/net./bluetooth/hei_core.h
Include/net/bluetooth/bluetooth.h
Wlan驱动(使用socket进行控制)
Wifi协议的部分头文件
Include/net/wireless.h
Wifi协议部分源文件
Net/wirless
Wifi驱动程序部分
Drivers/net/wireless/*