基于Android的毕业实习报告

成绩:         

西安建筑科技大学

毕业实习报告

院 (系):   信息与控制工程学院   

专业班级:      计算机1201      

实习单位:  计算机技术应用研究所  

实习时间:  2015.2.25—2015.3.15 

学生姓名:       ***         

学     号:         110620111          

指导教师:        **          

  

        20## 年 3 月 20 日


基于Android的离散数学课程学习助手的设计与实现”

的初步分析与简单设计

1. 前言

1.1 项目背景和意义

   如今手机就像钥匙一样,是我们出门必带的物品之一。随着科技的迅猛发展,现在的手机都是智能手机,它的功能不仅仅只是用来打电话或是收发短信,我们还可以用它听歌看视频、用蓝牙传输数据、玩游戏、上网等等,比起用计算机访问因特网更方便快捷。而智能手机中占据领先地位的当数android操作系统的智能机。

Android是一套真正意义的开放性移动设备综合平台,它包括操作系统、中间件和一些关键的平台应用。Android的Java程序运行环境包含一组Java核心函数库及Dalvik虚拟机,他们有效地优化了Java程序的运行过程。Android系统平台基于优化了的Linux内核,它提供诸如内存管理、进程管理、设备驱动等服务,同时也是手机硬件的连接层。

Android最大的优点在于它是一个开放的体系结构,具有非常好的开发和调试环境,而且还制成各种可扩展的用户体验,Android里面有非常丰富的图形系统,对多媒体的支持功能和非常强大的浏览器。

Android平台的开放性特点既能促进技术的创新,又有助于降低开发成本,还可以使运营商能非常方便地地址特色化产品,因此,它具有很大的市场发展潜力。

随着4G网络的使用,移动终端不再是通讯网络的终端,还将成为互联网的终端。因此,智能移动终端的应用和需要的服务将会有很大的发展空间。

Android在短短的时间内以惊人的速度占据的大量的智能手机终端市场中脱颖而出,而且将继续扩大其用户量。而人流量、信息量都非常大的高校对智能终端的需求非常大,广大学生用户希望在第一时间最便捷的查询到需要的信息,因此,开发一款基于android手机的校园助手软件意义重大。

1.2 国内外现状分析

从目前市场来看,主要的竞争还是在于微软、苹果和安卓之间,三大操作系统可谓是三足鼎立。其中最有影响力的要数android,安卓的特点及发展前景是我选择安卓开发校园助手的根据,后面会详细介绍安卓开发平台。下面说介绍一下现在手机操作系统发展展现状:

1、塞班(Symbian)

昔日的行业大哥,这个日渐落寞的操作系统,曾经红遍天下。但是随着近些年苹果和谷歌的发力,一直在走下坡路,塞班的市场份额已经降到了谷底。有统计显示,到20##年底,塞班系统的全球市场占有量仅有22.1%。虽然基本的常用软件非常的丰富,但是塞班系统弊病不断,在更激烈的竞争中败下阵来。随着塞班的沦陷,诺基亚也沦落了。

代表手机:诺基亚,索尼爱立信,LG

2、安卓(Android)

20##年,谷歌发布了Android操作系统,从此智能手机操作系统界不再安静。20##年,原来引用塞班平台的厂商,比如LG、索尼爱立信等纷纷退出塞班平台,投入Android领域。不久,Android系统就取代了塞班成为智能手机操作系统的霸主。在20##年的第一季度,Android在全球的市场份额就已经超过了塞班,位居世界第一。到了20##年底,Android占据了全球52.5%的份额。Android手机的软件非常的丰富,而且基本都是免费的,可以通过多个应用商店下载。另外,Android的本地化也做得很好,刷机非常方便。

代表手机:小米,三星,HTC,索尼爱立信,魅族、摩托罗拉,中兴等。

3、iOS

这么多操作系统中,可以说苹果的使用体验是最好的。Android虽然是霸主地位,但是系统却没有iOS完美。iOS不是开放的系统,它的很多应用多需要付费才能使用。装有iOS系统的iPhone自发布以来,受到了全世界人民的热捧,一度被人们视为身份的象征,不过现在,iPhone已经几乎成了街机。

4、Windows Phone

Windows Phone发布于20##年10月,作为微软移动的筹码,正式与Android和iOS竞争。20##年2月,诺基亚与微软合作,试图挽回失去的大局。现在已经更新至Windows Phone 10了,但本地化做得也不是特别好。

代表手机:三星,HTC,,LG,中兴,诺基亚等

5、黑莓(Black Berry)

黑莓在欧美市场是第一商务智能手机,引入中国后,主要面向政企集团客户,苏宁是独家的销售渠道,不过,国内市场有很多渠道可以买到水货。

从市场来看,黑莓在中国并没有那么受欢迎,软件资源也不是那么丰富。

6、其他手机平台

其他的手机平台如:BlackBerry,它是Research In Motion专用的操作系统;MTK,私有平台,曾使国内手机市场风靡一时:Palm os 和PalmWebOS是嵌入式操作系统,三星推出bada操作系统,其他还有TI、飞利浦、英飞凌(Infineon)、飞思卡尔(Freescale)、Broadcom、Skyworks ,由于平台私有,不提供第三方sdk,普通开发者并不能涉足。

1.3 主要内容

此次课题主要是针对学生在课堂有限时间里和老师的交流有限。利用了安卓手机的普遍使用,开发一个手机APP帮助学生更好的学习。APP包括老师与学生俩种用户。

老师登陆可以发布消息比如学习需要注意的重点,还可以发布试题供学生课下做题。学生可以在线做题,可以向老师留言提问。还有一个公共讨论区,在这块可以大家一起讨论重点难点疑点。

    在具体开发过程内容里有后台数据库的设计。还有手机客户端的界面设计,格局设计。

2. “基于Android的离散数学课程学习助手的设计与实现”的初步分析与简单设计

2.1系统构建的相关技术

此设计是基于Android手机开发平台的校园助手软件的设计,客户端通过与服务器端的通讯来实现用户在客户端操作所需要的结果。用JAVA工程来建立客户端程序,WEB工程来建立服务器端的程序,服务器端指定一个监听端口等待客户端的连接,客户端指定服务器的IP和对应的监听端口来和服务器进行通讯。

2.1.1 C/S 模式介绍

C/S 结构,就是客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。

2.1.2 Adroid平台介绍

(1)Android的系统架构和其它操作系统一样,采用了分层的架构。android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。

(2)Android是以Linux为核心的手机操作平台,作为一款开放式的操作系统,随着Android的快速发展,如今已允许开发者使用多种编程语言来开发Android应用程序,而不再是以前只能使用Java开发Android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。   

(3)在Android中,开发者可以使用Java作为编程语言来开发应用程序,也可以通过NDK使用C/C++作为编程语言来开发应用程序,也可使用SL4A来使用其他各种脚本语言进行编程(如:python、lua、tcl、php等等),还有其他诸如:Qt(qt for android)、Mono(mono for android)等一些著名编程框架也开始支持Android编程,甚至通过MonoDroid,开发者还可以使用C#作为编程语言来开发应用程序。另外,谷歌还在20##年特别发布了针对初学者的Android Simple语言,该语言类似Basic语言。而在网页编程语言方面,JavaScript,ajax,HTML5,jquery、sencha、dojo、mobl、PhoneGap等等都已经支持Android开发。

2.1.3 Java Web技术

Java Web,是用Java技术来解决相关web互联网领域的技术总和。web包括:web服务器和web客户端两部分。Java在客户端的应用有java applet,不过使用得很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP和第三方框架等等。java的Web框架虽然各不相同,但基本也都是遵循特定的路数的:使用Servlet或者Filter拦截请求,使用MVC的思想设计架构,使用约定,XML或 Annotation实现配置,运用Java面向对象的特点,面向抽象实现请求和响应的流程,支持Jsp,Freemarker,Velocity等视图。

2.1.4 Android SDK简述

SDK是Software Development Kit的缩写,就是软件开发工具包 。SDK是一些特定的软件包、软件框架等创建应用软件的开发工具的集合。Android SDK是跨平台的,因为它是基于本身底层就集成了Linux 2.6作为自己的系统内核。Android的SDK是由Google免费提供的。SDK使得提供应用程序接口API更为简单。API是操作系统给应用程序的一个调用接口,应用程序通过调用操作系统的 API 而使操作系统去执行应用程序的命令。一些不清晰的API指定明确,比如一些与SQLite相关的API都被附上了 SQLite前缀;API一些命名风格的统一,比如URI采用统一的Uri,SDK采用了统一的Id;其他方面,AndroidManifest.xml中的一些项也是统一的,能够能容易的被理解。Android SDK对类进行了重构,进行了功能的分离和扩充。最典型的是ContentURI,被拆成了ContentUris这个功能类和Uri这个实体类,对程序员的使用做出了更好的引导作用;而另一个就是是Cursor,添加了一个extras接口,可以传出附加的数据;还有一个是Notification进行了拆分,Notification现在只是指首页顶上的那个图标,那些临时的弹出文字或视图被分离为Toasts。

如今Google公司已经把Android SDK更新的到了3.0版本,它几乎可以支持所有设备,又可将设备视图和Process视图合并,有新增了可视化的日志分析工具traceview,总之Android SDK是一个相当完善的手机开发工具库。

2.2系统功能需求

2.2.1本系统中角色分别为:学生、课程老师、管理员。

    下面分别介绍系统中 学生、课程老师、管理员它们各自访问系统的功能。

根据系统角色定义,并通过对实际考试流程详细分析,系统主要实现如下目标:

(1)学生能够通过app注册登陆,并能做题,提问。

(2)老师可以登陆注册,发布试题,发布课前预习重点。

(3)管理员可以管理用户,对用户的删除,修改。对试题,讨论区的规范。

(4)考试界面简洁美观,方便管理员、教师和考生操作。

(5)考生能够查看自己的成绩,并有错题分析。

(6)教师能够修改学生信息,题库信息。

(7)学生可以修改个人信息(包括密码等)。

(8)系统能够安全稳定的运行。

下面分别介绍系统中学生、管理员的功能图和它们各自访问系统的序列图。

2.3系统功能主要模块

(1)登陆模块:

选择登陆身份,学生输入学号、姓名和验证信息进入学生权限的界面;系统管理员和教师输入正确的信息后直接进入管理员平台和教师平台。

(2)题库管理模块:

管理员和教师可以在此模块中维护题库信息(包括对题库的增、删、更新、查找等)。

