第一章:
IDE:Eclipse ADT for java developer
其它: Apache Ant Java SE Development Kit5或6 Linux和Mac上使用Apache Ant 1.65+,
Windows上使用1.7+版本;(单独的JRE是不可以的,必须要有JDK),不兼容Gnu Java编译器(gcj)

Java_Home x:\xx\xx\java\JDK1.6.0-17
classpath:.;%JAVA_HOME%/lib/rt.jar;%JAVA_HOME%/lib/tools.jar

Android为Eclipse定制一个专用插件---Android Development Tools(ADT),此插件为用户提供一个强大的开发Android应用程序的综合环境。
ADT扩展了Eclipse功能,可以让用户快速地建立Android项目,创建应用程序界面。
安装Android Development Tools plug-in

AVD(Android Virtual Device),每个AVD模拟一套虚拟设备来运行Android平台,这个平台至少要有自己的内核、系统图像和数据分区,还可以有
自己的SD卡和用户数据及外观显示器等。

Commnad:
Android list targets查看可用的平台

开发环境:
JDK,开发工具Eclipse、Android SDK,安装了ADT并进行SDK HOME的配置,创建一个AVD或使用真机(需要装驱动)

第二章:
驱动含有推动和发动之意,计算机领域的驱动也含有推动之意。

驱动程序是硬件厂商根据OS编写的配置文件,没有驱动程序,计算机中的硬件就无法工作(因为OS和硬件不认识,没法交流)。
驱动程序是硬件的一个构成部分,当安装新的硬件时,也必须安装对应的驱动程序。

windows是怎么知道安装的是什么设备,以及要复制哪些文件呢:安装是.inf文件。
.inf是从Windows95时代开始引入的一种描述设备安装信息的文件,它使用特定的语法文字来说明要安装的设备类型、生产厂商、型号、要复制的文件、复制到的目标路径,以及要添加到注册表中的信息。通过读取和解释这些文字,Windows可以知道应该如何安装驱动程序。
其它.inf文件不仅可以安装驱动程序,还可以安装与硬件并没有什么关系的软件,如Windows系统支持的“Windows更新”功能,在更新时下载的系统部件就是使用.inf文件来说明如何安装该部件的。

所谓手机驱动,就是有的手机和计算机不能直接连接,必须使用手机自带的磁盘驱动一下。其它就是安装了一个读取手机内存信息的程序。

如果通过串口连接计算机,一般不需要驱动程序,但需要用软件来实现和手机的连接。手机的附赠光盘中通常会有这样的软件。

Android SDK目录:
add-ons:里面包含官方提供的API包,最主要的是Map的API
docs:里面包含文档,即帮助文档和说明文档
platforms:针对每个版本的SDK版本提供了和其对应的API包以及一些示例文件,其中包含各个版本的Android
temp:包含一些常用 的文件模版
tools:包含一些通用的工具文件
usb_driver:包含AMD64和x86下的驱动文件
SDK Setup.exe:Android的启动文件

SDK工具集:
Android模拟器:模拟器是运行在计算机上的虚拟移动设备。

调试监视服务ddms.bat
Android调试桥adb.exe:adb是具有多种用途的工具,可以帮助管理设备和模拟器的状态:
可以通过下面几种方法加入adb:
(1)在设备上运行shell命令
(2)通过端口转发来管理模拟器或复制文件
(3)从模拟器或设备上复制来或复制走文件

Android资源打包工具aapt.exe:此工具可以创建apk文件,在apk文件中包含了Android应用程序的二进制文件和资源文件

Android接口描述语言aidl.exe:用于生成进程间接口代码
创建SD卡工具
Dx工具dx.bat将class字节码重写为Android字节码(被存储在dex文件中)
生成Ant构建文件activitycreator.bat
avd

Android作为一个移动设备的平台,其软件层次结构包括OS,中间件Middle Ware和应用程序Applications

SSL Secure Socket Layer:位于TCP/IP协议与各种应用层协议之间,为数据通信提供安全支持

FreeType:位图和矢量字体的功能

Android的各种库一般是以系统中间件的形式提供的,它们均有一个显著特点是与移动设备平台的应用密切相关。

Android运行环境主要是指虚拟机技术-Dalvik。
Dalvik虚拟机和一般Java虚拟机不同,它执行的不是Java标准的字节码(ByteCode),而是Dalvik可执行格式(.dex)中执行文件

在执行过程中,每个应用程序即一个进程(Android中一个应用就会对应Linux一个用户,Linux的一个Process).
二者的最大区别在于,Java VM是基于栈的虚拟机(Stack-based),而Dalvik是基于寄存器的虚拟机(Register-Based).
显然,后者的最大好处在于可以根据硬件实现更大的优化,这更适合移动设备的特点。

一个Android应用程序可以利应用程序框架中以下几个部分:
Activity(活动)
Broadcast Intent Receiver(广播意图接收者)
Service(服务)
Content Provider(内容提供者)
Intent and Intent Filter

