学习Android驱动开发,实际上就是学习Linux驱动开发,只是Android
增加了一个HAL,这是Android特有的。当然HAL也不是必须的,通过NDK
也可以直接访问Linux驱动,但google建议最好为Linux驱动编写对应的HAL程序库


//////////////////////////////////////////////////////
Android系统构架:
Android系统构架分为4层
第一层:Linux内核
第二层:C/C++代码库
第四层:应用程序


///////////////////////////////////////////////////////
android系统移植需要考虑的问题
(让操作系统在某特定硬件平台上运行)

1.该操作系统支持硬件平台的cpu架构(因为android底层为 linux系统,本身可支持很多cpu架构,因此仅需稍微调整)

2.让android系统可以识别并调用该平台上的硬件设备(需要1.移植Linux驱动2.需要移植HAL)

///////////////////////////////////////////////////////
如何学习linux驱动开发:

1.搭建linux系统开发环境

2.掌握GNU C(是linux下最常用的C语言编译环境)

3.一块合适的android开发板用来测试

////////////////////////////////////////////////////////


Linux设备驱动:

linux将存储器和外设分为3大类(1.字符设备2.块设备3.网络设备)
字符设备:必须以串行顺序依次进行访问的设备
块设备:可以用任意顺序进行访问

http://www.cnblogs.com/zygoodest/