android系统学习笔记二
android 的linux内核和驱动程序
Android r 专用驱动
Ashmem: 匿名共享内存驱动
Logger:轻量级的log驱动
Binader:基于operBinder系统的驱动,为android 提供IPC支持
Android power Manager :电源管理器
Low Memory Killer:缺少内存时,杀死进程
Android PMEM:物理内存驱动
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),鼠标(mouse mice)和事件设备(event queue) 设备号是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(open sound system 开放声音系统) 数字音频设备(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 次设备号为2 18 34 MIDI端口
OOS的主要头文件
Include/linux/soundcard.h
Include/linux/sound.h 用于设备的注册
OOS 驱动程序的核心
Sound/sound_core.c
ALSA音频驱动
ALSA(advanced Linux Sound architecture 高级Linux声音体系)
ALSA驱动的主设备号为116,
主要的设备节点:
/dev/snd/controlCX 主控制
/dev/snd/pcmXXXc PCM 控制
/dev/snd/pcmXXXp PCM数据通道
/dev/snd/seq 顺序器
/dev/snd/timer 定时器
ALSA驱动的头文件
Include/sound/asound.h ALSA驱动的主要头文件
Include/sound/core.h ALSA 注册函数
MTD驱动
MTD(Memory Technology Device) 称为内存技术设备 通常用于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/*