第一章

 Android系统移植与驱动开发概述

1.1Android系统架构

Android的系统架构分为4层(Linux内核层,C/C++代码库,Android SDK API和应用程序)

1.Linux内核层:包括Linux的驱动程序以及内存管理,进程管理,电源管理等程序。

Android和Linux kernel版本对应表

Android中文名

Android系统版本

Linux kernel内核版本

纸杯蛋糕20090430

Android1.5

Linux2.6.27

甜甜圈   20090915

Android1.6

Linux2.6.29

松饼     2009-2010

Android2.0-2.2

Linux2.6.29

冻酸奶   2010-2011

Android2.2

Linux2.6.32

姜饼     2010-2011

Android2.3

Linux2.6.35

蜂巢     2011

Android3.0

Linux2.6.36

冰激淋三明治2011

Android4.0

Linux3.0.X

果冻豆    2012

Android4.1

Linux3.0.31/3.1.10

新口味果冻豆2012-2013

Android4.2/4.3

Linux3.4.0

奇巧巧克力

Android4.4

Linux5.0

棒棒糖

Android5.0

Linux

   备注:2012年5月18日,Linux kernel3.3发布,该版本最重要的一个特性是Android的Linux kernel代码重新回归Linux kernel代码库。同时,内核中也包含着Android的硬件驱动。今后的Android内核将直接驱动硬件,对软硬件开发者都是好事情,而芯片制造商则需要调整硬件架构,以兼容更强大的Linux3.3以上版本的内核,对于Google而言,提供了更好的体验和系统版本更好的融合与升级。

第二层:C/C++代码库

  作用:使用C/C++编写的代码库(Linux下的so文件),也包括Dalivk虚拟机的运行时。

第三层:Android SDK API

  也叫做Java API层,用Java编写的各种Library,且Library是基于Dalvik虚拟机格式的。

第四层:应用程序

  Android 用户直接接触,所有的Android应用程序都属于这一层,而这一层主要依靠第三层中的Android SDK API来完成各种功能。

1.2Android系统移植的主要工作

Android移植分为:应用移植和系统移植(本书重要讨论系统移植)

应用移植是指将一个应用程序移植到某个特定硬件平台上。

系统移植是指让Android操作系统在某一个特定硬件平台上运行。

Android系统移植的主要工作是:1.移植Linux驱动。2.移植HAL(硬件抽象层)。

Android 系统移植很大程度上是Linux内核的移植。Linux内核移植主要是移植驱动程序。

1.3查看Linux内核版本

方法一:在Linux终端执行uname  -a的命令

方法二:在Linux终端执行cat  /proc/version的命令

备注:/proc是系统内核的映像,该目录中的文件是存放在系统内存中的。

1.4Linux内核版本号的定义规则

Linux内核版本2.6.29.7-flykernel-12a中

2是主版本号,6是次版本号,29是修订版本号,7是对2.6.29的微调版本号,

flykernel-12a是Linux内核专门为flykernel调校。//调校描述可以是任意字符串,可自定义。

1.5如何学习Linux驱动开发

1.准备一个自己熟悉的Linux操作系统,用于开发和测试Linux驱动。

2.准备一块开发板(基于ARM)。

3.学习GNU C。

4.学习相关的硬件知识。

5.不断的实践。

1.6Linux驱动设备

1.6.1设备驱动的发展和作用

驱动是直接和硬件交互的一类程序,负责对硬件进行抽象。

1.6.2设备的分类及特点

驱动将设备分为:字符设备,块设备,网络设备。

1.字符设备:指必须以串行顺序依次进行访问的设备。如鼠标,键盘。

2.块设备:可以用任意顺序访问,以块为单位。如硬盘,软驱。

3.网络设备:面向数据包的接收与发送,并不对应文件系统的节点。

1.7见识一下什么叫Linux驱动

LED

任何一个Linux驱动都有一个装载函数和一个卸载函数,分别是module_init, module_exit.

posted @ 2016-04-29 12:10  安之若素2013  阅读(111)  评论(0编辑  收藏  举报