(3)讨论区模块:

        老师与学生都可以在讨论区自由发言,管理员可以对讨论区修改规范。

(4)学生生信息管理模块:

管理员和教师可以在此(增、删、改、查)学生个人信息、密码等。

(5)退出模块:

登陆人员可以点击此处返回到登陆界面。

2.4 数据库的设计

数据库前期设计了几个必用的表具体如下:

用户表 :

讨论区表:

试题表:

这里讨论区对用户是多对多的关系,用户对试题是多对一的关系。

3. 总结

    手机开发和开发环境和基础知识:对于我来说,Android是全新的知识,我用了一周时间搭建android开发环境和后台开发环境,用20多天的时间了解Android的基本运行流程,熟悉Android的开发软件的组建,如文本框、按钮、编辑框、页面布局等等。

需求分析:在了解开发平台的同时也对校园助手软件做需求分析,确定了软件中所需模块和设计模式,并初步制定服务器端与客户端的通讯协议。

服务器简单设计:配置服务器,确定和客户端通讯的接口。

数据库设计:进一步对软件需求分析,分析数据库,最终确定数据库。

客户端的系统实现:根据需求分析完成各个模块,改正和优化与服务器端的通讯协议,并对所有模块进行整合和改进。

功能测试:测试各个模块的事件及活动,确保系统能顺利且正确运行;对各个模块的文本框的输入限制做测试,确保用户不能进行不合法的操作。

参考文献

[1]    扶松柏.Android开发从入门到精通.兵器工业出版社.2012.1

[2]    高磊.杨诚.元凯.Android应用开发精辟.北京航空航天大学出版社

      2012.9

[3]    罗雷.韩建文.Android系统应用开发实战详解.人民邮电出版社

      2014.3

[4]   孙卫琴,李洪成.《Tomcat 与 JSP Web 开发技术详解》.北京:电子

      工业出版社,2003

[5]   李兴华,王月清.《Java Web 开发实战经典》.北京:清华大学出版社,

      2010

[6]   王向辉,张国印,沈洁.《Android应用程序开发》.北京:清华大学出版

      社,2010

 

第二篇:毕业论文 android 移植

本文由蓝天下的蓝精灵贡献pdf文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。武汉科技大学本科毕业设计摘要随着具有先进的图形与影音处理能力的高效能硬件的出现, ARM-11 系列 从 处理器到 ARM Cortex A8, Qualcomm(高通)Snapdragon 等芯片,在移动设备中 配备功能强大的操作系统已经成为现实. Android 作为 Google 开发的基于 Linux 平台的开源手机操作系统,它包括操作系统,用户界面和应用程序 ——移动电 话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍. HTC 和 MOTOROLA 等老牌手机生产商已经发布了多款基于 Android 的智能本文首先介绍了智能手机操作系统的体系结构,特点以及国内外的研究情 况, 然后在比较几种常见的智能手机操作系统的基础上, Android 的结构和设 对at91sam9g45 开发板,实现了 Android 的移植,同时提供简单的 Android 功能 扩展.针对移植成功的 Android 系统进行了详细的测试和分析,为系统的实际关键词:智能手机操作系统; Android;at91sam9g45; linux; 移植UnReg应用与进一步优化奠定了基础.iste计实现作了相关介绍.最后根据开源社区提供的源代码,选择英蓓特公司red手机,并有更多的公司正在或计划推出基于 Android 的智能手机和平板电脑.武汉科技大学本科毕业设计AbstractWith the emergence of advanced graphics and high-performance video processing hardware, from the ARM-11 series processors to the ARM Cortex A8, Qualcomm Snapdragon chips, etc., the mobile device equipped with powerful operating system has become reality. Google Android is a development platform based on Linux open-source mobile phone operating system,which includes operating systems, user interface and applications - required for all mobile phone software, and do not hinder any previous mobile industry exclusive innovation barriers. There hasAndroid-based smart phones and tablet computers .This paper introduces the architecture of smart phone operating system, characteristics and study the situation at home and abroad, and then comparing several common smart phone operating system.The structure and design of the Android related presentations were made to achieve. Finally, the open source community to provide the source code, select Embest company at91sam9g45 development board,ported Android system,we carried out a detailed testing and analysis, the practical application of the system and laid the foundation for further optimization.Key Words: Smart phone operating system; Android; at91sam9g45; linux;portingUnRSucceed to port Android, and provided simple Android extensions. Based on theegistere

MOTOROLA.And several companies are researching and developing the newdbeen variety of smart phones based on Android produced by the HTC and武汉科技大学本科毕业设计1绪论 ……1 1.1 课题背景及国内外研究概况 ……1 1.1.1 1.1.2 1.2 1.2.1 1.2.2 1.3 1.4 课题背景 ……1 国内外研究现状概括 ……1 智能手机系统的特点 ……2 智能手机系统的发展趋势 ……2智能手机操作系统简介 ……2Android 的优势 ……3 本论文的主要工作 ……4 几种智能手机系统的比较 ……4 2.2.1 Android 体系结构简介 ……8 2.2.3 2.2.5 Linux Kernel (Linux 内核)……9 Libraries (库) ……102Android 操作系统简介 ……4 2.2 Android 的体系结构与设计实现 ……8 2.2.2 Android 架构 ……9 2.2.4 Application Frameworks (应用框架) ……9 2.2.6 Applications (应用) …… 113设置工作环境 …… 11 3.1 开发板简介 …… 113.2U4系统移植 ……16 4.1 Bootloader ……16 4.1.1 U-boot 简介 ……16 4.1.2 U-boot 的体系结构 ……16 4.1.3 4.1.5 4.2.1 移植步骤 ……17 交叉编译 U-boot ……18 Linux 内核简介……194.2 linux kernel 的移植 ……19nR3.1.1 3.1.2 3.2.1 3.2.2核心芯片介绍 …… 11 硬件资源列表 ……12 交叉编译工具 ……12 交叉编译环境的搭建 ……13软件环境设置 ……123.2.3 Android Toolchain 与 Bionic Libc ……15egistered2.1武汉科技大学本科毕业设计4.2.2 linux 内核移植步骤 ……21 4.2.3 4.3 配置和编译 linux 内核 ……24 Android 的移植 ……25 4.3.1 Android 代码结构 ……25 4.3.2 4.3.4 5 5.1 5.2 5.3 6 6.1 6.2 7 获取 Android 源代码 ……27 配置并编译 Android ……29 4.3.3 Android 移植步骤 ……29 文件系统的建立 ……32 软件工具 ……32 配置文件 ……32 操作步骤 ……32 镜像下载 ……33 系统功能测试 ……34参考文献 ……36UnRegis致 谢 ……37te结束语 ……36red系统功能演示及测试 ……33武汉科技大学本科毕业设计1绪论现代微电子技术的发展,催生了高性能,低功耗,具有强大图形处理能力的嵌入式微处理器,更使得嵌入式移动设备可以搭载具有完全功能的操作系统.在 智能手机领域, 各大手机软件厂商都推出了自己的具有炫丽图形界面的智能手机 操作系统.智能手机也逐步走向大众化,现在商务人士使用自己的智能手机随时 可以查阅 e-mail ,浏览客户信息,智能手机系统已经渐渐替代以前 PC 机的部 分功能. Android 作为一个开源的智能平台, 而 以其开放性和可移植性等优势日 益受到各大移动设备生产商的青睐. 本章首先对智能手机操作系统和 Android 做

了相关介绍,随后给出了本文1.11.1.1课题背景及国内外研究概况课题背景码.紧接着运营商德国 T-Mobile 在纽约正式发布第一款 Android 手机 T-Mobile G1. 该款手机为台湾宏达电代工制造, 是世界上第一部使用 Android 操作系统的 手机,支持 WCDMA/HSPA 网络,理论下载速率 7.2Mbps,并支持 Wi-Fi.截止 在不到两年时间的发展中,美国市场研究公司 NPD 近日发布的统计数据显 示,今年第一季度期间,Android 手机在美国市场的销量已超过 iPhone,占据该 季度美国智能手机总销量的 28%,iPhone 相应份额为 21%. 目前已经有多款使用 Android 的智能手机 ,超过 5 万的应用程序.1.1.2 国内外研究现状概括Android 由美国 Android 公司 (Google 2005 年 8 月 17 日收购美国 Android 公司)开发,Google 和其它几十个手机公司建立了开放手机联盟,现在由开放 手机联盟开发.目前关于 Android 的资料已经很多,但多半以网络的形式发表, 正式出版的书籍较少,且出版的多是开发指南,对系统底层的介绍非常之少.目 前已经有多篇文章介绍 Android 移植成功的经验.其中包括 EeePC 和苹果 iPone 平台.UnRegis12008 年 9 月,Google 发表了 Android 开放源码计划,释出 Android 程序代tered的研究方向和工作重点.武汉科技大学本科毕业设计 1.2 智能手机操作系统简介1.2.1 智能手机系统的特点1,具备普通手机的全部功能,能够进行正常的通话,收发短信等手机功能 的应用. 2,具备无线接入互联网的能力,即需要支持 GSM 网络下的 GPRS 或者 CDMA 网络下的 CDMA 1X 或者 3G 网络. 3,具备 PDA 的功能,包括 PIM(个人信息管理),日程记事,任务安排, 多媒体应用,浏览网页. 4,具备一个具有开放性的操作系统,在这个操作系统平台上,可以安装更 多的应用程序,从而使智能手机的功能可以得到无限的扩充. 5,具有人性化的一面,可以根据个人需要扩展机器的功能. 6,功能强大,扩展性能强,第三方软件支持多.1.2.2 智能手机系统的发展趋势1. GPS 目前,GPS 功能越来越普遍.宏达电,RIM 和其他智能手机厂商均推出了支 持 GPS 功能的手机 产品.他不仅可以帮助用户从 A 点走到 B 点,更重要的是, GPS 服务商也推出各种各样的服务. 2. 开源 开源是智能手机发展的一个新趋势,目前,智能手机厂商和运营商都宣布了 自己的开源战略或产品. 不久前,Google 刚刚推出了 Android 开源移动平台计 划. 3. 电池寿命 电池续航时间是衡量智能手机的一个重要指标,Wi-Fi,蓝牙,彩屏和免提 等均消耗不小的电量.因此,为延长续航时间,尽量关闭不常用功能. 4. Wi-Fi 找到一款新的 Wi-Fi 芯片,如 Atheros AR6002 系列,可以有效降低能耗, 延长电

