第一章 介绍Android驱动开发和移植技术

主要对android和linux做了总体的介绍,让我们有了个感性的认识。

一、Android的四层系统架构:

a) Linux内核:Android是基于Linux内核的,所以它和linux的其他部分差异非常小,包括Linux的驱动以及内存管理,进程管理,带电源管理等程序。

b) C/C++的代码库:C/C++编写的代码库,也就是Linux下的.so文件以及dalvik虚拟机的运行时哦!

c) Android SDK API:用java语言编写的各种Library,而这些library是基于虚拟机格式的呢!

d) 应用程序:是用户(程序员和非程序员)所接触到的。

二、Android系统移植的主要工作:应用移植和系统移植。应用程序是将应用程序层的程序移植到某一个特定硬件平台上;系统移植是让Android操作系统在某一个特定硬件平台上运行。

三、查看Linux内核版本:Linux内核版本包括三个:linux2.4、linux2.6、linux3.x;查看方法有两个:1.在linux终端下执行uname -a命令;2.在linux终端下执行cat /proc/version命令。

四、版本号定义的原则:主要包括主版本号、次版本号、修订版本号、微调版本号、为特定的linux系统特别调校的描述。

五、学习驱动开发:我们需要搭建一个真正的linux操作系统环境,初学者呢最好还是使用Ubuntu linux的系统。

六、Linux设备驱动:是直接和硬件交互的一类程序哦,负责对硬件进行抽象的呢,有字符设备、网络设备、块设备。

七、小实验:利用驱动控制开发板上的3个LED灯,实现了对设备驱动的控制。

第二章 搭建Android开发环境

本章主要介绍了Ubutn linux下android开发环境的配置,具体如下:

一、Android底层开发需要的工具:JDK6或以上版本、Eclipse3.4或以上版本、ADT、CDT、Android SDK、Android NDK、交叉编译环境、linux内核源代码、Android源代码、调试串口的开发板工具minicom。

二、安装JDK:下载压缩包、解压、用gedit /etc/profile设置PATH环境变量,设置完成之后保存profile文件后,在终端输入source /etc/profile可重新装载profile,可以利用echo $PATH查看环境变量。

三、搭建Android应用程序开发环境:安装Android SDK、安装Eclipse、安装ADT、配置ADT、建立AVD。

四、安装Android NDK开发环境:下载Android NDK、安装CDT、命令方式编译Android NDK程序、导入Android NDK的例子、配置Android NDK的集成开发环境。

五、安装交叉编译环境:X86架构的cpu采用的是复杂指令集计算机,可以直接下载集成好的交叉编译环境,也可以自己制作交叉编译环境。CodeSourcery交叉编译环境就是下载好的交叉编译好的环境,可以直接下载安装使用,安装时使用sh package.bin命令,也可以使用虚拟环境中的交叉编译环境,Windows和Mac OSX跟linux的交叉编译环境也是大同小异。

第三章 Git使用入门

一、内核的很多代码以及很多项目(eclipse、android等)都使用了linux之父linus编写的git级逆行代码管理,linus独特的设计让git拥有非凡的性能和最为优化的存储能力。安装Git:1)Ubuntu linux10.10或更新的版本可以使用下面的命令安装Git:apt-get install git;apt-get install git-doc git-svn git-email git-gui gitk;2)Ubuntu 10.04或更低的版本可以用下面的命令:apt-get install git-core;apt-get install git-doc git-svn git-email git-gui gitk;3)RHEL、Fedora、centOS用户可以使用以下命令安装:yum install git;yum install git-doc git-svn git-email git-gui gitk。

二、查看Git文档:通常使用man命令直接查看帮助文档需要命令:man git-checkout;以文本形式查看需要命令:git help <sub-command>;查看checkout命令的文档需要命令:git help git-checkout;查看HTML格式的文件需要命令:git help -w git-checkout。

三、源代码的提交和获取:任何版本管理软件都有版本库,不同的是要对版本库的管理方式,所以必须创建版本库:git init;需要将文件提交到本地版本库:git commit;创建本地分支:git branch,也可以使用git branch new-branch创建新分支;切换本地分支:git checkout;在GitHub上创建新的开源项目;上传源代码到GitHub:git push;从GitHub下载源代码:git clone,可以使用如下命令下载整个工程:git clone git@github.com:androidguy/helloword.git。

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

一、下载、编译和测试源代码,安卓源代码有很多呢,比如:应用程序(QQ、微信、短信、电话、日历等)的源代码和SDK插件(adb、aapt等)的源代码、还有NDK的源代码等等。

操作步骤为:1.首先需要配置android源代码下载环境:(1)创建一个用于存放下载脚本文件(repo)的目录(可将该脚本文件放到任何目录中,使用~/bin);(2)下载repo脚本(用于下载源代码);(3)创建用于存放android源代码的目录(可放在其他目录中);(4)初始化;(5)开始下载android源代码;在下载代码的时候git会尽可能的占用宽带网速,所以会做不了其他的事情,如果要备份源代码,则不能删除android代码库(.git目录);2.android源代码目录结构解析,在这儿需要建立保存源代码的目录;3.下载android源代码中的一部分需要我们了解源代码的目录结构,这样就不需要等待很长时间下载android源代码的目录,有两个方法:使用reop sync命令;使用git clone命令;4.编译android源代码时需要调用android.mk文件来编译当前工程:(1)初始化编译环境;(2)选择目标;(3)编译android源代码;5.out目录结构分析;6.将自己的APK作为内置程序发布,这儿将会生成自己的apk程序嵌入到system.img文件中,删除apk程序需要获得root权限并直接删除apk文件;7.用模拟器测试system.img文件,这儿会重新生成system.img文件。

