Android深度探索(卷1)HAL与驱动开发(总)

  第一章Android系统移植与驱动开发概述主要讲了Android系统架构,Android系统移植的主要工作,查看Linux内核版本,Linux内核版本号的定义规则,如何学习Linux驱动开发,Linux设备驱动以及Linux驱动的典型例子:LED。

  首先Android是一个非常优秀的嵌入式操作系统,经过了几年的快速发展,已经形成了Linux内核,c/c++代码库,Android SDK API,应用程序四层系统架构。然后介绍了一下Android系统移植的主要工作,主要分为应用移植和系统移植两部分。当然,移植的工作说多不多,说少也不少,如果要移植的Android系统提=提供了系统源代码,那就好办多了,直接根据移植的目标平台修改驱动代码就可以了。并且知道了Linux2.6是目前使用最广泛的版本,Android就使用了该版本。

  那么,怎样学习Linux驱动开发呢,由于Linux的内核版本更新较快,每一次内核的变化就意味着Linux驱动的变化,所以学习Linux驱动开发需要一个真正的操作系统来搭建Linux驱动的开发环境,并且在该系统下测试Linux驱动。还有GUN C 也是学习Linux驱动的一个必须掌握的技术。

  了解了上面这些,我认识到学习Linux驱动编程一定要了解Linux驱动只与Linux内核有关,与用户使用的Linux系统无关。唯一可以判断Linux内核是否相同的方法就是Linux内核版本号。

  第二章搭建Android开发环境主要介绍了如何搭建Android底层开发的环境,主要包括Android应用程序开发环境,Android NDK开发环境和交叉编译环境的搭建。Android底层开发需要很多工具,例如Android SDK,Android NDK等等,搭建Android应用程序开发环境都是在Linux下编写和测试的。由于Android NDK不能作为Android应用程序来运行,因此,使用Android NDK开发程序之前必须先安装Android SDK。

  然后是安装交叉编译环境,X86架构的CPU采用的是复杂指令集计算机,而ARM架构的CPU使用的是精简指令集计算机。通常交叉编译器和相关工具包含了很多可执行文件以及大量的共享库及头文件等资源,这些资源的合集称为交叉编译环境。

Android开发环境的配置主要是在Ubuntu Linux环境下进行的。在配置好的交叉编译环境下,可以编写一个简单的C程序来测试一下这个交叉编译环境

//first.c

#include<stdio.h>

Int main()

{

Printf(“first arm program\n”);

Return 0;

}

输入#arm-none-linux-qnueabi-gcc -static -o first first.c编译first.c文件

输入#adb push first /data/local将first文件上传到任意的Android设备的/data/lacal目录中

使用adb shell命令进入Android设备的控制台,并进入/data/lacal目录,执行#./first就会输出“first arm program”信息。First程序在X86架构上运行的Ubuntu Linux中是无法运行的。

第三章Git使用入门

  一开始并不知道Git是什么东西,阅读了本章前面的介绍,大概明白了Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

  Git的功能特性主要有以下几点:从一般开发者的角度来看,git有以下功能:1:从服务器上克隆数据库到单机上。2:在自己的机器上创建分支,修改代码。3:在单机上自己创建的分支上提交代码。4:在单机上合并分支。5:新建一个分支,把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。6:生成补丁,把补丁发送给主开发者。7:看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突,就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。8:一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。

  首先是要安装Git,可以使用#apt-get intstall git等这些命令来直接安装,然后是查看Git文档,接下来是源代码的提交与获取,就是要创建版本库:Git init并将文件提交到本地版本库:Git commit,创建本地分支:Git branch,切换本地分支:Git checkout以及在GitHub上创建开源项目等等。

  我觉得编者说的一句话很有道理,学习新技术的最好方法不是阅读技术书籍,也不是在网上查看别人写的文章,而是直接阅读自己感兴趣的代码。我今后要努力朝这方面去努力了。

第四章源代码的下载和编译

  这一章的Android源代码包含了很多东西,如嵌在Android系统中的应用程序的源代码和Android SDK带的各种工具的源代码等等,当然,在了解这些源代码之前,我们首先应该做的就是配置Android源代码的下载环境,配置完成以后就是对Android源代码目录结构的解析,经过长时间的等待,多达4g的Android源代码终于下载完成。其实,如果我们只需要一部分源代码的时候,只要了解了Android源代码的目录结构,就可以下载任何我们想要的部分。

  接下来呢,就是编译我们的Android源代码,由于Android源代码中的每一个工程目录都会有Android.mk文件,所以在编译整个Android源代码时会递归调用每一个工程目录中的Android.mk文件来编译当前的工程。第一步要初始化编译环境,第二步使用lunch命令来设置编译目标,第三步编译Android源代码。

  其实Android移植主要就是linux内核的移植,linux内核移植主要是linux驱动的移植。所以为了开发和驱动,就是搭建了两套开发环境:Android应用程序开发环境和linux内核开发环境。

时间: 2024-12-17 04:30:02

Android深度探索(卷1)HAL与驱动开发(总)的相关文章

Android深度探索(卷1)HAL与驱动开发学习笔记(2)