池续航时间. 5. 验证接入 今年年初,T-Mobile 推出了 Hotspot@Home 服务,允许用户通过手机拨打 VOIP 电话,但只支持 Wi-Fi 手机.9 月,RIM 推出了支持该服务的智能手机.相 信以后会有更多的产品上市. 6. 安全 智能手机面临着各种安全威胁,如设备锁定,功能锁定,加密,验证,远程 删除数据,防火墙和 VPN 等. 7. 多媒体 为提升多媒体应用,智能手机需要平衡商用和个人应用所需功能. 8. 应用 电子邮件可能是智能手机用户所需的最重要功能,但随着连接性的提高,智 能手机还有更多的潜在功 能,如支持 Web 2.0 服务等.UnRegis2tered武汉科技大学本科毕业设计9. 摄像头 智能手机所内置的摄像头已不再是"鸡肋". 10. 家庭基站1.3Android 的优势一 开放性 在优势方面,Android 平台首先就是其开放性,开放的平台允许任何移动终 端厂商加入到 Android 联盟中来.显著的开放性可以使其拥有更多的开发者,随 着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟. 开发性对于 Android 的发展而言, 有利于积累人气, 这里的人气包括消费者 和厂商,而对于消费者来讲,随大的受益正是丰富的软件资源.开放的平台也会 二 挣脱运营商的束缚 带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机. 在过去很长的一段时间, 特别是在欧美地区, 手机应用往往受到运营商制约, 使用什么功能接入什么网络,几乎都受到运营商的控制.自从 iPhone 上市,用 户可以更加方便地连接网络, 运营商的制约减少. 随着 EDGE, HSDPA 这些 2G 至 3G 移动网络的逐步过渡和提升, 手机随意接入网络已不是运营商口中的笑谈, 当你可以通过手机 IM 软件方便地进行即时聊天时,再回想不久前天价的彩信和 就有网络特色,将让用户离互联网更近. 三 丰富的硬件选择 这一点还是与 Android 平台的开放性相关,由于 Android 的开放性,众多的 厂商会推出千奇百怪,功能特色各具的多种产品.功能上的差异和特色,却不会 影响到数据同步, 甚至软件的兼容, 好比你从诺基亚 Symbian 风格手机一下改用 资料更是可以方便地转移,是不是非常方便呢? 四 不受任何限制的开发商 Android 平台提供给第三方开发商一个十分宽泛,自由的环境,不会受到各 种条条框框的阻扰,可想而知,会有多少新颖别致的软件会诞生.但也有其两面 性,血腥,暴力,情色方面的程序和游戏如何控制正是留给 Android 难题之一. 五 无缝结合的 Google 应用 如今叱诧互联网的 Google 已经走过 10 年度历史, 从搜索巨人到全面的互联 网渗透,Google 服务如地图, 邮件,搜索等已经成为连接用户和互联网的重要 纽带,而 Android 平台手机将无缝结合这

些优秀的 Google 服务. 苹果 iPhone,同时还可将 Symbian 中优秀的软件带到 iPhone 上使用,联系人等 图铃下载业务,就如在地狱一般?互联网巨头 Google 推动的 Android 终端天生UnRegis3tered武汉科技大学本科毕业设计 1.4 本论文的主要工作本论文在深入理解 Android 源代码的基础上,将开源 Android 系统移植到 at91sam9g45 开发板上,按照基本系统的移植步骤,先后实现了 u-boot,linux kernel,Android 的移植.论文结构如下: 第一章:绪论.该章介绍了智能手机平台的的特点,以及发展概况.在此基 础上,结合毕业设计背景,给出了本设计的核心内容,课题意义. 第二章:Android 系统介绍.该章对 Android 操作系统给出了总体介绍,并 阐述了 Android 体系结构和设计实现方法. 第三章:设置工作环境.该章给移植需要的软硬件环境,主要包括编译工具 链及其安装使用. bootloader 进行介绍和移植,紧接着开始 kernel 和 Android 的移植,对移植的 相关步骤进行了研究和分析. 第五章:文件系统的建立.在生成了各个模块的二进制镜像后,我们在这一 章建立一个文件系统,可以下载到开发板上运行. 测试各个功能模块的是否完全可以正常工作. 第六章:系统功能演示及测试.对移植成功的系统,显示已经可用的功能, 第七章:结束语 第 四 章 : 系 统 移 植 . 首 先 从 系 统 启 动 开 始 . 我 们 选 择 了 u-boot 开 源2Android 操作系统简介联盟开发.它采用了软件堆层的架构,主要分为三部分.底层以 Linux 内核工作 为基础,只提供基本功能;其他的应用软件则由各公司自行开发,以 Java 作为 编写程序的一部分.另外,为了推广此技术,Google 和其它几十个手机公司建 立了开放手机联盟.目前最新版本为 Android2.1.2.1手机操作系统一般只应用在高端智能化手机上.目前,在智能手机市场上, 中国市场仍以个人信息管理型手机为主,随着更多厂商的加入,整体市场的竞争 已经开始 呈现出分散化的态势.从市场容量,竞争状态和应用状况上来看,整 个市场仍处于启动阶段.UAndroid 是基于 Linux 内核的操作系统,早期由 Google 开发,后由开放手机几种智能手机系统的比较nReg4istered武汉科技大学本科毕业设计目前应用在手机上的操作系统主要有 PalmOS,Symbian,Windows mobile, Linux 和 iPhoneOS,黑莓六种. 1. PalmOS 这是一种 32 位的嵌入式操作系统,主要运用于移动终端上.此系统最初由 3Com 公司的 Palm Computing 部开发,目前 Palm Computing 已经独立成一家公 司. Palm OS 与同步软件 HotSync 结合可以使移动终端与电脑上的信息实现同步, 把台式机的功能扩展到了移动设备上. Palm OS

操作系统由 Palm 公司自行开发的,并授权给 Handspring,索尼和 高通等设备厂家,这种操作系统更倾向于 PDA 的操作系统. Palm OS 在 PDA 市场占有主导地位.Palm 的产品线本身就包括智能手机, 又宣布与最早的智能手机开发者 Handspring 购并,同时将软件部门独立. 2. Symbian Symbian 是一个实时性,多任务的纯 32 位操作系统,具有功耗低,内存占 用少等特点,非常适合手机等移动设备使用,经过不断完善,可以支持 GPRS, 何人都可以为支持 Symbian 的设备开发软件.与微软产品不同的 是,Symbian 很好的适应不同方式输入的平台,也可以使厂商可以为自己的产 品制作更加友 的主要原因.现在为这个平台开发的 java 程序已经开始在互 联网上盛行.用户 可以通过安装这些软件,扩展手机功能. 在 Symbian 发展阶段,出现了三个分支:分别是 Crystal,Pearl 和 Quarz. 前两个主要针对通讯器市场,也是出现在手机上最多的,是今后智能手机操作系 机.而真正较为成熟的同时引起人们注意的则是 2001 年上市的诺基亚 9210,它 采用了 Crystal 分支的系统. 2002 年推出的诺基亚 7650 与 3650 则是 Symbian 而 Pearl 分系的机型,其中 7650 是第一款基于 2.5G 网的智能手机产品,他们都属 于 Symbian 的 6.0 版本.索尼爱立信推出的一款机型也使用了 Symbian 的 Pearl 分支,版本已经发展到 7.0,是专为 3G 网络而开发的,而目前的诺基亚已经达 到 8.0 的 6630, 6681 等, 可以说代表了当今最强大的手机操作系统. 此外, Symbian 从 6.0 版本就开始支持外接存储设备,如 MMC 卡,这让它强大的扩展能力得以 充分发挥,使存放更多的软件以 及各种大容量的多媒体文件成为了可能. 2010 年 2 月 4 日消息, 据国外媒体报道, Symbian 基金会 (Symbian Foundation) 宣布 Symbian 系统将从今天开始完全开源并供免费下载. 目前根据人机界面的不同,Symbian 体系的 UI(User Interface 用户界面)5U统的主力军. 第一款基于 Symabian 系统的手机是 2000 年上市的爱立信 R380 手nReg好的操作界面,符合个性化的潮流,这也是用户能见到不同样子的 symbian 系统is将移动设备的通用技术,也就是操作系统的内核,与图形用户界面技术分开,能te蓝牙,SyncML,以及 3G 技术.最重要的是它是一个标准化的开放式平台,任red武汉科技大学本科毕业设计平台分为 Series 60,Series 80,Series 90,UIQ 等. 3. Windows mobile Windows Mobile 系统包括 Pocket PC 和 Smartphone 以 及 Media Centers, Pocket PC 针对无线 PDA,Smartphone 专为手机,已有多个来自 IT 业的新手机 厂商使用,增长率较快. 按照微软官方的说法:"Windows Mobile 将熟悉的 Windows 体验扩展到了 移动环境中,所以您可以立即使用它投入工作." 事实上,W

indows Mobile 是微软进军移动设备领域的重大品牌调整,它包 括 Pocket PC,Smartphone 以及 Media Centers 三大平台体系,面向个人移动电子 消费市场.由于大多数机型支持彩色显示,因此耗电量极大,并且由于 Windows CE 本身对于资源的巨大吞噬作用.在功能扩展方面微软比较倾向于集成使用, 调制 解调器等设备.微软为手机而专门开发的 Windows Mobile 提供的功能非常多,在不同的平 Smartphone 提供的功能侧重 点在联系方面,它主要支持的功能有:电话,电子 主要支持的功能有:日程安排,移动版 Office,简单多媒体播放功能. 4. Linux Linux 系统是一个源代码开放的操作系统,目前已经有很多版本流行.但尚 未得到较广泛的支持. Linux 进入到移动终端操作系统近一年多时间,就以其开放源代码的优势吸 引了越来越多的终端 厂商和运营商对它的关注,包括摩托罗拉和 NTT DoCoMo 的 e2800,三星的 i519 等.2004 年 6 月在 日本东京 BIG SIGHT 展览馆举办的 "LinuxWorld Expo/Tokyo 2004"博览会上,日本手机大厂商 NEC 则展示了其采用 Linux 操 作 系 统 的 手 机 . 我 国 的 大 唐 电 信 也 于 7 月 宣 布 将 Linux 作 为 其 TD-SCDMA 3G 手机操作系统. Linux 与其它操作系统相比是个后来者,但 Linux 具有二个其它操作系统无 法比拟的优势. 其一,Linux 具有开放的源代码,能够大大降低成本.其二, 既满足了手机制造商根据实际情况有针对性地开发自己的 Linux 手机操作系统 的要求,又吸引 了众多软件开发商对内容应用软件的开发,丰富了第三方应用. 然而 Linux 操作系统有其先天的不足:入门难度高,熟悉其开发环境的工程 师少,集成开发环境 较差;由于微软 PC 操作系统源代码的不公开,基于 Linux 的产品与 PC 的连接性较差; 尽管目前从事 Linux 操作系统开发的公司数量较多,6U等知名的厂商. 已经开发出的基于 Linux 的手机有摩托罗拉的 A760, A768, CECnRegis邮件,联系人, 即时消息.PocketPC 的功能侧重个人事务处理和简单的娱乐,te台上实现的功能互有重叠也各有侧重.这三个平台都支持和台式机的数据同步.red大多具有标准的 CF 卡插槽,用户可以根据自己的需要增加内存,加装摄像头,武汉科技大学本科毕业设计但真正具有很 强开发实力的公司却很少, 而且这些公司之间是相互独立的开发, 很难实现更大的技术突破. 尽管 Linux 在技术和市场方面有独到的优势,但是目前来说还无法与 Symbian 抗衡,想在 竞争日益激烈的手机市场中站稳脚跟,抢夺市场份额也决 非易事. 5. iPhone OS iPhone OS 或 OS XiPhone 是由苹果公司为 iPhone 开发的操作系统. 它主要 是给 iPhone 和 iPodtouch 使用.就像其基于的 Mac OSX 操作系

