zoukankan      html  css  js  c++  java
  • 第一章

     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.

  • 相关阅读:
    vue关于样式的绑定
    vue插口
    vue组件 父子 通讯
    vue实现翻页功能加高阶函数加购物车
    MySQL 索引面试总结
    phpstorm配置git并解决Terminal 中文乱码(Unicode 编码)的方法
    php 下载图片并打包成Zip格式压缩包
    MySQL5.6升级到5.7详细教程
    windows下安装vue教程
    一致性hash算法详解
  • 原文地址:https://www.cnblogs.com/yajuan2013/p/5445852.html
Copyright © 2011-2022 走看看