Android深度探索(卷1)HAL与驱动开发学习笔记(2) 第二章搭建Android开发环境 书中介绍了两种JDK的安装方法, 方法一: 从官网下载JDK并进行配置,解压后在终端打开profile文件来设置PATH环境变量(# soure /etc/profile),打开profile文件后输入下面的内容 export PATH=.:developer/jdk6/bin:$PATH 保存profile文件以后,有两种方法可以重新加载profile文件. 1.# sourse  /etc/pro

Android深度探索(卷1)HAL与驱动开发 心得体会 第十章 嵌入式Linux的调用技术

Android深度探索(卷1)HAL与驱动开发 心得体会 第十章  嵌入式Linux的调用技术 对于复杂的Linux驱动以及HAL等程序库,需要使用各种方法对其进行调试.例如,设置断点,逐步跟踪代码.输出调试信息等.虽然嵌入式Linux在调试方面并没有Visual Studio.Delphi.Eclipse这些可视化工具方便,但是学习一些这方面的技术无疑更有助于开发强大而稳定的Linux内核模块. 对于嵌入式Linux内核模块,可执行程序.代码库的调试可能更要复杂些.因为在大多数时候需要至少两台

Android深度探索(卷1)HAL与驱动开发 第一章&#160;Android系统移植与驱动开发概述 读书笔记

Android深度探索(卷1)HAL与驱动开发 第一章 Android系统移植与驱动开发概述 读书笔记 本章是 Android系统移植与驱动开发概述性的具体讲解.首先,Android被分为了四层架构.在最底层的是Linux内核 .然后分别是C/C++代码库.Android SDK A和应用程序.而Android的移植又分为系统移植和应用移植.系统移植要实现Android操作系统在其他硬件平台上运行起来,其中的关键是Linux的内核.内核必须要完成对平台上运行的各个硬件的识别.所以这就需要Linu

Android深度探索(卷1)HAL与驱动开发 第二章 搭建Android开发环境 读书笔记

Android深度探索(卷1)HAL与驱动开发 第二章 搭建Android开发环境 读书笔记   本章主要讲解在Ubuntu Linux 下搭建Android开发环境. 1.JDK:从官网下载压缩包,并将其解压缩. Gedit etc/profile 并设置PATH环境变量,记得PATH. 2.搭建Android应用程序开发环境. 安装Android SDK 安装Eclipse 安装ADT 配置ADT 建立AVD 这个步骤是安装Android SDK,步骤与操作与在Windows操作系统下的安装

Android深度探索(卷1)HAL与驱动开发 第四章 源代码的下载和编译 读书笔记

Android深度探索(卷1)HAL与驱动开发 第四章 源代码的下载和编译 读书笔记     本章学习了使用git下载两套源代码并搭建两个开发环境.分别为Android源代码和Linux内核源代码.Android源代码中包含了HAL(即硬件抽象层) 的代码,并学习了如何搭建这两种开发环境. Android 的移植的本质就是Linux内核的移植,Linux内核的移植主要是Linux驱动的移植.而开发和测试Linux驱动就需要安装以上两个开发环境. 搭建两套环境的具体步骤如下: 一.下载编译和测试A

Android深度探索(卷1)HAL与驱动开发 第三章 Git使用入门 读书笔记

Android深度探索(卷1)HAL与驱动开发 第三章 Git使用入门 读书笔记     本章是对Git的一个概述. Linux是一个开源的系统.事实上,在Linux上许多软件都和底层程序以及内核驱动有关,然而Linux内核的版本非常多,如果每个版本上的软件都采用安装包的形式,则匹配这么多版本的安装包将十分庞大.所以有很多软件不是以二进制安装包的形式来安装和使用的.而是将源代码下载下来,并在每个用户自己的Linux中编译并安装,即使用make 和make install 命令.而Linus作为L

Android深度探索(卷1)HAL与驱动开发 第六章 第一个Linux驱动程序:统计单词个数

Android深度探索(卷1)HAL与驱动开发 第六章 第一个Linux驱动程序:统计单词个数 统计单词个数的功能是封装在Linux驱动中的. Linux驱动的工作和访问方式是Linux亮点之一,同时受到了业界大防范好评.Linux系统将每一个驱动都映射成一个文件.这些文件称为设备文件或者驱动文件,都保存在 /dev 目录中.这种设计理念使得与Linux驱动进行交互就像与普通文件进行交互一样容易.当然,也比访问Linux API 更容易.由于大多数Linux驱动都有与其对应的设备文件,因此与Li

Android深度探索(卷1)HAL与驱动开发学习笔记(7)

Android深度探索(卷1)HAL与驱动开发学习笔记(7) 第七章 控制发光二极管   LED驱动实现原理       2. 编写LED驱动 * 创建LED驱动的设备文件 ·使用cdev_init 函数初始化cdev ·指定设备号 ·使用cdev_add函数将字符设备添加到内核中字符设备组中 ·使用class_creat宏创建stuct class ·使用device_creat 创建设备文件 卸载LED驱动的设备文件 依次调用device_destory.class_destory.unre

Android深度探索(卷1)HAL与驱动开发学习笔记(4)

Android深度探索(卷1)HAL与驱动开发学习笔记(4) 第四章  源代码的下载与编译 一.源代码配置Android源代码下载环境 1.建一个用于存放下载脚本文件(repo)的目录 # mkdir ~/bin # PATH=~.bin:$PATH 2.下载repo脚本文件 # curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo #chmod a+x ~/bin/repo 3.创建用于存放Andro

Android深度探索(卷1)HAL与驱动开发学习笔记(6)

Android深度探索(卷1)HAL与驱动开发学习笔记(6) 第六章 第一个Linux驱动程序 统计单词个数   Linux系统将每一个驱动都映射成一个文件.这些文件称为设备文件或驱动文件,都保存在/dev目录中.这种设计理念使得与Linux驱动进行交互就像与普通文件进行交互一样容易.虽然C语言里没有事件的概念,但却有与事件类似的概念,这就是回调(c a l l b a c k)函数.因此,编写Lin u x驱动最重要的一步就是编写阴调函数,否则与设备文件交互的数据将无法得到处理. 6.1编写L