统一样,它也是 以 Darwin 为基础的.iPhoneOS 的系统架构分为四个层次:核心操作系统层(the Core OSlayer) ,核心服务层(the Core Serviceslayer) ,媒体层(the Media layer) , 可轻触层(theCocoa Touchlayer) .系统操作占用大概 512MB 的存储空间. 支持 金塔计算机使用的 x86 处理器(就像以前的 PowerPC 或 MC680x0),它使用由 PowerVR 视屏卡渲染的 OpenGLES 1.1..因此,Mac OS X 上的应用程序不能直 下面所提到的,Safari 浏览器支持"Web 应用程序".从 iPhone OS2.0 开始,通过 iPhone OS 自带的应用程序 在 2.2 版本的固件中, iPhone 的主界面包括包括以下 辅助的 Google 地图),天气,时间,计算机,备忘录,系统设定, iTunes(将会 被链接到 iTunesMusicStore 和 iTunes 广播目录),AppStore 以及联络资讯.还有 四个位于最下方的常用应用程 式包括有:电话,Mail,Safari 和 iPod. 除了电 话,简讯,和相机,iPodTouch 保留了大部分 iPhone 自带的应用程序.iPhone 上 dock 上的应用程序也根据 iPodTouch 的主要功能而改成了:音乐,视讯,照片和 iTunes.Web 应用程序 在 2007 年苹果全球开发者大会上,苹果宣布 iPhone 和 iPodTouch 将会通过 Safari 互联网浏览器支持某些第三方应用程序,这些应用程序 被 称为 Web 应用程序.它们能通过 AJAX 互联网技术编写出来. 6. BlackBerry "黑莓"BlackBerry 是美国市场占有率第一的智能手机,这得益于它的制造商 RIM(Research in Motion)较早地进入移动市场并且开发出适应美国市场的邮件系 统.大家都知道 BlackBerry 的经典设计就是宽大的屏幕和便于输入的 QWERTY 键盘,所以 BlackBerry 一直是移动电邮的巨无霸. 黑 莓机 的另一个特 色 ,就是 内建多款实时 通讯软件 ,包括 BlackBerry Messenger,Google Talk 及 Yahoo Messenger,不过目前只能用英文做沟通,软件7U的"iPod"程序在 iPodTouch 上被分成了 两个:音乐和视讯.位于主界面最下方nReg自带的应用程序: SMS(简讯),日历,照片,相机,YouTube,股市,地图(AGPSis审核的第三方应用程序已经能够通过苹果的 App Store 进行发布和下载了.te接复制到 iPhoneOS 上运行.他们需要针对 iPhoneOS 的 ARM 重新编写.但就像red的软件 iPhone 和 iPodTouch 使用基于 ARM 架构的中央处理器, 而不是苹果的麦武汉科技大学本科毕业设计仍不支持对中文字体的显示.正因为是正统的商务机,所以它在多媒体播放方面 的功能非常孱弱,也许它在 未来应该着力改善这个弱点,因为手机功能的整合 是大势所趋,人们不会只满足于单一的功能. BlackBerry 在美国之外的影响微乎其微,尤其是在中国,几乎没有人用 BlackBerry 的产品,因为国人对于电子邮件的依赖远远没有美国人那么强,国人 追求的更多的是娱乐性.2.2Android 的体

系结构与设计实现2.2.1 Android 体系结构简介Android 平台是一组面向移动设备的软件包,它包含了一个操作系统,中间 件和关键应用程序.开发人员可以使用 Android SDK(软件开发工具包)为这个平 一款量身定制的虚拟机,它专为嵌入式应用设计,运行在 Linux 内核上层.l l l l应用程序框架支持组件的复用和更换l lSQLite 轻量级的数据库,支持结构化数据的存储ll l lU媒体支持 面向常见的音频, 视频以及静态图形档案格式 (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) GSM 技术 GSM:global system for mobile communications (依赖硬件 支持) Bluetooth, EDGE, 3G, and WiFi (依赖硬件支持) Camera, GPS, compass, and accelerometer (依赖硬件支持) Rich development environment 丰富的开发环境, 包含一套硬件仿真器, 一些用于程序调试,内存和性能剖析的工具,以及支持 Eclipse 集成开发 环境的插件(ADT).nR优化的图形机制 自定义的 2D 图 形库,基于 OpenGL ES 1.0 规范的 3D 图形实现(本项为硬件加速器可选)eg集成的浏览器 基于开源的 WebKit 引擎is8Dalvik 虚拟机 专门为移动设备进行过优化tere台创造应用程序.应用程序使用 Java 语言编写并在 Dalvik 之内运行.Dalvik 是d武汉科技大学本科毕业设计2.2.2 Android 架构下图显示了 Android 操作系统的主要组件.2.2.3 Linux Kernel (Linux 内核)Android 依赖 Linux 2.6 版,提供核心系统服务:安全,内存管理,进程管 理,网络组,驱动模型.内核部分还相当于一个介于硬件层和系统中其他 软件组之间的一个抽象层次.2.2.4 Application Frameworks (应用框架)Android 的核心应用程序就是依赖框架层次 API 开发的,程序员们可以充分 使用这些 API.应用架构设计的初衷是:简化组件复用机制;任何应 用都能发 布自己的功能,这些功能又可以被任何其他应用使用(当然要受来自框架的强制 安全规范的约束) .和复用机制相同,框架允许组件的更换. 所有应用都是一组服务和系统,一般包含:nU一套丰富且可扩展的视图组件,含有 lists, grids, text boxes, buttons, 甚至nRegis9tered武汉科技大学本科毕业设计嵌入的网络浏览器nContent Providers(内容提供器) 使一个应用可以访问另外一个应用的数 据(如联系人) ,或者使一个应用内部可以共享自身数据 Resource Manager(资源管理器) ,提供对非编码资源——例如本地化字 符串,图形和布局 文件——的访问通道 Notification Manager(通告管理 器) ,使应用在状态栏显示自定义的警报 通知. Activity Manager(行 动管理器)负责管理应用的生命周期,提供通用导 航回

退支持nnn2.2.5 Libraries (库)Android 包含一套 C/C++库,Android 系统的各式组件都在使用.这些功能通uSystem C library - 衍生于 BSD 的标准 C 系统库(libc)实现(注:BSD: 年代由伯克利加州大学开创),尤其支持嵌入式的基于 Linux 的设备.uMedia Libraries - 媒体库基于 PacketVideo's OpenCORE;媒体库支持很 多流行音频和视频格式,静态图形文件(包括 MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG )的播放和录制uSurface Manager - 管理范围:对子系统显示功能的访问,跨应用的无缝 组合 2D 和 2D 图形层 LibWebCore - 是流行的浏览器引擎,可以支持 Android 浏览器和嵌入应 用的 WEB 视图组件 SGL - 底层的 2D 图形引擎 3D libraries - 基于 OpenGL ES 1.0 API 的实现; 该类库使用硬件 3D 加 速器(如果硬件支持的话)或者内置的,高度优化的 3D 软件加速机制. FreeType - 支持位图和矢量字体 SQLite - 能干,轻量级的关系型数据库引擎,面向所有应用 Android Runtime (Android 运行时) Android 的核心类库提供 Java 类库所提供的绝大部分功能. 每个 Android 应用都运行在自己的进程上,享有 Dalvik 虚拟机为它分配 的专有实例.为了支持多个虚拟机在同一个设备上高效运 行,Dalvik 被 改写过. Dalvik 虚拟机执行的是 Dalvik 格式的可执行文件(.dex)——10u uu u uUunRegisBerkeley Software Distribution, 伯克利软件套件,是 Unix 的衍生系统, 1970te过 Android 应用框架暴露给开发人员.下面列举一些 核心库:red武汉科技大学本科毕业设计该格式经过优化, 以降低内存耗用到最低. Java 编译器将 Java 源文 件转 为 class 文件,class 文件又被内置的 dx 工具转化为 dex 格式文件,这种 文件在 Dalvik 虚拟机上注册并运行. 在一些底层功能——比如线程和低 内存管理方面,Dalvik 虚拟机是依赖 Linux 内核的.2.2.6 Applications (应用)Android 将预装一组核心应用程序,包括 email 客户端,短信服务,日 历日程,地图服务,浏览器,联系人和其他应用程序.所有应用程序都是 Java 编程语言编写的.3.1开发板简介AT91SAM9G45 处理器(ARM926EJ-S 内核)的全功能评估板. SAM9G45 开发 256MB NandFlash,1MB NorFlash,512KB EEPROM,4MB DataFlash,以及 2 个 64MB 的 DDR2 SDRAM , 并 带 有 丰 富 的 功 能 扩 展 : 高 速 USB2.0 (480MHz) 音频输入, , 音频输出, 10/100Mbps 网络, JTAG 调试接口, DBGU 串口,Micro SD 卡接口,SD/MMC 卡接口.3.1.1 核心芯片介绍速数据连接相结合, 包括 LCD 控制器, 电阻触摸屏, 相机接口, 音频, 10/100M 以太网,高速 USB 和 SDIO.随着处理器运行在 400MHz 和多个速率超过 100Mbps 的外设,AT91SAM9G45 使用高性能和带宽网络或本地存储媒

体来提 供良好的用户体验. AT91SAM9G45 支持最新的 DDR2 和 NAND 闪存接口来存储程序和数 据.一个与 37 个 DMA 通道相关的 133M 的内部多层总线接口,以及一个双 外部总线接口,和一个能够用来配置紧密耦合内存(TCM)的 64K 字节的分布 式内存,它们用来维持处理器和高速外设通信时所需的带宽. AT91SAM9G45 的电源管理控制器具有高效的时钟门控和电池备份部分, 在上电和待机模式时将功耗降低至最少.11UAT91SAM9G45 芯片使用 ARM926EJ-S 内核,它把用户接口的功能性和高nRegis板主频高达 400MHz,可支持 WinCE 和 Linux 操作系统的开发板调试,带有teSAM9G45 开 发 板 是 英 蓓 特 公 司 新 推 出 的 一 款 基 于 ATMEL 公 司red3设置工作环境武汉科技大学本科毕业设计3.1.2 硬件资源列表l AT91SAM9G45 ARM 32-bit 处理器,400MHz 运行频率 l 64KB 片内 SRAM l 64KB 片内 ROM l 外扩 256MB NandFlash l 外扩 1MB NorFlash l 外扩 4MB DataFlash l 2 个 外 扩 的 64MB DDR2 SDRAM l 2 个功能按键 l 1 个唤醒按键 l 1 个复位按键 l 60 个扩展接口针 l 带后备电池的 RTC l 1 个 MICRO 音频输入接口 l 1 个 PHONE 音频输出接口 l l l l l l l l l l LCD 1 个 Micro SD 卡插槽 1 个 SD/MMC 插槽 1 个 DBGU 接口 1 个 USB 主机接口 1 个 Mini USB 接口 3 个 LEDs 1 个 10/100M 以太网接口 1 个 JTAG 调试接口(10pin) 电源: DC power3.2软件环境设置上位机系统:Ubuntu8.103.2.1 交叉编译工具由另一台机器编译生成,一般把前者称为目标机,后者称为主机,如下图所示:要进行交叉编译,我们需要在主机平台上安装对应的交叉编译工具链(cross compilation tool chain) ,然后用这个交叉编译工具链编译我们的源代码,最终 生成可在目标平台上运行的代码.通常需要的工具程序有:12UnR交叉编译的主要特征是某机器中执行的程序代码不是由本机编译生成, 而是egistered武汉科技大学本科毕业设计解释程序:它本身与编译器类似,也是一种语言翻译工具.它直接执 行源程序,尤其是一些脚本语言程序.其优点是简单,好移植,但执 行速度与编译好的目标代码相比要慢许多; 汇编器:用于特定计算机上的汇编语言翻译程序; 链接器:其作用是把在不同的目标文件中编译或汇编的代码收集到一 个可直接执行的文件中.同时它也把目标程序和标准库函数的代码链 接; 装载器:编译器,汇编器及链接器所生成的代码经常不能直接 执行,它们的主要存储器访问可以在存储器的任何位置,在逻辑上相 互之间存在固定的关系,最终位置的确定和某个起始位置相关.通常 这样的代码是可复位的.转载器可处理所

有与指定的基地址或起始地 址相关的可复位的地址.这样使得代码的编译更加灵活; 其他文件以及执行宏替换;调试器:用于对目标代码的调试,从而达到排除代码中存在的错误.3.2.2 交叉编译环境的搭建等软件.其中,binutils 主要用于生成一些辅助工具,如 objdump,as,ld 等; gcc 是用来生成交叉编译器,主要生成 arm-linux-gcc 交叉编译工具(应该说, 生成此工具后已经搭建起了交叉编译环境,可以编译 Linux 内核了,但由于没 使用的一些基本的函数库.这样,交叉编译环境就完全搭建起来了. 有提供标准用户函数库,用户程序还无法编译) ;glibc 主要是提供用户程序所1) 下载源代码 到相关网站(ftp://)下载包括 Binutils,GCC,Glibc 及 Linux 内 核的源代码(需要注意的是,Glibc 和内核源代码的版本必须与目标机上实际使 用的版本保持一致) , 并设定 shell 变量 PREFIX 指定可执行程序的安装路径. 2) 编译 Binutils13UnRegis交叉编译器完整的安装一般涉及到多个软件的安装, 包括 binutils, gcc, glibctered预处理器:它在编译开始时由编译器调用,专门负责删除注释,包含武汉科技大学本科毕业设计首先运行 configure 文件, 并使用--prefix=$PREFIX 参数指定安装路径, 使用--target=arm-linux 参数指定目标机类型,然后执行 make install. 3) 配置 Linux 内核头文件 首 先 执 行 make mrproper 进 行 清 理 工 作 , 然 后 执 行 make config ARCH=arm(或 make menuconfig/xconfig ARCH=arm)进行配置(注意,一定要在 命令行中使用 ARCH=arm 指定 CPU 架构,因为缺省架构为主机的 CPU 架 构) ,这一步需要根据目标机的实际情况进行详细配置. 配置完成之后,需要 将内核头文件拷贝到安装目录,代码如下: cp –dR include/asm-arm $PREFIX/arm-linux/include/asm cp –dR include/linux $PREFIX/arm-linux/include/linux 4) 第一次编译 GCC --target=arm-linux 参数指定目标机类型, 并使用--disable-threads, --disable-shared, --enable-languages=c 参数,然后执行 make install.这一步将生成一个最简单的 要首先生成一个最简单的 GCC,它只需要具备编译目标机 Glibc 库的能力即 5) 交叉编译 Glibc GCC.由于编译整个 GCC 需要目标机的 Glibc 库,该库现在还不存在,因此需 可.程. 该过程要用到 Linux 内核头文件, 默认路径为$PREFIX/arm-linux/sys-linux, 因而需要在$PREFIX/arm-linux 中建立一个名为 sys-linux 的软链接,使其指向 内核头文件所在的 include 目录,或者,也可以在接下来要执行的 configure 命 令中,使用--with-headers 参数指定 Linux 内核头文件的实际路径. Configure arm-linux-gcc) : 的运行参数设置如下 (因为是交叉编译, 所以要将编译器变量 CC 设为 CC=arm-linux-gcc ./configure --prefix=$PREFI

X/arm-linux --host=arm-linux --enable-add-ons 最后,按以上配置执行 configure 和 make install,Glibc 的交叉编译过程就 算完成了,需要指出的是,Glibc 的安装路径设置为 : $PREFIXARCH=arm/arm-linux, 如果此处设置不当,第二次编译 GCC 时可能找不到 Glibc 的头文件和库. 6) 第二次编译 GCC Glibc 是供用户程序使用的一些基本的函数库,由于在前面编译 GCC 时避 开了与 Glibc 有关的部分,所以在 Glibc 编译完成后必须重新编译 GCC,以便 得到完整的 ARM-Linux-GCC 的交叉编译器.14UnReg这一步骤生成的代码是针对目标机 CPU 的, 因此它属于一个交叉编译过istered首先运行 configure 文件,使用--prefix=$PREFIX 参数指定安装路径,使用武汉科技大学本科毕业设计运行 configure,参数设置为: --prefix=$PREFIX --target=arm-linux --enable-languages=c,c++ 运行 make install.到此为止,就可得到需要的交叉编译工具链.3.2.3Android Toolchain 与 Bionic LibcAndroid 所用的 Toolchain(即交叉编译工具链)可从下面的网址下载: /pub/android-toolchain-20081019.tar.bz2.如果下载了完整 的 Android 项目的源代码,则可以在"/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1 /bin"目录下找到交叉编译工具,比如 Android 所用的 arm-eabi-gcc-4.2.1. Android 并没有采用 glibc 作为 C 库,而是采用了 Google 自己开发的 Bionic Libc,它的官方 Toolchain 也是基于 Bionic Libc 而并非 glibc 的. 这使得使用或 移植其他 Toolchain 来用于 Android 要比较麻烦:在 Google 公布用于 Android 的 /gnu_toolchains/arm/download.html 下载的一个通用 不需要 C 库, 但是开发 Android 的应用程序时,直接采用或者移植其他的 才能运行于 Android 模拟器中,这显然是实际开发中所不能接受的方式.目前尚 没有看到说明成功移植其他交叉编译器来编译 Android 应用程序的资料. 与 glibc 相比,Bionic Libc 有如下一些特点: 大小只有大约 200k,比 glibc 差 不多小一半,且比 glibc 更快; 实现了一个更小,更快的 pthread; 不完全支持 POSIX 标准,比如 C++ exceptions,wide chars 等; 不提供 libthread_db 和 libm 的实现 另外,Android 中所用的其他一些二进制工具也比较特殊: 加载动态库时使用的是/system/bin/linker 而不是 常用的/lib/ld.so; prelink 工 具 不 是 常 用 的 prelink 而 是 apriori , 其 源 代 码 位 于 " <your_android>/build/tools/apriori" strip 工 具 也 没 有 采 用 常 用 的 strip , 即 "<your_android>/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin"目录下 的 arm-eabi-strip , 而 是 位 于 <your_android>/out/host/linux-x86/bin/ 的 soslim 工具.15U提供了一些 Android 所需要的重要函数,如"getprop", "LOGI"等;nR采用 BSD License,而不是 glibc

