基于安卓系统的相机的模块设计与实现.doc_第1页
基于安卓系统的相机的模块设计与实现.doc_第2页
基于安卓系统的相机的模块设计与实现.doc_第3页
基于安卓系统的相机的模块设计与实现.doc_第4页
基于安卓系统的相机的模块设计与实现.doc_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

. 436.2.3 hal 层测试 . 446.3 camera 拍摄效果测试. 45第七章 结束语.49致谢.51参考文献.53目 录第一章 绪论.11.1 选题背景及研究意义 .11.2 国内外研究现状 .11.3 主要研究内容 .21.4 论文结构安排 .3第二章 相关技术概述.52.1 android 平台框架.52.2 linux 内核相关概念简介 .72.2.1 linux 用户空间和内核空间 .72.2.2 linux 系统调用 .82.2.3 linux 设备驱动 .8第三章 android 的开发环境搭建 .113.1 android 移植概述. 113.2 android 开发环境的搭建.123.2.1 开发所需软件资源.123.2.2 开发所需硬件资源.15第四章 android 下的 camera 模块分析和设计 .174.1 camera 应用层、运行时环境、库介绍.174.2 camera hal 层分析和设计 .174.3 linux 驱动层分析和设计 .194.3.1 camera 控制器驱动 .194.3.2 camera sensor 驱动.204.4 整体框架.23第五章 android 下的 camera 模块实现.255.1 基于 v4l2 标准的 camera 模块实现.255.1.1 hal 层实现.255.1.2 linux 驱动层实现 .275.2 camera 模块的普通字符设备方式实现.385.2.1 hal 层实现.385.2.2 linux 驱动层实现 .39第六章 camera 模块的测试.416.1 camera 模块的测试环境.416.2 camera 模块的功能测试.426.2.1 camera 硬件测试 .42第一章 绪论1第一章 绪论1.1 选题背景及研究意义随着科技的发展和无线移动互联网的普及,手机的功能越来越强大,人们对手机的需求也不仅仅是基本的打电话或玩简单的小游戏了,人们更多的是希望手机能像电脑一样方便,所以智能手机渐渐成为人们选择的目标。而 google 的android 系统凭借其通用、开源、免费的特点迅速的在短时间内占有了大量的市场,成为时下手机终端产品时下的热门。而作为 android 智能手机的必备功能之一的拍照功能更是常成为用户选择 android 产品的重要依据,其质量、稳定性、拍摄效果往往可以左右人们的选择。android 是基于 linux 内核的软件平台和操作系统,是 google 在 2007 年 11月 5 日公布的手机系统平台,早期由 google 开发,后由开放手机联盟(openhandset alliance)开发。它采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分。低层以 linux 内核工作为基础,只提供基本功能;其他的应用软件则由各公司自行开发,以 java 作为编写程序的一部分。android 下的 camera 模块同样分为三部分,应用层,hal 层,linux 驱动层。应用层由 google 提供参考代码,有较完善的接口,hal 层需要与驱动层相配合,hal 层通常由芯片厂商提供参考代码,由于没有统一的标准,不同的芯片公司会有不同的代码结构。驱动层会涉及 camera 控制器驱动和 camera sensor 驱动,camera 控制器驱动会由芯片厂商提供参考代码,camera sensor 驱动是手机设计公司根据camera控制器驱动提供的接口来对具体的camera外设进行初始化和配置以协调camera控制器和camera sensor使他们能够正常工作。但在camera hal层到驱动层没有固定的代码编写标准,这就为代码的编写提供了各种的框架结构,不利于手机的研发。针对这些问题,本文以实现某一块开发板上的 android camera 模块开发为背景,研究 camera 的在 hal 和驱动层的工作过程和原理,帮助开发者更好的理解和尽快的解决 android camera 相关的问题,提升 android 手机研发进度。1.2 国内外研究现状首款 android 手机是由 google 和 htc(宏达电)联合推出的 htc g1,它以android 为操作系统,包含移动电话工作所需的全部软件。随后,android 平台的研发队伍阵容强大,包括 google、htc(宏达电)、t-mobile、高通、摩托罗拉、abstractwith the rapid development of mobile internet, more people start to use smartphones. in all of these operating systems for smart phone, android system, withgoogles supports and its open source characteristic, has been supported by variouscompanies. camera equipment as an essential component of smart phone, has becomean important part of peoples attention. about camera, android system provides betterinterfaces for camera applications in upper layer. but in android hal layer and linuxdriver layer, there is no standard framework for camera module. as a result, this paper,developing and porting an android camera module in a development board as thebackground, introduces the development environment of android system and theporting of android, deeply analyzes and researches the hal layer, camera controllerdriver and camera sensor driver, summarizes the working principle and working flowof camera module in android system, and realizes the hal layer and linux driver layerof the camera module in a development board based on v4l2 standard and regularcharacter device model.keyword: android camera application hal layer camera controller drivercame ra sensor drive rra 模块设计和实现4ra 模块设计和实现2三星、lg 以及中国移动在内的 34 家企业都有基于该平台开发手机的新型业务。在中国,台湾的联发科也在2010的北京国际通信展上展出了他们的4、5款android手机,而台湾的 mstar、上海的展讯通讯等公司也正在积极研发基于 android 平台的手机。关于 android 下的 camera 模块,在 linux 下,存在一个 v4l(video for linux)标准,它由 alancox在 bttv驱动接口基础上改进而来,在 2006/2007 年发展为现在的 v4l2 标准。它为视频设备在 linux 内核和用户层应用程序提供了一系列接口函数。由于 android 是以 linux为内核,所以 android 下的 camera 模块可以按照 v4l2 标准来写 hal 层和内核驱动,但其中的 hal 层必须与 android 的一些标准接口相配合。但并不是所有的芯片设计公司都会使用这种标准,由于芯片设计不同和方便移植,一些芯片公司往往会按照自己的结构来设计 camera 模块,由于 camera 设备属于字符设备,所以这些芯片公司通常会在 linux下以普通字符设备驱动的方式来设计 camera 的驱动,在 hal 层会根据驱动提供的调用接口来设计 hal 层。camera 模块还包括 camera sensor,它通常由 sensor 公司提供,如omnivision、美光、格微科、比亚迪等。这些公司设计 camera sensor 的硬件设备,提供相关的硬件文档给手机设计公司,通常这些 sensor 的特性都具有很多的相似性,需要根据相应的文档配合手机芯片来完成 camera 模块。1.3 主要研究内容本文以三星 6410 芯片为平台、ov(omnivision)系列的 camera sensor,辅助对比高通 7227 芯片,分析 android 下的 camera 模块框架和各部分特征。主要完成的工作有:1. 研究国内外关于 android 的发展现状,介绍 linux 开发环境下 android 系统移植的相关知识;2. 分析和总结了 android 下 camera hal 层相关的结构;3. 分析某芯片公司的 camera 控制器驱动,总结其相关工作逻辑;4. 研究 camera sensor 的工作原理;5. 按照所总结方法设计了 android 的 camera 模块并在某个三星 6410 芯片的开发板上实现其功能。由于 camera 模块涉及 camera 应用层、hal 层、芯片上的 camera 控制器驱动、camera sensor 驱动、camera 硬件设备的连接,这些部分存在紧密的联系,某一层的问题往往会影响到整个模块的正常工作,所以在实现 camera 模块的过程中,对问题的排查,对代码的调试也是模块实现的重要组成部分。ra 模块设计和实现62. application frameworks(应用框架)应用程序就是依赖应用框架层次 api 开发的。应用架构设计的初衷是:简化组件复用机制;任何应用都能发布自己的功能,这些功能又可以被任何其他应用使用(当然要受来自框架的强制安全规范的约束)。和复用机制相同,框架允许组件的更换。所有应用都是一组服务和系统,一般包含: 一套丰富且可扩展的视图 组件,含有 lists, grids, text boxes, buttons, 甚至嵌入的网络浏览器; content providers(内容提供器) 使一个应用可以访问另外一个应用的数据(如联系人),或者使一个应用内部可以共享自身数据; resource manager(资源管理器),提供对非编码资源例如本地化字符串、图形和布局文件的访问通道; notification manager(通告管理器),使应用在状态栏显示自定义的警报通知; activity manager(行动管理器)负责管理应用的生命周期,提供通用导航回退支持。3. libraries(库)android 包含一套 c/c+库,android 系统的各式组件都在使用。这些功能通过 android 应用框架暴露给开发人员。下面列举一些核心库: systemc library - 衍生于 bsd 的标准 c 系统库(libc)实现(注:bsd:berkeley software distribution,伯克利软件套件,是 unix 的衍生系统,1970年代由伯克利加州大学开创),尤其支持嵌入式的基于 linux的设备; media libraries - 媒体库基于 packetvideos opencore;媒体库支持很多流行音频和视频格式、静态图形文件(包括 mpeg4, h.264, mp3, aac,amr, jpg, and png)的播放和录制; surface manager - 管理范围:对子系统显示功能的访问,跨应用的无缝组合 2d 和 2d 图形层; libwebcore - 是流行的浏览器引擎,可以支持 android 浏览器和嵌入应用的 web 视图组件; sgl - 底层的 2d 图形引擎; 3d libraries - 基于 opengl es 1.0 api 的实现;该类库使用硬件 3d 加速器(如果硬件支持的话)或者内置的、高度优化的 3d 软件加速机制; freetype - 支持位图和矢量字体; sqlite - 能干、轻量级的关系型数据库引擎,面向所有应用。4. android runtime(android 运行时)第一章 绪论31.4 论文结构安排论文共分为六章,各章主要内容如下:第一章:绪论。提出项目背景及研究意义、国内外研究现状、论文的主要研究内容和组织结构。第二章:相关技术概述。列举并详细描述研究过程中涉及到的关键理论和技术,其中包括 android 平台框架介绍、linux 内核相关概念介绍。第三章:android 的开发环境搭建及移植概述。介绍 android 手机开发所需要的软硬件环境。首先介绍开发所需配置的主机环境,如何获取开发所需源码。接下来根据源码编译需求进一步对主机环境进行配置,分别编译源码的不同部分。之后介绍源码所需要运行在的硬件环境。第四章:android 下的 camera 模块分析。通过分析把 camera 模块分为 camera应用层、hal 层、linux驱动层三个部分,指出 camera 模块功能实现主要在 hal层、linux驱动层,驱动层又分为 camera 控制器驱动和 camera sensor 驱动。接着分析 hal 层和 linux驱动层的工作流程,以及所涉及设备的工作原理。第五章:android 下的 camera 模块实现。通过 android 提供的接口函数实现camera 模块的 hal 层,在驱动层分别使用 v4l2 标准和普通字符驱动模式实现camera 的 linux 驱动。第六章:调试和测试。首先介绍 camera 模块从硬件到 android hal 层的功能调试方法。再介绍 camera 成像效果相关的知识,通过配合必要的检测设备修改驱动程序完成 camera 成像效果的调试。最后通过在不同的环境下测试 camera的功能和成像效果。第七章:总结。对 android 终端产品前景展望,对论文内容进行概括总结。第二章 相关技术概述7android 的核心类库提供 java 类库所提供的绝大部分功能。每个 android 应用都运行在自己的进程上,享有 dalvik 虚拟机为它分配的专有实例。为了支持多个虚拟机在同一个设备上高效运行,dalvik 被改写过。dalvik虚拟机执行的是 dalvik 格式的可执行文件(.dex)该格式经过优化,以降低内存耗用到最低。java 编译器将 java 源文件转为 class 文件,class 文件又被内置的 dx工具转化为 dex格式文件,这种文件在 dalvik 虚拟机上注册并运行。 在一些底层功能比如线程和低内存管理方面,dalvik 虚拟机是依赖 linux内核的。5. hardware abstraction layer(硬件抽象层)android 的 hal(硬件抽象层)是 google 因应厂商“希望不公开源码”的要求下,所推出的新观念,hal 的目的是为了把 android framework 与 linuxkernel 完整“隔开”。让 android 不至过度依赖 linux kernel,让 android framework的开发能在不考虑驱动程序的前提下进行发展。6. linux kernel(linux 内核)android 依赖 linux 2.6 版,提供核心系统服务:安全、内存管理、进程管理、网络组、驱动模型。内核部分还相当于一个介于硬件层和系统中其他软件组之间的一个抽象层次。2.2 linux 内核相关概念简介因为 camera 模块的驱动是 linux 下的驱动,其 hal 层代码也需要与 linux内核进行交互,所以有必要介绍一些 linux内核概念帮助理解。2.2.1 linux 用户空间和内核空间linux 为了保证程序的独立操作,保护资源不受非法访问,让操作系统运行在两种不同的级别。例如应用程序运行在用户空间,驱动程序运行在内核空间,这个任务是由 cpu 完成的。所有的现代处理器都具备这个功能,在较低的级别中将禁止某些操作。程序代码只能通过有限数目的“门”来从一个级别切换到另一个级别。当前所有处理器都至少具有两个级别,而其他一些处理器,比如 x86 系列,则有更多的级别。当处理器存在多个级别时,linux 使用最高级别和最低级别。在 linux 中,内核运行在最高级别(也称作超级用户态),在这个级别中可以进行所有的操作。而应用程序运行在最低级别(即所谓的用户态),在这个级别中,处理器控制着对硬件的直接访问以及对内存的非授权访问。每当应用程序执行系统调用或者被硬件中断挂起时,linux 将执行模式从用ra 模块设计和实现8户空间切换到内核空间。2.2.2 linux 系统调用所谓系统调用,就是内核提供的、功能十分强大的一系列的函数。这些系统调用是在内核中实现的,再通过一定的方式把系统调用给用户,一般都通过门(gate)陷入(trap)实现。系统调用是用户程序和内核交互的接口1。系统调用在 linux 系统中发挥着巨大的作用,如果没有系统调用,那么应用程序就失去了内核的支持。系统调用是用户接口在内核中的实现,如果没有系统调用,用户就不能利用内核。不同 cpu 处理系统调用的方法也不一样。比如 x86 系列处理器通过中断0x80,从用户态切换到内核态,通过处理器寄存器传递参数,执行系统调用。arm系列的处理器通过改变状态寄存器 cpsr 来从用户态切换到内核态,执行系统调用。一般系统调用的过程如下:1. 执行用户程序;2. 根据 glibc 中的函数实现,取得系统调用号并执行 int $0x80 产生中断(arm处理器通过改变状态寄存器);3. 进行地址空间的转换和堆栈的切换,执行 save_all(进行内核模式);4. 进行中断处理,根据系统调用表调用内核函数;5. 执行内核函数;6. 执行 restore_all 并返回用户模式。2.2.3 linux 设备驱动驱动是一个允许高级计算机软件与硬件交互的程序,这种程序建立了一个硬件与硬件,或硬件与软件沟通的界面,经由主板上的总线或其它沟通子系统与硬件形成连接的机制,这样的机制使得硬件设备上的数据交换成为可能2。linux 设备驱动在 linux 内核里扮演着特殊的角色。它们是截然不同的“黑盒子”,使硬件的特殊的一部分响应定义好的内部编程接口。它们完全隐藏了设备工作的细节。用户的活动通过一套标准化的调用来进行,这些调用与特别的驱动是独立的;设备驱动的角色就是将这些调用映射到作用于实际硬件的和设备相关的操作上。这个编程接口是这样,驱动可以与内核的其他部分分开建立,并在需要的时候在运行时“插入”2。linux 将设备驱动分为三类:字符设备驱动、块设备驱动和网络设备驱动。字符设备指那些必须以串行顺序依次进行访问的设备,如触摸屏、鼠标、camera第二章 相关技术概述5第二章 相关技术概述2.1 android 平台框架android 平台是一组面向移动设备的软件包,它包含了一个操作系统、中间件和关键应用程序。开发人员可以使用 android sdk(软件开发工具包)为这个平台创造应用程序。应用程序使用 java 语言编写并在 dalvik 之内运行。dalvik 是一款量身定制的虚拟机,它专为嵌入式应用设计,运行在 linux 内核上层,其框架分为 applications,application frameworks,libraries,android runtime,hardwareabstraction layer,linux kernel,如图 2.1 所示。android anatomyapplicationshome dialer im brower camera .application frameworksactivitymanagerwindowsmanagercontentprovidersresourcemanagernotificationmanager.android runtimecore librariesdalvik virtual machinelibrariessurfacemanagermediaframeworkssqlite webkitlibc .hardware abstraction layergraphicsaudio camera blutooth gps .linux kerneldisplay driver camera diver usb driverkeypad driver .图 2.1 android 平台框架1. applications(应用)android 将预装一组核心应用程序,包括 email 客户端、短信服务、日历日程、地图服务、浏览器、联系人和其他应用程序。所有应用程序都是 java 编程语言编写的。第二章 相关技术概述9等。块设备可以以任意顺序进行访问,以块为单位进行操作,如硬盘、nand 等3。字符设备和块设备驱动设计有很大差异,但对于用户层而言,他们都是用文件操作接口 open()、close()、read()、write()等函数进行访问。而网络设备驱动是面向数据包的发送和接收设计的,它并不对应于文件系统的节点。linux 驱动与上层应用、应用的关系如图 2.2 所示。用户应用程序linux系统调用接口硬件设备c语言库函数linux文件系统字符设备驱动块设备驱动网络设备驱动图 2.2 linux 应用层与底层硬件的交互过程图 2.2 描述了 linux 下应用层与底层硬件通信的过程,应用程序通过 c 库函数或 linux系统调用操作设备节点,通过 linux的文件系统找到对应的驱动操作,通过驱动与硬件设备交互。ra 模块设计和实现10章 andrid 的开发环境搭建11第三章 android 的开发环境搭建3.1 android 移植概述android 可以运行在 google 提供的模拟器上,也可以运行在具体与硬件相关的开发板上。运行在模拟器上的 android 不涉及 linux 内核部分,主要是为了方便上层开发,对需要各个外设参与的应用程序,google 提供了一系列的模拟代码,使之可以像真实的设备一样,为用户的应用程序提供参考。本文的 android camera 模块的开发,需要在一块基于 arm 芯片的开发板上运行。需要软件硬件两个方面的支持。本章介绍 android camera 模块开发在软件硬件方面的需求。首先需要一台基于 x86 的 pc 机作为开发使用的机器,并需要在这台机器上安装必要的操作系统,在对其进行配置。使其能够编译 android,并能够把编译成的文件下载到开发板上。而本文所述 android 移植是在真实的设备上,根据不同的芯片、不同的外设,提供能够使这些硬件正常工作的代码。将 android 移植到某个开发板上,通常需要移植三个部分:bootloader, linuxkernel 和 android 文件系统。1. bootloader 移植bootloader 是在 linux 内核运行之前运行的一段程序,它通常对 cpu、内存、flash、串口等进行初始化,移植需要根据开发板相关的硬件特性配置相关设配。bootloader 还担负着下载代码到开发板上的任务,通过相关的选项让 bootloader运行时停在某个位置,通过选择相应 linux 内核和 android 文件系统,之后把它们烧写到开发板的 nand 上,以便下次运行时调用。本文主要是对 android 下camera 模块的研究和开发,所以对 bootloader 移植不做详细分析,默认 bootloader不存在任何问题。2. linux 内核移植linux 内核移植需要根据不同的芯片外设。通过 make menuconfig 命令配置对应的通用硬件,再根据芯片和产品不同的硬件特性编写相应的驱动程序,通过修改 makefile 和 kconfig 把它们编入内核,最后通过 bootloader 提供的方法把内核文件烧写到开发板上。3. android 文件系统移植android 文件系统需要根据不同的用途,根据不同的芯片公司的设备提供与ra 模块设计和实现12设备通行的用户层代码,使用户可以方便的使用开发板的硬件资源。由于 android 内核是基于 linux 的,基于 linux 内核的操作系统是较好的。现在成熟的 linux 发行版有 ubuntu,fedora,debian 等。本章以 ubuntu10.04 为操作系统配置开发环境。3.2 android 开发环境的搭建本文的 android camera 模块的开发,需要在一块基于 arm 芯片的开发板上运行。需要软件硬件两个方面的支持。本章介绍 android camera 模块开发在软件硬件方面的需求。首先需要一台基于 x86 的 pc 机作为开发使用的机器,并需要在这台机器上安装必要的操作系统,在对其进行配置。使其能够编译 android,并能够把编译成的文件下载到开发板上。由于 android 内核是基于 linux 的,基于 linux 内核的操作系统是较好的。现在成熟的 linux 发行版有 ubuntu,fedora,debian 等。本章以 ubuntu10.04 为操作系统配置开发环境。3.2.1 开发所需软件资源本文所述的 camera 模块开发是在 android 2.1 源码基础上的开发,在实现camera 模块的过程中会用到 android 提供的一些接口和芯片公司提供的 bsp(board support package)上的一些函数。1. 获取 android 源代码在获取源代码之前,首先简单介绍下 git。git 是用于 linux 内核开发的版本控制工具。它用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。因为 android 是由kernel, dalvik、bionic、prebuilt、build 等多个 git 项目组成,为了更方便的管理这些项目的源码,google 为这些项目编写一个 python脚本 repo,它把 git 进行封装以同时管理这些源码。在 ubuntu下获取 android 最新源码需要以下几步。1) 安装 git 和 curlcuel 是一个利用 url 语法在命令行下的文件传输工具,会安装 repo 的时候用到。通过 sudo apt-get install git-core curl 安装。2) 下载 repo 脚本下载之前,新建一个目录,比如/repo,把它添加到环境变量里,在 ubuntu下ra 模块设计和实现14 arch目录包含了核心源代码所支持的硬件体系结构相关的核心代码。如对于 x86 平台就是 i386,对于 arm平台就是 arm。 include 目录包括了核心的大多数 include 文件。另外对于每种支持的体系结构分别有一个子目录。 init 目录包含核心启动代码。 mm 目录包含了所有的内存管理代码。 drivers 目录包含了系统中所有的设备驱动。它又进一步划分成几类设备驱动,每一种也有对应的子目录。比如本文需要开发的 camera 控制器和camera sensor 驱动位于 driver/media/video 目录下。 ipc 目录包含了核心的进程间通讯代码。 modules 目录包含已建好可动态加载的模块。 fs 目录包含了 linux 支持的文件系统代码。不同的文件系统有不同的子目录对应,如 ext3 文件系统对应的就是 ext3 子目录。 kernel目录是 linux主要核心代码。 net 目录是核心的网络部分代码。里面的每个子目录对应于网络的一个方面。 lib 目录包含了核心的库代码。 scripts 目录包含用于配置核心的脚本文件。 documentation目录是一些文档,起参考作用。接下来就可以编译内核了,在具体的编译之前,还需要根据芯片的种类来配置内核。通过在内核的根目录下执行 make menuconfig 命令来以菜单的方式来配置。也可以通过 make config, make xconfig命令来配置。由于 make config是以命令行形式来配置,较为繁琐。make xconfig 是以窗口模式下配置,在 linux 环境里一般也不用。linux 内核支持较多的 cpu 架构,提供了丰富的编译选项以适应不同的产品,这些都可以在编译前进行配置。其实 配置都在源码里对应着相应的makefile 和 kconfig 文件。它们支持把源代码直接或以模块的方式编如内核文件。通过 make menuconfig 可以方便的把需要的源码编入内核,把不需要的源码舍去,以减小内核的大小,调高产品的运行效率。2) android 文件系统的编译文件系统的编译需要开发环境提供一些必须的软件包,在 ubuntu 下,需要flex, bison, gperf, libsdl-dev, build-essential, libesd0-dev, libwxgtk2.6-dev, zip, curl,valgrind, phython 2.4 或以上版本, jdk1.5。通过 ubuntu 下的 sudo apt-get install 命令进行安装。为了更好理解 android 框架,简绍下 android 下的一些目录。 frameworks 目录包含了 android 的应用程序核心框架代码,以 java 和 c+章 andrid 的开发环境搭建15编写。 bionic 目录包含了 android 的仿生库。 bootable 目录包含了启动和恢复相关的代码和工具 build 目录包含了 android 工程编译的规则脚本,是其建立 android 系统的核心。 dalvik 目录包含了 android 自带的 java 虚拟机。 development 目录包含了程序开发所需要的模板和工具。 external 目录包含了第三方的一些软件和库。 hardware 目录包含了部分厂家开源的硬件适配层 hal 代码,camera 模块 hal 层的代码可以放在该目录下。 prebuilt 目录包含了 x86 和 arm 架构下预编译的一些资源。 system 目录包含了底层文件系统库、应用及组件,以 c 语言编写。 packages 目录主要存放 java 层应用程序代码。 vendor 目录包含了不同厂家的定制目录。 kernel目录是 android 底层所依赖的 linux 内核代码。 prebuilt 目录包含了各种平台下编译所需的脚本和交叉编译工具。接下来就可以开始编译了,与内核一样 android 文件系统也需要进行一些配置,android 的配置是通过配置一些常量的值来使 android 的 makefile 文件按照特定的需求来生产相应的文件。通常需要配置的常量有 target_product,target_simulator,target_build_type,target_build_variant。它们是提供给 android 的 makefile 文件的,决定编出来的目标文件的某些功能。如:target_product 是决定在 vendor 目录下的哪个产品是实际需要的。target_simulator 是决定给 android 模拟器使用的还是给开发板使用的等。3.2.2 开发所需硬件资源首先在处理器方面,android 要求至少为 arm9 200mhz以上的处理器。在内存方面,至少需要 32m 的内存。存储器方面,因为要保存 bootloader,linux 内核,android 文件系统,所以至少需要 128m 以上的 nand 存储器。本文以某一款samsung6410这个开发版为例介绍android下camera模块的实现需要哪些硬件条件。这个 samsung s3c6410 开发板处理器为 arm1176jzf-s 核,内存为 256mddr ram,达到了 andorid 运行的硬件要求。128m nand flash 足以存储bootloader,linux 内核,android 文件系统。4.3 寸真彩色 tft 液晶屏可以让我们直观的感受到 camera 的拍摄效果。标准 sd 卡座可以让 bootloader、linux内核、章 andrid 的开发环境搭建13修改/.bashrc 文件最后添

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论