Androidmanifest.xml相当于应用的配置文件,在这个文件中必须声明应用 的名称,应用所用到的Activity,Service以及receiver等

Android根据每个进程中运行的组件及组件的状态把进程放入一个Importance Hierarchy(重要性分级)
。进程按照重要程序分类可分为以下5类:
前台进程(foreGround)
可见进程Visible
服务进程Service
后台进程Background
空进程Empty:不拥有任何活动的应用程序组件的进程。保留这种进程的唯一原因是在下次应用程序的某个组件需要运行时,不需要重新创建进程,这样可以提高启动速度

Linux和Android的关系如下:
Andorid采用Linux作为内核
Android对Linux内核做了修改,以适应其在移动设备上的应用
Android开始是作为Linux的一个分支,后来由于无法并入Linux的主开发树,已被Linux内核组从开发树中删除(2010.2)

Android是在Linux2.6的内核基础上运行的,提供核心系统服务。

内核部分还相当于一个介于硬件层和系统中其它软件组之间的一个抽象层

Android系统的系统层面的底层是LInux,中间加上了一个叫做Dalvik的Java虚拟机,表面层上面是Android运行库

在Android系统中,采用Yaffs2作为MTD nand flash文件。Android2.2以上使用Ext4文件系统:

谷歌新Nexus S智能手机将是第一款使用ext4文件系统的Android设备。谷歌本月初在Android开发者博客发表了官方声明,讨论Android上ext4的采用将如何影响第三方应用开发商。

在上周的后续文章中,ext4的开发者Ted T'so评论了过渡问题,并就fsync数据丢失问题做了进一步的澄清,他说,由于更高水平质量保证测试,在Android上的风险将是最小的。

文件系统的开发专家,T'so 在ext4的开发起到了关键作用,
ext4是目前Linux内核的标准文件系统。目前大多数Android设备使用YAFFS,一个适合用于闪存的轻量级的文件系统,通常用于移动和嵌入式设备。
YAFFS的问题,T'so在他的博客解释,“在于它是单线程的,可能‘已经成为双核系统的瓶颈’。使用多核ARM处理器的下一代Android设备中,并发性将是重要的。
我们希望看到双核心的Android设备,包括平板电脑,最早将在CES上宣布。”

Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash.  It is widely used with Linux, RTOSs, or no OS at all, in consumer devices. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.

Yaffs is Open Source...

You can have a look at the code at any time. Download it now! And it’s suitable for GPL and commercially licensed projects.

Read more

Royalty Free...

Whether you use yaffs under the GPL or under a commercial licence, Yaffs is free of any per-unit royalty.

Read more

Tried and tested in millions of devices...

Yaffs is widely used in Linux and proprietary commercial RTOSs. It’s been included in hundreds of devices, and shipped as part of Google’s Android, with millions of units sold.

Read more

Yaffs is a safe choice...

Yaffs has a long history, coupled with continuing development. There are thousands of developers who have used it, and it’s deployed in many millions of devices.

Read more

An active community...

There’s an active community of people who use Yaffs and who have developed with Yaffs, just a click or two away.

Read more

Suitable for open and closed source projects...

If you want to use Yaffs on an Open Source project, then go ahead and download the GPLed version now.  It is also available under a closed source licence for commercial use.

Read more

Yaffs is fully supported...

Yaffs support is available through the Yaffs community but for those problems that aren’t suitable for a public forum, we offer consultancy with direct access to our developers.

Read more

A robust flash file system...

After more than 100,000 >random< power-failures during reading or writing, a test file showed NO data corruption at all! Read more

内核的作用就是将应用程序和硬件分离开来
内核的主要任务是负责与计算机硬件进行交互,实现对硬件的编程控制和接口操作,高度对硬件资源的访问。除此之外,内核为用户应用程序提供一个高级的执行环境和访问硬件的虚拟接口。

字符设备:提供连接的数据流,应用程序可以顺序读取,通常不支持随机存取。此类设备运行按字节/字符来读写数据,modem就是字符设备
块设备:应用程序可以随机访问设备数据,程序可自行确定读取数据的位置。硬件

如果以一个原始的Linux OS为基础,改造成一个适合于Android系统,所做的工作其实非常简单,就是增加适用于Android的驱动程序。

Android的RIL(Radio Interface Layer)提供了电话服务和Radio硬件之间的抽象层。RIL负责数据的可靠传输,AT命令的发送,以及Respose的解析。
应用处理器通过AT命令集与带GPRS功能的无线通信模块通信。AT commnad由Hayes公司发明,是一个调制解调器制造商采用折一个调制解调器命令语言,每条命令以字母“AT“开头