的 GPL License;egisToolchain 都比较麻烦,其他 Toolchain 编译的应用程序只能采用静态编译的方式te的 Toolchain,它用来编译和移植 Android 的 Linux 内核是可行的,因为内核并re官 方 Toolchain 之 前 , 多 数 的 Android 爱 好 者 使 用 的 Toolchain 是 在d武汉科技大学本科毕业设计4系统移植实现 Android 系统移植的移植包括四个模块: uboot, linux kernel, Android 系统框架, Android 应用程序. 1. 引导加载程序.包括固化在固件(firmware)中的 boot 代码(可选), 和 BootLoader 两大部分. 我们采用 uboot. 2. Linux 内核.特定于嵌入式板子的定制内核以及内核的启动参数. 3. 文件系统. 包括根文件系统和建立于 Flash 内存设备之上文件系统. 通常用 ramdisk 来作为 rootfs. 4. 用户应用程序.特定于用户的应用程序.由 Android 提供.引导加载程序是系统加电后运行的第一段软件代码.PC 机中的引导加载程 序由 BIOS(其本质就是一段固件程序)和位于硬盘 MBR 中的 OS BootLoader(比 盘 MBR 中 的 BootLoader 读 到 系 统 的 RAM 中 , 然 后 将 控 制 权 交 给 OS BootLoader.BootLoader 的主要运行任务就是将内核映象从硬盘上读到 RAM 中,然后跳转到内核的入口点去运行,也即开始启动操作系统.4.1.1 U-boot 简介Boot 不仅仅支持嵌入式 Linux 系统的引导, 当前, 它还支持 NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS 嵌入式操作系统.UBoot 除了支持 PowerPC 列的处理器.4.1.2 U-boot 的体系结构U-boot 和目录结构类似于 linux 内核的结构,各主要目录包含代码的功能 为: 1. 2. 3. board:和一些已有开发板有关的文件. 每一个开发板都以一个子目录出 现在当前目录中. common:实现 uboot 命 令行下支持的命令,每一条命令都对应一个文 件.例如 bootm 命令对应就是 cmd_bootm.c. cpu: 与特定 CPU 架 构相关目录, 每一款 Uboot 下 支持的 CPU 在该目16U系列的处理器外,还能支持 MIPS, x86,ARM,NIOS,XScale 等诸多常用系nRUboot 是德国 DENX 小组的开发用于多种嵌入式 CPU 的 bootloader 程序, Uegiste如,LILO 和 GRUB 等)一起组成.BIOS 在完成硬件检测和资源分配后,将硬red4.1Bootloader武汉科技大学本科毕业设计录下对应一个子目录,比如有子目录 arm926ejs 就是我们开发板上使用 的 cpu 架 构目录. 4. 5. 6. 7. 8. disk:对磁盘的支持. doc:文档目录.Uboot 有非常完善的文档,推荐大家参考阅读. drivers:Uboot 支持的设备驱动程序都放在该目录,比如各种网卡,支 持 CFI 的 Flash,串口和 USB 等. fs: 支持的文件系统, Uboot 现在支持 cramfs, fdos, fat, jffs2 和 registerfs. include:Uboot 使用的头文件,还有对各种硬件平台支持的

