第一章
一、Android的系统架构可以分为四层:
第一层:Linux内核。主要包括驱动程序以及管理内存、进程、电源等资源的程序
第二层:C/C++代码库。主要包括Linux的.so文件以及嵌入到APK程序中的NDK代码
第三层:android SDK API 直接面向应用程序的Java APK
第四层:应用程序。直接面向最终用户的Java应用程序。
二、Android系统移植
Android一直可以分为应用移植和系统移植两部分。
Android移植的主要工作包括移植Linux驱动和移植HAL。
查看Linux系统内核版本的两种方法:
(1)、在Linux终端执行如下命令:uname —a
(2)在Linux终端执行下面命令:cat /proc/version
linux将存储器和外设分为三大类:字符设备、块设备、网络设备。
(1)字符设备是指在I/O传输过程中以字符为单位进行传输的设备,例如键盘,打印机等。
(2)块设备是一种具有一定结构的随机存取设备,对这种设备的读写是按块进行的,他使用缓冲区来存放暂时的数据,待条件成熟后,从缓存一次性写入设备或者从设备一次性读到缓冲。
(3)网络设备及部件是连接到网络中的物理实体。
三、Linux设备驱动
驱动就是直接和硬件交互的一类程序,负责对硬件进行抽象;提供应用程序可方位的API,只要应用程序通过驱动来访问硬件,就不需要修改应用程序的源代码。当有很多型号的打印指令不一样的打印机,同时被同一个应用程序调用,会出现不能使用的情况,当我们进行了驱动程序的开发,通过接口对类进行抽象,就可以大大降低硬件耦合度过高的情况,通过驱动来访问打印机。
这一章主要概括的介绍了安卓驱动开发和系统移植的主要内容,对安卓与Linux驱动做了一个总体的介绍。通过对第一章的学习,使我对Linux驱动开发有了一个大致的认识。在学习过程中,首先,我通过以往上课时学习到的知识和查阅资料了解了一些专业词汇的含义,为以后更好的学习安卓驱动开发打下了基础。
其次在了解了一些专业基础的前提下,通过对第一章的学习我了解到,目前,安卓系统已经形成了非常完善的架构,主要包括Linux内核、核心库及环境(C/C++代码库和Runtime)、安卓软件开发工具包(应用框架)和应用程序。