二、下载和编译linux内核源代码:下载linux内核源代码;这里下载的android代码并没有包含linux内核源代码,需要单独下载,这儿有下载内核源代码的步骤:git clone http://android.googlesource.com.kernel/common.git,执行这个命令可以下载到最新的内核源代码,查看当前的远程版本用git branch -a ,使用git checkout -b android-3.0 remotes/origin/android-3.0到处android3.0的内核;linux内核源代码的目录结构;安装android内核的编译环境:准备工作;解压编译器;验证交叉编译器是否安装成功;安装libncurses5;配置和编译linux内核。现在已经成功的搭建了交叉编译环境,可以尽情使用吧!

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

  1. Android深度探索(卷1)HAL与驱动开发 虚拟环境的安装

    前言: 最近在看<Android深度探索(卷1)HAL与驱动开发>安装随书带的虚拟环境浪费了很多时间,说是虚拟环境的安装倒不如说是虚拟环境的导入,其实没什么技术含量,也没有什么复杂的,只是 ...

  2. Android深度探索-卷1第一章心得体会

     本章介绍了安卓系统移植与驱动开发的概述,安卓的系统架构有四层:1 Linux内核,2 c/c++代码库, 3 Android SDK API, 4 应用程序 在读的过程中看到了专业名词,查了查,长点 ...

  3. Android深度探索-卷1第十章心得体会

    本章介绍了传统的printk 函数调试技术和其他的调试技术,如gdb gdbserver  kgdb 对于复杂的Linux 驱动及HAL 等程序库,需要使用各种方法对其进行调试,如,设置断点.逐步跟踪 ...

  4. Android深度探索-卷1第九章心得体会

    在android系统中使用Linux 驱动有两种方式一种是通过传统的方式直接与Lmux 驱动交互,如,直接读写设备文件的数据.另外一种是Android特有的,就是通过HAL 模块.HAL 模块本质是通 ...

  5. Android深度探索-卷1第四章心得体会

    这一章的和三章的git用法有联系,so,吧上一章的git基本用法搞好了再来,具体的方法就是看书上网查,这里就不做详细步骤介绍了.这章就有点意思了,是源码的下载和编译,有能看的,能自己鼓捣的,本章介绍的 ...

  6. Android深度探索-卷1第八章心得体会

    本章介绍了如何将Linux驱动分成多个实现文件和Linux常用的代码重用方式还有些强行卸载Linux驱动的方法 开发一个Linux驱动,可能会在init.exit等函数中发生错误导致Linux驱动安装 ...

  7. Android深度探索-卷1第七章心得体会

    创建LED驱动的设备文件 第一步:使用cdev_init函数初始化cdev 第二步:指定设备号.直接在代码指定或动态分配 第三步:使用cdev_add函数将字符设备添加到内核中的字符设备数组中 第四步 ...

  8. Android深度探索-卷1第五章心得体会

    S3C6410是由三星公司推出的一款低功耗.高性价比的RISC处理器,开发是,首先安装minicom串口调试工具: 第一步:检测当前系统是否支持USB转串口. Lsmod | grep usseria ...

  9. Android深度探索-卷1第六章心得体会

    这章主要介绍了第一个linux驱动程序:统计单词个数.Linux系统将每一个驱动都映射成一个文件,这些文件称为设备文件或驱动文件,都保存在/dev目录中.大多数Linux驱动都有与其对应的设备文件,因 ...

随机推荐

  1. JS获取元素尺寸大小、鼠标位置

    //e.clientX|Y:表示鼠标相对浏览器可视窗口的当前坐标 //e.offsetX|Y:表示鼠标相对于事件源对象的坐标 //e.pageX|Y:表示鼠标相对于网页的坐标 /* element.o ...

  2. VS学习

    7.9 今天打开老师给的俄罗斯方块的程序,硬是跑不出来.已经遇到了这几个问题 [1]在项目属性里面C++目录中修改头文件和库函数的绝对路径(基础知识刚学会) [2]errorC1083 SDKDDKe ...

  3. 在web.xml注册applicationContext.xml配置文件

    概要: Spring配置文件是集成了Spring框架的项目的核心,引擎的开始是:容器先是加载web.xml,接着是applicationContext.xml在web.xml里的注册.以下我们将介绍a ...

  4. python学习--字符串

    python的字符串类型为str 定义字符串可以用 ‘abc' , "abc", '''abc''' 查看str的帮助 在python提示符里 help(str) python基于 ...

  5. BWT压缩算法(Burrows-Wheeler Transform)

    参考: BWT (Burrows–Wheeler_transform)数据转换算法 压缩技术主要的工作方式就是找到重复的模式,进行紧密的编码. BWT(Burrows–Wheeler_transfor ...

  6. SQL DDL

    Sql语言被分为四大类:数据查询语言(DQL),数据操纵语言(DML),数据定义语言(DDL),数据控制语言(DCL). 1. 数据查询语言(DQL) 数据查询语言基本结构由select子句,from ...

  7. ireport5.6+jasperreport6.3开发(四)--以javabean为基准的报表开发(ireport)

    javabean完成以后就是添加ireport的报表了 打开ireport的option然后在classpath中添加路径. 然后在ireport中追加数据源如图,点击图标后会出现数据源列表然后按ne ...

  8. Hibernate连数据库

    1.建数据库,建表(一定要设主码) create database Hibernate create table Students( sno char(10) primary key, sna cha ...

  9. java selenium针对多种情况的多窗口切换

    一.通过按钮点击打开的新页面,不涉及到打开多窗口,只要在已有打开的窗口实现切换操作即可 Set<String> winHandels = driver.getWindowHandles() ...

  10. 声明变量,一定要用 var!

    public static T TryGet<T>(Func<T> func, T ifError = default(T)) { try { return func(); } ...