汇编文件, 系统的配置文件和对文件系统支持的文件.该目录下 configs 目录有与 开发板相关的配置头文件,如 leopard2a.h.该目录下的 asm 目录有与 CPU 体系结构相关的头文件,asm 对应的是 asmarm. 9. 中. 和 NFS 文件系统的实现.10. net:与网络协议栈相关的代码,BOOTP 协议,TFTP 协议,RARP 协议 11. tools:生成 Uboot 的工具,如:mkimage, crc 等等.4.1.3 移植步骤1. 下载 u-boot 源代码:U-boot 的源代码可以从官方网站 http://www.denx.de/wiki/U-Boot linux4sam 官网下载已经移植成功的 U-boot 源代码直接使用.网址: /linux4sam/bin/view/Linux4SAM/U-Boot 2. 添加开发板支持01, 02, 03, 04,+U创建代码目录: board/atmel/at91sam9m10g45ek 增加开发板的支持代码: 添加 nandflash 的开发板读写支持.board/atmel/at91sam9m10g45ek/nand.c board/atmel/at91sam9m10g45ek/led.c 添加开发板的 LED 控制 board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c 添加开发板硬件资源初始化 board/atmel/at91sam9m10g45ek/partition.c 添加 flash 分区信息0, "Bootstrap"},{0x00000000, 0x000041FF, FLAG_PROTECT_SET,17nR/SourceCode 上下载,由于我们使用的 Atmel 的芯片,我们到 Atmelegisteredlib_xxxx: 与体系结构相关的库文件.如与 ARM 相关的库放在 lib_arm武汉科技大学本科毕业设计+ + + + {0x00004200, 0x000083FF, FLAG_PROTECT_CLEAR, {0x00008400, 0x00041FFF, FLAG_PROTECT_SET, {0x00042000, 0x00251FFF, FLAG_PROTECT_CLEAR, {0x00252000, 0xFFFFFFFF, FLAG_PROTECT_CLEAR, 0, "Environment"}, 0, 0, 0, "U-Boot"}, "Kernel"}, "FS"},05, 06, 3. 4.board/atmel/at91sam9m10g45ek/config.mk board/atmel/at91sam9m10g45ek/Makefile 添加 Makefile 文件,将添加的代码增加到代码树中编译添加 u-boot 配置文件 修改全局 Makefile 文件增加开发板选项创建配置文件:include/configs/at91sam9m10g45ek.h Makefile:+at91sam9m10g45ek_nandflash_config \ +at91sam9m10g45ek_dataflash_config \ +at91sam9m10g45ek_dataflash_cs0_config \ +at91sam9m10g45ek_config : + + + + + @mkdir -p $(obj)include unconfigecho "#define CFG_USE_NANDFLASH 1"is18@if [ "$(findstring _nandflash,$@)" ] ; then \$(XECHO) "…… with environment variable in NAND FLASH" ; \ echo "#define CFG_USE_AT91SAM9M10G45EK 1">>$(obj)include/config.h ; \ + + + + else \echo "#define CFG_USE_DATAFLASH 1"nReg$(XECHO) "…… with environment variable in SPI DATAFLASH CS0" ; \Uecho"#defineCFG_USE_AT91SAM9M10G45EKte>>$(obj)include/config.h ; \ >>$(obj)include/config.h ; \ 1">>$(obj)include/config.h ; \ fi; @$(MKCONFIG) -a at91sam9m10g45ek arm arm926ejs at91sam9m10g45ek+ +atmel at91sam94.1.5 交叉编译 U-boot准备好 AT91 u-boot 的源代码后, 交叉编译 u-boot 分

为两步 : 配置和 编译.我们可以使用 arm-elf- 和 arm-linux- ARM GCC 交叉编译工具来编译 u-boot .red武汉科技大学本科毕业设计下面是编译 AT91sam9g45 开发板的步骤: make distclean make at91sam9g45ekes_nandflash_config make CROSS_COMPILE=path_to_cross-compiler 当其不在你的 的当前设置路径中时才需要. 通常 cross-compiler-prefix- 应该是这个样子 arm-linux- or arm-elf编译结束后将会在当前路径生成最新的 u-boot 二进制可执行文件 u-boot.bin 和相应的二进制 ELF 文件 u-boot.u-boot.bin 就是我们将要下载到开发板上的二进制镜像文件 u-boot 是 ELF 格式的二进制文件,我们可以用来调试 u-boot通过和标准的 Linux 2.6.25 Kernel 的对比,我们可以发现,其主要增加了以下 的内容: 1. kernel/arch/arm/mach-goldfish 基于 ARM 架构增加 Gold-Fish 平台,相应增加的目录 如下: kernel/include/asm-arm/arch-goldfish至少为 200M HZ. 采用 MSM7201A CPU(ARM 11)作为主 CPU, 其主频为 528M HZ. 2. 增加了 yaffs2 FLASH 文件系统,相应增加的目录为: 实际上,Android 包经过编译后生成的 system.img 和 ramdisk.img 文件就 是 yaffs2 格式的包. 3. 增加了 Android 的相关 Driver,相应目录为: kernel/drivers/android 主要分为: Android IPC 系统: Android 日志系统: Android 电源管理: Android 闹钟管理: Binder Logger Power AlarmUkernel/fs/yaffs2nRGold-Fish 平台采用的是 ARM926T CPU 作为 BaseBand 处理器, 该 CPU 主频egis19te4.2.1 Linux 内核简介re4.2 linux kernel 的移植d武汉科技大学本科毕业设计Android 内存控制台: 4. 5. Ram_consoleAndroid 时钟控制的 gpio: Timed_gpio 增加了 switch 处理, 相应的目录为: kernel/drivers/switch/ 增加了一种新的共享内存处理方式, 相应增加的文件为: kernel/mm/ashmem.c 其他为 Linux-2.6.25 内核所做的补丁等等,例如 BlueTooth, 在此不做详细 分析 另外 GoldFish 平台相关的驱动文件如下: 1. 字符输出设备: kernel/drivers/char/goldfish_tty.c 2. 图象显示设备: (Frame Buffer) kernel/drivers/video/goldfishfb.c 3. 键盘输入设备: 4. RTC 设备: (Real Time Clock) kernel/drivers/rtc/rtc-goldfish.c 5. USB Device 设备: 6. SD 卡设备: 7. FLASH 设备: kernel/drivers/input/keyboard/goldfish_events.ckernel/drivers/usb/gadget/android_adb.c kernel/drivers/mmc/host/goldfish.ckernel/drivers/mtd/devices/goldfish_nand.c kernel/drivers/mtd/devices/goldfish_nand_reg.h 8. LED 设备:9. 电源设备: kernel/drivers/power/goldfish_battery.c 10. 音频设备: kernel/arch/arm/mach-goldfish/audio.c 11. 电源管理: kernel/arch/arm/mach-goldfish/pm.c 12. 时钟管理: kernel/arch/arm/mach-goldfish/timer.cUkernel/drivers/leds/ledtrig-sleep.cnRegis20tered武汉科技大