《Android底层接口与驱动开发技术详解》digest的更多相关文章

  1. Windows驱动——读书笔记《Windows驱动开发技术详解》

    =================================版权声明================================= 版权声明:原创文章 谢绝转载  请通过右侧公告中的“联系邮 ...

  2. 《Windows驱动开发技术详解》之分层驱动程序

    分层驱动程序概念 分层的目的是将功能复杂的驱动程序分解成多个简单的驱动程序.一般来说,他们是指两个或两个 以上的驱动程序,它们分别创建设备对象,并且形成一个由高到低的设备对象栈.IRP请求一般会被传送 ...

  3. 《Windows驱动开发技术详解》之驱动程序调用驱动程序——通过设备指针调用其他驱动程序

    本节介绍“手动”构造各个IRP,然后将IRP传递到相应驱动程序的派遣函数里. 获得设备指针 每个内核中的句柄都会和一个内核对象的指针联系起来.ZwCreateFile内核函数可以通过设备名打开设备句柄 ...

  4. 《Windows驱动开发技术详解》之读写操作

    缓冲区方式读写操作 设置缓冲区读写方式:

  5. 《Windows驱动开发技术详解》之驱动程序的基本结构

    驱动对象 每个驱动程序会有唯一的驱动对象与之对应,并且这个驱动对象是在驱动加载的时候被内核中的对象管理程序所创建的.驱动对象用DRIVER_OBJECT数据结构表示,它作为驱动的一个实例被内核加载,并 ...

  6. 【原创】《windows驱动开发技术详解》第4章实验总结二

    1 实验要求(WDM驱动)     2 编写过程   2.1 确立整体架构   2.1.1 入口函数——DriverEntry   (1)作用 设置pDriverObject结构体,注册AddDevi ...

  7. 【原创】《windows驱动开发技术详解》第4章实验总结一

    目录 1 实验要求 2 编写过程 2.1 确立整体架构 2.1.1 入口函数——DriverEntry 2.1.2 自定义创建设备函数——CreateDevice 2.1.3 卸载函数——Driver ...

  8. 《Windows驱动开发技术详解》之定时器

    I/O定时器 I/O定时器是DDK提供的一种定时器.它每个1s钟系统会调用一次I/O定时器例程.I/O定时器例程运行在DISPATCH_LEVEL级别,因此在这个例程中不能使用分页内存,否则会引起页故 ...

  9. 《Windows驱动开发技术详解》之自定义StartIO

    自定义StartIO 系统定义的StartIO队列只能使用一个队列(DDK提供的StartIO内部只有一个队列),这个队列将所有的IRP进行处理化.例如,读.写操作都会混在一起进行串行处理.然而,有时 ...

随机推荐

  1. php.ini 全站,和htaccess web目录 默认头部和尾部 auto_prepend_file

    php.ini ; Automatically add files before PHP document. ; http://php.net/auto-prepend-file auto_prepe ...

  2. python基础教程第5章——条件循环和其他语句

    1.语句块是在条件为真(条件语句)时执行或者执行多次(循环语句)的一组语句.在代码前放置空格来缩进语句即可穿件语句块.块中的每行都应该缩进同样的量.在Phyton中冒号(:)用来标识语句块的开始,块中 ...

  3. 一个失误导致微信下载图片接口Token失效

    公司的应用调了一个微信上传下载图片的接口,本来在线上跑的好好的,什么问题没有,但是这两天总是不定时的出现下载下来的图片损坏,拿着Token和serverid去接口测试网页验证,返回的是Token失效了 ...

  4. Inno Setup 安装inf文件的一个例子

    原文 http://zwkufo.blog.163.com/blog/static/2588251201063033524889/ ; INF安装例子; [Setup]; 注意: AppId 的值是唯 ...

  5. cf459D Pashmak and Parmida's problem

    D. Pashmak and Parmida's problem time limit per test 3 seconds memory limit per test 256 megabytes i ...

  6. Unity doesn't load, no Launcher, no Dash appears

    1. 重新安装 ubuntu-desktop不起作用. Enter the following commands:- Ctrl+Alt+F1 login there by user name and ...

  7. Qt widgets deeps--烧鸡

    1,Qt类读取目录 QDir读取目录内容--将读取结果输出到一个QMultiLineEdit对象 QMultiLineEdit *medit; medit = new QMultiLineEdit(t ...

  8. 创立Est•Design华服高级成衣定制工作室 - 北京服装学院-莱佛士国际学院

    创立Est•Design华服高级成衣定制工作室 - 北京服装学院-莱佛士国际学院 创立Est•Design华服高级成衣定制工作室 创立Est•Design华服高级成衣定制工作室 童雪涛   " ...

  9. hdu 1181 变形课(dfs)

    Problem Description 呃......变形课上Harry碰到了一点小麻烦,因为他并不像Hermione那样能够记住所有的咒语而随意的将一个棒球变成刺猬什么的,但是他发现了变形咒语的一个 ...

  10. 任务调度开源框架Quartz动态加入、改动和删除定时任务

    Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制.Quartz框架包括了调度器监听.作业和触发器监听.你能够配置作业和触发器监听为全局监听或者是特定于 ...