【Android源码 栏目提醒】:网学会员--在 Android源码 编辑为广大网友搜集整理了:基于ARM2440平台的Android操作系统的移植 - 期刊论文绩等信息,祝愿广大网友取得需要的信息,参考学习。
第2l卷第1期 计算机技术与发展 V01.2l No.1 201 1年1月 AND DEVEI.OPMENl’ Jan. 2011 COMPUTER’FECHNOIDGY 基于ARM2440平台的Android操作系统的移植 宋 杰,王书菊,曹竹冬,檀林欣 (安徽大学计算智能与信号处理教育部重点实验室,安徽合肥230039) 摘要:Android作为2007年底刚刚发布的全新的开源手机操作系统,由于其开源性与强大的应用层API,使得其在短时 间内拥有很多开发者。
结合实例阐述了Android操作系统(Android OS)移植到ARM2440平台的具体实现过程,重点论述 了移植过程中的具体方法。
其中主机操作系统采用Fedora 9(Linux一2.6.25),目标机采用友善之臂mini2440,Android OS 内核采用Linux一2.6.25一
android—1.0,编译工具采用arm—linux—gee一4.3.2。
最后,成功将Android OS移植到开发板上。
关键词:Android操作系统;移植;Fedora 9;mini2440 中图分类号:TP316.89 文献标识码:A 文章编号:1673-629X(2011)Ol-0066-04 Android Operating System Migration Based on ARM2440 Platform SONG Jie,WANG Shu-ju,CAO Zhu-dong,TAN Lin—xin (Ministry of Education,Key Laboratory of Intelligent Computing&Signal Processing, AnHui University。
Hefei 230039,China) Abstract:Android platform is a new generation of¥nlast mobile phone platform launched by GooSe.Android OS is open and Android provides powerful application layer API,SO it has vast numbers of developers in a short time.Discuss with Android operating system (Android OS)migration tO the ARM2440 platform specific implementation process.Focuse on the specific method of transplantation. The host operating system using Fedora 9(Linux-2.6.25),the target machine is a friendly釉mini2440,Android OS kernel using Linux一2.6.25一
android-1.0,compilation tools using arIn—linux—gcc一4.3.2.Finally,the Android OS Was ported tO the development board successfuUy. Key words:Android operating system(Android OS);Migration;Fedora9;mini2440O 引 言 1 Android OS介绍 Android操作系统是Google与OHA(Open Hand— Android OS是Google公司最新推出的面向下一代set Alliance,开放手机联盟)合作开发的基于Linux2.6 以移动互联网业务为核心的智能终端开源平台,该平平台的开源智能手机操作系统平台。
Android从开放 台由操作系统、中间件、用户界面和应用软件组成,具以来,受到业界人士追捧,吸引了越来越多的程序员参 体框架结构由五部分组成,其核心为嵌入式Linux2.6与到手机开发的领域中,所以将Android OS移植到不 操作系统,向上搭配Google为Android开发Libraries同的平台上有了很好的市场价值。
(函数库)及Android Runtime(运行环境)。
再配合Ap— Android Linux Kernel是基于Linux操作系统2.6 Framework(应用程序框架),来开发各种不同 plication版所更改而来,本文所用的Android Linux Kernel版本 的Application(应用程序)。
为2.6.25,采用的CPU版本为嵌入式系统常用的 Android是基于Linux version 2.6.25内核开发的,ARM架构,不是Pc常见的x86架构。
内核底层用来 主要是添加了一个名为Goldfish的虚拟CPU以及An—提供核心系统服务:安全机制、内存管理、进程管理、网 droid运行所需的特定驱动代码。
该层用来提供系统络堆栈、驱动模型等。
由于Android与ARM的良好结 的底层服务,包括安全机制、内存管理、进程管理、网合性,所以笔者选用基于¥3C2440处理器的mini2440 络堆栈及一系列的驱动模块。
作为一个虚拟的中间开发板作为目标机¨“1。
层,该层位于硬件与其它的软件层之间。
需要注意的 是,这个内核操作系统并非类GNU/Linux的,所以其收稿日期:2010—05—22;修回日期:2010-08-01 系统库、系统初始化和编程接13都和标准的Linux系基金项目:安徽省教育科研计划项日(2008jyxm277)作者简介:宋杰(1966一)。
男,剐教授,硕士生导师,研究方向为嵌 统有所不同的。
入式系统、计算机原理与接几、,£物信息学。
对Android内核结构进行分析是移植到其他平台 万方数据 第1期 宋杰等:基于ARM2440平台的Android操作系统的移植 ·67·的先决条件,由于Android的开源性,可以直接到官方 储媒介,而很少使用磁盘,因此整个系统的加载启动任网站下载
源码,本文采用Linux一2.6.25一
android-1.0。
务就完全由引导程序来完成。
通常,在嵌入式系统中,Android内核是基于Linux内核改进而来,所以做移植 引导用Flash会被按顺序分为几个区域,Android OS也工作的重点是比较两种内核的异同点,通过查看
源码, 不例外,Android中的FLASH分区如图1所示。
可以发现有以下异同点。
首先,Android增加了基于ARM架构增加Gold—Fish平台,目录如下:kernel/arch/arm/roach—goldfish、kernel/include/asm—arm/arch-goldfish;增加了yaffs2 FLASH文件系统,目录如下: 从低地址列岛地址方向kemeL/fs/yaffs2;增加了Android的相关Driver,目录如下:kernel/drivers/
android;增加了switch处理,目录如 图1 Android的FLASH分区下:kernel/drivers/switch/;增加了一种新的共享内存 BootLoader是嵌入式系统最初运行的一段小程处理方式,文件如下:kernel/mm/ashmem.c;其次为 序,它在系统复位时被运行。
从字面意义理解,它包括Linux一2.6.25内核所做的补丁等,例如BlueTooth,在 两个功能:装载(10ad)和启动(boot)。
具体来说,Boot—此不做详细分析。
进行比较之后在移植过程中就可以 Loader完成的任务主要包括初始化处理器及外设的硬在需要修改的地方进行修剪∞’61。
件资源配置、建立内存空问的映射图、装载操作系统映 像到内存中去、对FLASH编程、运行操作系统等。
2软硬件平台搭建 BootLoader是与操作系统相关的,主要符合操作系统 所谓移植,就是使一个实时内核能在某个微处理 的引导标准,就可以让此BootLoader引导操作系统。
器或微控制器上运行,或者说就是将不同平台、不同编 本实验采用Supervivi,它由Vivi(韩国mizi公司原创,译环境的程序代码经过修改转移到自己的系统中运行 开放
源码)演变而来。
它支持yaffs文件系统和Linux、的实现过程。
本文是将Android OS通过修改移植到 WinCE、Vxworks等多种嵌入式操作系统,是目前2440/ARM2440平台上。
2410系统中功能最强大最好用的BootLoader¨1。
Android OS是基于Linux内核修改而来的,通过在 GCC(GNU Compiler Collection)是GNU公社的一Linux平台下,对两个操作系统的内核进行比较分析, 个项目,是一个用于编程开发的自由编译器。
GCC包从而修改需要裁剪的地方,顺利移植到相应的开发板 含众多语言的编译器,其中包括C,c++,Ada,Object C之上。
本文采用的时基于Linux kemel2.6的fedora 9 和Java等。
如今的GCC借助于它的特性,具有了交叉操作系统,fedora 9是Linux的一个免费发行版,它的 编译器的功能.即在一个平台下编译另一个平台的代前身是Red Hat Linux。
可以从官方网站下载安装,并 码。
GCC交叉编译原理如图2所示一。
。
可下载到fedora 9
源码。
暑曩 其次,
android OS内核提供了基于ARM的架构, 磊移植到ARM上有了理论支持。
本文选择基于Sam-sung¥3C2440A处理器的mini2440开发板,是ARM 9系列芯片。
mini2440开发板主频是400MHz,带有内存管理单元(MMU),支持Linux和Windows CE等嵌入式操作系统的移植嵌入。
另外,mini2440带有FLASH存储单元,其中Nand Flashl28M,Nor Flash2M,掉电非易 图2 GCC交叉编译原理图失‘…。
GCC的强大功能及开放
源码,本文采用的a肌一 linux—gcc一4.3.2.tgz(with EABI)的大小是84MB,EA— BI(Embedded Application Binary Interface)嵌入式应用3移植过程分析 系统移植是个庞大的工程,主要包括四个步骤:第 程序二进制接El,EABl支持软件浮点和硬件实现浮点一步是准备阶段,包括搭建平台,下载
源码;第二步是 功能混用,使系统调用的效率更高,另以后的工具更兼建立交叉编译环境;第三步是编写引导程序BootLoad- 容。
是一种软件加速的方式,本文将Android配置成er,配置编译内核,必要的时候要根据具体的硬件平台 EABI特性。
修改源代码;第四步是制作文件系统映象;第五步就是把相应的文件烧到开发板上去。
4移植过程实现 在嵌入式系统中,主要使用FLASH作为系统的存 软硬件平台搭建好之后,我们需要做的就是具体 万方数据 ·68· 计算机技术与发展 第21卷的编译工作了。
统,稍加修改而来,解压后放在/opt/FriendlyARM/an·4.1准备阶段 droid/fs里面,然后通过#/usr/sbin/mkyaffs2 image一 主机上采用在aware虚拟机上安装fedora 9操作 128M fs minni2440T35
android.img,利用根文件系统制系统,并到官网下载Linux2.6内核和Linux一2.6.25一 作工具得到我们需要的Android OS的yaffs2文件系统
android—1.0内核,通过Linux操作系统提供的指令可 映象minni2440T35
android.img。
以比较两种内核之间的差异。
使用友善之臂提供的 4.5烧写到开发板上arm-linux-gcc一4.3.2.工具链和mkyaffs2image.tgz根 在准备阶段,已经确保mini2440能够正常烧写,文件系统制作工具,均可以到http://www.arm9.net/ 主要是USB驱动和串13终端设置,可以参见mini2440下载。
确保目标板mini24440开发板上的USB接口、 开发板提供的用户手册。
串口、JTAG已经连接上,并且安装了相应的驱 烧写Android OS到开发板主要过程如下:首先是动‘10州1。
格式化nand flash,然后烧写友善之臂提供的supervivi4.2交叉编译环境的建立 一128M,主要通过ARM串口烧写工具dnw来进行传送 安装编译器的过程如下,首先以根用户身份登录 数据,其次是将上面编译过的zimage文件也是通过系统,复制a珊一linll】【一gcc一4.3.2.tgz到根目录下tmp dnw传送数据,最后把相应的yaffs2文件系统映象通文件夹里,解压命令#tar xvzf arm—linux—gcc一4.3.2-C 过串口传送工具dnw下载到nandflash中。
重启系统,/,解压的文件放到了根目录下/usr/local/arm下,然后 即可看到相关的Android启动信息,如图3所示¨“。
配置下编译环境路径#gedit/root/.bashrc,在文本编辑器最后一行加上exert PATH= ¥PATH:/usr/loeal/arm/4.3.2/bin,重启系统,通过anll—linux-gcc—v查看gcc的版本信息。
4.3内核移植 交叉编译环境成功建立以后,可以开始编译内核了,在编译内核之前,需要对内核进行相应的修改,首先建立工作目录:#/opt/FriendlyARM/
android, 然后解压内核到此目录下:#tar xvzflinux一2.6.25一
android一1.0.tar.铲一C/opt/FriendlyARM/an- 图3 串1:7中Android OS启动信息droid,解压出来的内核中已经包含了一个缺省的内核 通过阅读启动信息可以看见,系统移植的还不够配置文件:config mini2440,运行命令:#ep config—min— 完善,有些驱动程序并没有找到,还需要针对平台编写i2440.eonfig(注意config前面有个“.”),然后运行make 相应的驱动模块。
等待片刻即可在mini2440开发板 menuconfig,不要做任何设置,保存退出,然后make 上看到Android启动界面,正中间有个大钟,至此系统 zlmage,执行完毕,将在arch/arm/boot目录下生 移植工作告一段落,如图4所示。
产zlmage文件『l 3。
。
4.4制作yaffs2文件系统映象 首先需要安装mkyaffs2image.tgz根文件系统制作 5结束语工具,#tar xvzf mkyaffs2image-128M.tgz—C/,把解压 Android号称是首个为移动终端打造的真正开放后的文件放在/usr/sbin/mkyaffs2image一128M中通过 和完整的移动软件。
谷歌开发Android操作系统的目在当前目录下执行./mkyaffs2image一128M即可得到相 标是让(移动通讯)不依赖于设备甚至平台。
越来越关信息。
多的Google Android爱好者们开始移植Android系统 Android文件采用是和Linux不完全相同的根文 到现有掌上设备上。
最早的成功移植在Zairis上,然件系统,这里我们下载busybox SE具,制作Android文 后是在OMAP芯片组基础上的N810,还有很多平台没件系统,这里主要是参考了友善之臂所提供的文件系 有或者正在研究移值Android系统。
通过本文的试 万方数据 第1期 宋杰等:基于ARM2440平台的Android操作系统的移植 ·69·验,将Android移植到ARM2440平台上去,符合谷歌公 大全〔M〕.北京:人民邮电出版社,2(L、9.司开发Android的初衷,可以为以后移植Android到其 〔4:Jacoby G,Davis N.Battery—based intrusion detection〔C〕// in Global Telecommunications Corfference.2004.GLoBE—他新的平台上作为参考实例。
.