学本科毕业设计4.2.2 linux 内核移植步骤一 下载 linux 内核源代码 Linux 内核官方下载:/pub/linux/kernel/v2.6/ 我们在 Atmel 移植成功的 linux 内核基础上修改,下载地址: /linux4sam/bin/view/Linux4SAM/LinuxKernel 二 电源管理 修改目录 drivers/power/ 下的 Makefile 文件,增加下面一行: obj-$(CONFIG_BATTERY_DUMMY) += dummy_battery.o 修改目录 drivers/power/ 下的 Kconfig 文件,增加以下内容:config BATTERY_DUMMY tristate "dummy battery driver" help在 drivers/power/ 目 录 增 加 dummy_battery.c , 该 文 件 模 拟 电 源 管 理 器 Battery status: Charging (AC). Battery level: 58 Battery scale: 100 Battery health: Good Battery Voltage: 0 mvBattery technology: Li-ion 更改开发版驱动以支持 Android 获取该电源管理数据: arch/arm/mach-at91/board-sam9m10g45ek.c,定义电源管理作为平台硬件:static struct platform_device battery = { .name = "dummy-battery", .id }; = -1,注册电源设备:static void __init ek_add_device_battery(void) { platform_device_register(&battery); }21UnRBattery temperature: 0.0℃egisteAndroid 可以从这个驱动文件获得电源信息.下面描述了电源的详细信息:reSay Y here to enable support for dummy battery driver.d武汉科技大学本科毕业设计将初始化代码加入 ek_board_init ()函数初始化电源设备:ek_add_device_battery();三 LCD 修改 framebuffer 驱动 在目录 driver/video 下面修改 atmel_lcdfb.c 正常显示.+#define ATMEL_LCDC_FIFO_SIZE #define ATMEL_LCDC_CVAL_DEFAULT -#define ATMEL_LCDC_DMA_BURST_LEN -#define ATMEL_LCDC_FIFO_SIZE +#define ATMEL_LCDC_DMA_BURST_LEN +static unsigned int frame_update_done; +static spinlock_t lock; +static wait_queue_head_t wait; 512 0xc8 8 /* words */使之符合开发板 LCD 的512 /* words */ 8+ dma_addr = fix->smem_start + var->xres * 2 * var->yoffset;-dma_addr = (fix->smem_start + var->yoffset * fix->line_length dma_addr &= ~3UL;smem_len = (var->xres_virtual * var->yres_virtual * ((var->bits_per_pixel + 7) / 8));+ smem_len = (var->xres * var->yres*2*2 + * ((var->bits_per_pixel + 7) / 8));info->fix.smem_len = max(smem_len, sinfo->smem_len);-+ info->screen_base = dma_alloc_coherent(info->device, info->fix.smem_len, (dma_addr_t *)&info->fix.smem_start, GFP_KERNEL);修改 board-sam9m10g45ek.c 以支持 Android 的 16 bpp . 由于 Android 使用 16 bpp RGB,修改 'default_bpp' 原来的 32 为 16 static struct atmel_lcdfb_info __initdata ek_lcdc_data = { … .default_bpp …22Uinfo->screen_base = dma_alloc_writecombine(info->device, info->fix.smem_len,nReg= 16,iste//Mod org:32red武汉科技大学本科毕业设计}; 四 Nandflash 分区 修改分

