《Android底层接口与驱动开发技术详解》digest

时间:2022-09-13 22:04:51

第一章:
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. INTRODUCTION TO BIOINFORMATICS

    INTRODUCTION TO BIOINFORMATICS      这套教程源自Youtube,算得上比较完整的生物信息学领域的视频教程,授课内容完整清晰,专题化的讲座形式,细节讲解比国内的京师大 ...

  2. MySQL&colon; LEAVE Statement

    https://www.techonthenet.com/mysql/loops/leave.php This MySQL tutorial explains how to use the LEAVE ...

  3. Gnome创建桌面快捷方式

    Ctrl+Alt+T打开终端 输入gnome-desktop-item-edit 桌面/ --create-new (注: 桌面/ 要改为你桌面文件夹所在路径) 配置快捷方式属性,在“命令(A)”这行 ...

  4. Android 动画之ScaleAnimation应用详解

    本节讲解ScaleAnimation 动画, ScaleAnimation(float fromX, float toX, float fromY, float toY,int pivotXType, ...

  5. Subversion how&lbrack;Reprint&rsqb;

    1.   Subversion简介 Subversion(简称SVN)是一款功能强大的开源版本控制工具,支持Linux和Windows平台. SVN可以有两个访问方式,一种是独立服务器直接访问,即利用 ...

  6. linux创建守护进程

    守护进程deamon 是一个后台进程,无需用户输入就能运行,用来在系统后台提供某种服务. 常见的守护进程有Wbe服务器.邮件服务器以及数据库服务器等等.守护进程不能控制终端,所以任何的输入和输出都需要 ...

  7. jQuery拼图小游戏

    jQuery拼图小游戏 最后样式 核心代码部分 <script type="text/javascript" > $(function () { $("td& ...

  8. 基于JavaMail的Java邮件发送:简单邮件发送

    使用Java应用程序发送 E-mail 十分简单,但是首先你应该在你的机器上安装 JavaMail API 和Java Activation Framework (JAF) . 您可以从 Java 网 ...

  9. Linux安装Python3后,如何使用pip命令

    系统环境:CentOS7.4 已安装好Python3.6.5 Python3.6.5自带pip 使用pip安装第三方库,可运行指令,例如安装paramiko库: python -m pip insta ...

  10. python 约束与异常处理

    一.类的约束 1.约束就是对类的约束.其实就是父类对子类进行约束,子类必须要写xxx方法. 2.抽象:就是当我们没法对一个功能或者一个属性进行精确的表述,一般都采用抽象的方式给出. (1)抽象类的书写 ...