驱动的东西太多,这里我只给出一些架构图,并附上少许说明,我也是个Android初学者,大家可以交流一下!
Android相对于Linux内核,新增了一些没有加入标准Linux内核的内容,形成Android的专用驱动,Linux的驱动我就不多说了,想了解的话,可以去学一下Linux!
Android的专用驱动有以下几种:
1、Ashmem:匿名共享内存驱动;
2、Bingder:基于OpenBinder系统的驱动,为Android平台提供IPC支持;
3、Logger:轻量级的Log驱动;
5、PM:电源管理;
6、LMK:在缺少内存的情况下,Kill Progress;
7、PMEM:物理内存驱动。
有些文章把上面的分成两类,我不想找分类标准,就不分了!
而在Android中,有些Linux的驱动是没有用到的,而Android使用的设备驱动如下:
1、Framebuffer显示驱动:
驱动的主设备号为29,次设备号为X,这个驱动在文件系统中的设备节点通常是/dev/fbX(X是次设备号,并且是递增的)。用户空间使用的大多是ioctl、mmap等接口。
Android没有直接使用Framebuffer,它是由init进程自动创建,被libui库调用。
2、Event输入设备驱动
Input驱动程序的主设备号是13,次要设备的分配如下:
a、Joystick:0~61;
b、mouse:33~62;
c、mice:63;
d、事件设备:64~95.
文件系统中的设备点为/dev/input/eventX
用户空间多用的是read、ioctl、poll;
它是由init进程自动创建,被libui库调用。
3、v4l2摄像头——视频驱动(中间的是L哦~Linux的简称!)
v4l2的主设备号是81,次设备号:0~255,这些次设备号里也有好几种设备(视频设备、Radio设备、Teletext、VBI);
Android同样没有直接使用,通常是配合Android中的Camera或Overlay的硬件层使用。