区+static struct mtd_partition __initdata ek_nand_partition[] = { + { + .name = "Bootstrap", + .offset = 0, + .size = 4 * 1024 * 1024, + }, + { + .name = "ramdisk", /*for ramdisk&system*/ + .offset = 4 * 1024 * 1024, + .size = 96 * 1024 * 1024, + }, + { + .name ="userdata", /*for mtd@userdata*/ + .offset = 100 * 1024 * 1024, + .size = 64 * 1024 * 1024, + }, + { + .name = "cache", + .offset = 164 * 1024 * 1024, /*64 * 1024 * 1024*/ + .size = 60 * 1024 * 1024, + }, + { + .name = "test", /*for debug*/ + .offset = 224 * 1024 * 1024, /*64 * 1024 * 1024*/ + .size = MTDPART_SIZ_FULL, + }, +};设置 4 个分区: Bootstrip :At91 引导代码 Ramdisk :Android ramdisk 分区 Userdata : Android'用户数据分区 Cache :Android's 缓存分区 五 Keyboard 修改 include/linux/input.h #define BTN_9 #define BTN_MOUSE -#define BTN_LEFT23UnRegiste0x109 0x110 0x110red武汉科技大学本科毕业设计-#define BTN_RIGHT +#define BTN_LEFT +#define BTN_RIGHT #define BTN_MIDDLE #define BTN_SIDE #define BTN_EXTRA 六 删除编译可能遇到的错误 0x111 0x9e 0x3b 0x112 0x113 0x114修改 driver/usb/gadget/android.c,以防 Android 在 连接 usb 在开发板上时 小工具崩溃 static struct usb_configuration android_config __initdata = { 修改为: static struct usb_configuration android_config = {, 七 内核配置文件Device DriversUCONFIG_USB_GADGET=y CONFIG_USB_GADGET_SELECTED=y CONFIG_USB_GADGET_ATMEL_USBA=y CONFIG_USB_ATMEL_USBA=y CONFIG_USB_GADGET_DUALSPEED=y CONFIG_USB_ETH=y CONFIG_USB_ETH_RNDIS=y CONFIG_USB_ANDROID is not set CONFIG_USB_GADGET_MUSB_HDRC is not set 配置电源管理器 修改内核配置使能 CONFIG_BATTERY_DUMMY.配置 EXT3 支持 配置 SD 自动检测支持 去除 "create deprecated sysfs files".4.2.3 配置和编译 linux 内核cd linux-2.6.xxnRPower supply class support dummy battery driveregis24tere配置 Android 内核 #make menuconfig 配置内核支持 usb 调试d武汉科技大学本科毕业设计cp arch/arm/configs/at91sam9m10ekes_nandflash_for_android.config .config make ARCH=arm oldconfig 我们可以使用以下命令自己配置内核选项: make ARCH=arm menuconfig 编译内核: make uImage ARCH=arm CROSS_COMPILE=成功后,我们会在目录 : arch/arm/boot 得到 uImage.这是可执行的 linux 内核镜像.4.3.1Android 代码结构Google Android 代码包 (机器代码包)包括主机编译工具, , 仿真环境. Android |-- Makefile |-- bionic |-- bootloader |-- build |-- dalvik (全局的 Makefile) (引导加载器)(Bionic 含义为仿生,这里面是一些基础的库的源代码) (build 目录中的内容不是目标所用的代码,而是编译和配置所需要的脚本和工具)U|-- development (程序开发所需要的模板和工具) |-- external (目标机器使用的一些库

) (应用程序的框架层) (与硬件相关的库) (Linux2.6 的源代码) (Android 的各种应用程序) (Android 在各种平台下编译的预置脚本) (与目标的恢复功能相关) (Android 的底层的一些库) |-- frameworks |-- hardware |-- kernel |-- packages |-- prebuilt |-- recovery |-- system其 中,core 中的 Makefile 是整个 Android 编译所需要的真正的 Makefile, 它被顶层目录的 Makefile 引用.nR(JAVA 虚拟机)egis25代码包经过解压缩后,第一级别的目录和文件如下所示:tere4.3Android 的移植d武汉科技大学本科毕业设计envsetup.sh 是一个在使用仿真器运行的时候,用于设置环境的脚本. dalvik 目录用于提供 Android JAVA 应用程序运行的基础————JAVA 虚拟 机. development 目录展开的一个级别的目录如下所 示: development |-- apps |-- build |-- cmds |-- data |-- docs |-- emulator |-- host |-- ide |-- pdk |-- samples |-- simulator `-- tools skins 是仿真时手机的界面. (仿真相关) (Android 应用程序的模板) (编译脚本模板)(大多是目标机器的一些工具)在 emulator 目录中 qemud 是使用 QEMU 仿真时目标机器运行的 后台程序, samples 中包含了很多 Android 简单工程,这些工程为开发者学习开发 Android 程序提 供了很大便利,可以作为模板使用. 在 external 中,每个目录表示 Android 目标系统中的一个模块,可能有一个 或者若干个库构成.其中: opencore 为 PV(PacketVideo) ,它是 Android 多媒体框架的核心. webkit 是 Android 网络浏览器的核心. sqlite 是 Android 数据库系统的核心. openssl 是 Secure Socket Layer,一个网络协议层,用于为数据通讯提供安全 支持. frameworks 目 录展开的一个级别的目录如下所示: frameworks/ |-- base |-- opt |-- policies frameworks 是 Android 应用程序的框架. hardware 是一些与硬件相关的库26UnRegiste(一些示例程序)red(包含 windows 平台的一些工具)武汉科技大学本科毕业设计kernel 是 Linux2.6 的源代码 packages 目录展开的两个级别的目录如下所示: packages 中包含两个目录,其中 apps 中是 Android 中的各种应用程序, providers 是一些内容提供者(在 Android 中的一个数据源) . packages 中两 个目录的内容大都是使用 JAVA 编写的程序,各个文件夹的层次 结构是类似的.4.3.2 获取 Android 源代码1. 需要安装的软件工具必须保证 linux 已经安装了以下工具:使用以下命令安装这些软件包#sudo apt-get install valgrind#sudo apt-get install lib32readline5-dev 2. 添加环境变量在我们的主目录里有一个 ~/bin 目录将其添加到我们的 path 变量里面: # cd ~ # mkdir bin # echo $PATH将以下变量加入到 bashrc. export LA

NG=c export JAVA_HOME=/usr/local/lib/jdk1.5.0_1827U需要最新版本的 libreadline:nR可以选择安装 Valgrind, 一个帮助查找内存泄露的工具,eg#sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev genext2fsistered必须的软件包: o Git 1.5.4 or newer and the GNU Privacy Guard. o JDK 5.0.18 o flex, bison, gperf, libsdl-dev, libesd0-dev, libwxgtk2.6-dev (optional), build-essential, zip, curl,genext2fs武汉科技大学本科毕业设计export PATH=$JAVA_HOME/bin:/home/tom/bin:$PATH: export ANDROID_JAVA_HOME=$JAVA_HOME重启终端使 3. 安装 Repo~/.bashrc 生效.Repo 一个使 Android 源码管理更为方便的工具,安装和配置 Repo:下载 repo 脚本并赋予可执行权限: # cd ~ # curl http://android./repo >~/bin/repo # chmod a+x ~/bin/repo 4. 初始化 Repo新建一个目录放置我们的工作代码: # mkdir mydroid # cd mydroid运行 repo init 下载最新版本的 Repo 和更新,这里需要一个链接地址:#repo initialized in /mydroid 5. 获取源码 运行一下命令:# repo sync 这一步需要较长的时间,如果中途停止可以结束当前命令,从新运行一次. 6. 获取 ALSA 源码文件用以下命令获得 ALSA 的源代码: cd mydroid/hardware git clone git://android./platform/hardware/alsa_sound.git cd mydroid/external28UnR成功的初始化后将会出现以下信息:eg# repo init -u git://android./platform/manifest.git –b Android-2.0.1_r1istered武汉科技大学本科毕业设计git clone git://android./platform/external/alsa-lib.git git clone git://android./platform/external/alsa-utils.git4.3.3 Android 移植步骤在 uboot 和 linux kernel 正常移植的情况下,我们可以直接编译 Android 运 行了: 以下修改是确保正确运行在新的平台而不受源代码平台的干扰:+++ build/target/board/generic/BoardConfig.mk @@ -7,5 +7,7 @@ TARGET_NO_KERNEL := true TARGET_CPU_ABI := armeabi -HAVE_HTC_AUDIO_DRIVER := true -BOARD_USES_GENERIC_AUDIO := true +#HAVE_HTC_AUDIO_DRIVER := true +BOARD_USES_ALSA_AUDIO := true +BUILD_WITH_ALSA_UTILS := true TARGET_NO_BOOTLOADER := true (working copy)+#BOARD_USES_GENERIC_AUDIO := true配置编译器环境:make clean source build/envsetup.sh choosecombo 选择 Device->release->generic->eng 配置完成后,终端显示: PLATFORM_VERSION_CODENAME=Eclair PLATFORM_VERSION=Eclair TARGET_PRODUCT=generic TARGET_BUILD_VARIANT=eng TARGET_SIMULATOR=false TARGET_BUILD_TYPE=release TARGET_ARCH=arm HOST_ARCH=x8629UnR4.3.4 配置并编译 Androidegistered武汉科技大学本科毕

业设计HOST_OS=linux HOST_BUILD_TYPE=release BUILD_ID=ECLAIR编译 需要注意的是 Android 的编译需要 make 的版本为 3.8 或更高.执行: make –v 查看系统的 make 版本,如果低于 3.8 那么必须先升级 make 命令的版 本. 执行 make 命令,编译 Android 源代码: make Android 编译完成后, 将在根目录中生成一个 out 文件夹, 所有生成的 Android代码结构内容均放置在这个文件夹中.out 文件夹如下所 示: 1. out/ |-- CaseCheck.txt |-- casecheck.txt |-- host |-- common | -- linux-x86 |-- target |-- common | -- product主要的两个目录为 host 和 target,前者表示在主机(x86)生成的工具,后者表 示目标机(默认为 ARMv5)运行的内容. host 目录的结构如下所示: | -- common |-- obj (JAVA 库) | -- linux-x86 | -- bin (二进制程序) |-- framework (JAVA 库,*.jar 文件) |-- lib (共享库*.so) | -- obj (中间生成的目标文件) host 目录是一些在主机上用的工具, 有一些是二进制程序,有一些是 JAVA 的 程序.U1.nRout/host/eg30istered武汉科技大学本科毕业设计target 目录的 Android 代码结构如下所示: 1. out/target/ |-- common |-- R (资源文件) |-- docs |-- obj (目标文件) |-- product | -- generic 其中 common 目录表示通用的内容,product 中则是针对产品的内容. 在 common 目录的 obj 中,包含两个主要的目录: APPS 中包含了 JAVA 使用程序生成的目标,每个使用程序对应其中一个子 JAVA_LIBRARIES 中包含了 JAVA 的库,每个库对应其中一个子目录. 在默认的情况下, Android 编译将生成 generic 目录,如果选定产品还可以生 out/target/product/generic/ |-- android-info.txt |-- clean_steps.mk |-- data |-- obj |-- ramdisk.img |-- root |-- symbols |-- system 成其他的目录.generic 包含了以下内容:|-- system.img |-- userdata-qemu.img |-- userdata.img 在 generic/obj/APPS 目录中包含了各种 JAVA 使用, common/APPS 相对应, 与 但是已经打成了 APK 包. system 目录是主要的文件系统,data 目录是存放数据的文件系统. obj/SHARED_LIBRARIES 中存放所有动态库. obj/STATIC_LIBRARIES 中存放所有静态库. 多个以 img 为结尾的文件是多个目标映像文件,其中 ramdisk 是作为内存盘 的根文件系统映像,system.img 是主要文件系统的映像,这是 一个比较大的文 件,data.img 是数据内容映像.这多个 image 文件是模拟器运行时真实需要的文31UnRegistered目录,将结合每个使用程序的原始文件生成 Android 使用程序的 APK 包.武汉科技大学本科毕业设计件.55.1文件系统的建立软件工具Mkfs.jffs2 tool 我们需要下载做 jffs2 镜像的工具,这个工具可以生成 jffs2 镜像:sudo apt-get install mtd-utils5.2配置

文件init.rc 该文件用于 Android 初始化 init.atmel.rc 这个文件 初始化开发板相关的硬件外设功能类似于 init.rc vold.conf 用于 Android 自动检测 SD 卡 asound.conf 配置 ALSA ,完成 Android 音频配置5.3操作步骤在宿主机终端执行以下命令生成镜像,也可以做成脚本运行:cp -a $ANDROID_PATCH/out/target/product/generic/root ./ cd ./root/system/ cp -a $ANDROID_PATCH/../../out/target/product/generic/system/* ./ cp -a -f ../../asound.conf ./etc/asound.conf cp -a -f ../../vold.conf ./etc/vold.conf cd .. cp ../init.rc ./ cp ../init.atmel.rc ./ chmod 777 ../root/ -R cd .. mkfs.jffs2 -l -s 0x800 -e 0x20000 -p 0x4000000 -d root/ -o $JFFS2_NAME –n成功后我们会得到UnRjffs2 格式的 Android 文件系统镜像.egis32tered武汉科技大学本科毕业设计66.11.系统功能演示及测试镜像下载设置各个镜像的在目标板的地址:0x00000000 0x00020000 0x00060000 0x00200000 0x00400000 0x0e000000set bootStrapAddr set ubootAddr set ubootEnvAddr set kernelAddr set androidfsAddr set rootfsAddrset bootstrapFile set ubootFile set kernelFile #set rootfsFile #set androidfsFile set androidfsFile4.烧写镜像文件:sam-ba.exe \usb\ARM0 AT91SAM9G45-EK at91sam9g45ekes_demo_linux_nandflash.tcl > logfile.log 2>&1 notepad logfile.log我们使用了 Atmel 提供的烧写工具 samba ,该程序可以直接在 Atmel 官 方网站上下载. 同时将前面配置参数的过程, 做成了 tcl 文件, 直接提供给 samba 使用.UnR3.设置镜像文件名称:eg"nandflash_at91sam9g45ekes.bin" "u-boot-jiangxd.bin" "uImage-jiangxd" "genericfs.arm_nofpu.jffs2" "genericfs.arm_nofpu.jffs2" "AT91SAM9M10-ANDROID-2.0.jffs2-jiangxd"33# u-boot variable set kernelUbootAddr set kernelLoadAddr0x00200000 0x72200000iste"bootargs=mem=128M console=ttyS0,115200 root=/dev/mtdblock1 rw rootfstype=jffs2 init=/init " \ "bootcmd=nand read $kernelLoadAddr $kernelUbootAddr $kernelSize; bootm $kernelLoadAddr"re2.配置 uboot 传给 linux 内核的参数:d武汉科技大学本科毕业设计烧写完成后,复位开发板:我们可看到: Android 在开发板上的启动界面:Android 启动后,我们可以看到其自带的许多应用.UnR下面的图片展示了 Android 系统的应用程序:分别是主界面和菜单界面.eg6.2系统功能测试is34tered武汉科技大学本科毕业设计现有些不仅不能正常工作,并可能造成死机或重启的现象: 用正确. Calculator:可以启动,工作正常. Contacts:可以启动,工作正常.Camera:无法启动,系统重启.分析原因: 没有 ISI 驱动模块. Custom Locale:可以启动,不能工作. Dev To

ols,Settings,Spare Parts:都是硬件相关,可以启动,部分工作. Messaging,Phone,Email:通信相关:可以启动,无法工作,没有相应硬 Music:可以启动,播放 mp3 死机.原因:ALSA 驱动不正确,需要修改. Gallery:可以启动,可以浏览图片. 结合以上分析,可以看出该系统只实现了极少部分功能,需要各个模块正常 工作还需要大量工作. 作为本次设计的基本任务就是制作一个可执行的二进制镜像,使 Android 可以在开发板上正常运行. 我们已经成功的做好 jffs2 可执行镜像, Android 也 成功运行起来,达到了预期的目标. 件.UnRegis35Browser:可以启动,无法连入网络.分析原因:没有分配网络地址的驱动.teAlarm Clock:可以启动,但无法设置闹钟.分析原因:实时钟模块没有调re点击相应的应用图标就可以启动相应的应用程序,仔细测试各个程序发d武汉科技大学本科毕业设计7结束语本文首先对 Android 的体系结构,特点及设计实现进行了相关概述,之后在几种常见的智能手机操作系统的比较中, 分析 Android 特点及优势. 然后结合 以上源代码,采用英蓓特公司的 at91sam9g45 开发板,对 Android 系统进行了 移植.随后对移植成功的系统代码基础上生成了文件系统,并对系统进行了测试 分析. 本文重点放在 Android 的移植上.在对 Android 系统代码进行深入研究的 基础上,结合开源社区的代码和实例,实际修改代码并实现了 Android 的移植. 本设计只 Android 进行了基本的功能移植,对通信,多媒体等还没有仔细 探讨,因此若需要完善系统功能还需做进一步的深入研究.[2] [3] [4] [5] [6]U[1]google:Android官方网站,/ google:Aandroid 开源工程,/intl/ zh-CN/android/ Atmel:linux4SAM,/linux4sam/bin/view /Linux4SAM/WebHome 蓝刃真名上阵:百度百科, /view/1241829.htm?fr=ala0_1_1 cxslc:巴士数码,/news/mtnews/ 200912/199113.shtml E2Ecloud 工作室:深入浅出 Google Android,人民邮电出版社nReg参考文献is36tered武汉科技大学本科毕业设计致 谢在此我要感谢我的指导老师朱磊老师, 他在我的毕业设计和论文完成的过程 中,给予了我许多时间,并提供了相应的资料模板,使我能够按照自己的想法实 现本次设计,最后能顺利并准时的完成毕业设计任务.其次,我要感谢英蓓特 ARM 工具组的工程师们,他们在本设计软件设计分析方面都提供了宝贵的意见 和资料.从中,我学到了很多以前从未接触过的软件设计思想和开发方法,使我 能够非常圆满地结束大学的最后一堂课. 然后,我要感谢信息工程学院的所有老师,

他们的包容,善良和强烈的责任 心让我深深感动.他们不仅在学术上给予了我很大的帮助和启蒙,为我今后的学 象,他们潜移默化的教导将对我今后的生活产生非常积极的影响. 们,以及我的父母,他们使我大学生活充实,快乐,受益匪浅,这些都是我在这 最后,感谢各位评委老师对我论文的耐心审阅. 习打下了坚实的基础, 而且更重要的是他们身上的人格魅力给我留下了深刻的印 我还要感谢在整个大学四年中,所有教授过我的老师们和帮助过我的同学 只字片语中难以表达的.UnR37egistered1

相关推荐