【Android源码 栏目提醒】:网学会员鉴于大家对Android源码 十分关注,论文会员在此为大家搜集整理了“面向龙芯平台的Android系统移植研究 - 期刊论文”一文,供大家参考学习
70 48 2012, (22) Computer Engineering and Applications 计算机工程与应用面向龙芯平台的
Android 系统移植研究雷 鸣 1,靳 婷 1,徐晓亮 1,齐 锦2LEI Ming1 JIN Ting1 XU Xiaoliang1 QI Jin21.中国电子科技集团公司第十五研究所 军用中间件研发中心,北京 100083 北京 1001412.中国人民解放军总参谋部 第六十一研究所,1.Military Middleware RampD Center No. 15 Research Institute of China Electronics Technology Group Corporation Beijing 100083 China2.No. 61 Research Institute Headquarters of the General Staff of the PLA Beijing 100141 ChinaLEI Ming JIN Ting XU Xiaoliang et al. Research and transplant
Android OS based on Loongson2F. Com- (22) 70-73.puter Engineering and Applications 2012 48 :Abstract:Based on the analysis of architecture of
android and Loongson-based platform some key techniques ofporting
Android system are studied. The
Android source code has been modified according to the architecture andproperty of Loongson then an
Android Gingerbread system for Loongson-based is implemented. The performanceof the optimized Dalvik virtual machine of the system is tested and verified. This work is valuable to other Androidversion transplant to Loongson-based platform.Key words:
Android Loongson2F transplant virtual machine file system摘 要:在分析
Android 系统与龙芯平台架构的基础上,针对软硬件适配、虚拟机优化、编译器移植等关键技术进行了深入研究。
在充分保持龙芯处理器性能的基础上,
Android 系统
源码进行了优化修改, 对 实现了在龙芯平台完整运行
Android Gingerbread 系统,同时对移植系统中的 Dalvik 虚拟机的性能优化进行了测试验证。
为其他版本
Android 系统在面向龙芯平台的移植方面提供了重要参考, 具有很大应用价值。
关键词: 龙芯 2F;
Android 系统; 移植; 文件系统 虚拟机;文章编号:1002-8331 (2012)22-0070-04 文献标识码:A 中图分类号:TP391.41 引言 器在嵌入式系统领域的一个研究方向,对信息产业 龙芯处理器作为一款基于 MIPS 指令集、我国自 国产化发展具有重要的工程应用价值和意义。
主研发具有完全自主知识产权的中央处理器,具有低功耗、低成本等特点,在嵌入式、工业控制等领域 2
Android 系统架构有 着 非 常 广 阔 的 应 用 前 景 。
Android 是 Google 于
Android 平台的系统架构主要包括 Linux 内核、2007 年 11 月 5 日发布的基于 Linux 平台的开源操作 硬件抽象层(包括系统运行库与
Android 运行环境)、系统,是首个为移动终端打造的真正开放和完整的 应用程序框架、应用程序组成。
图 1 列出了操作系统移动操作系统。
作为一个开源的系统,
Android 不存 的主要组成部分。
在以往阻碍移动产业创新的专有权障碍,因此,向龙
Android 运行于 Linux 内核之上,但不同于其他芯平台上移植
Android 操作系统将会成为龙芯处理 发行版本的 Linux 系统。
因为一般发行版 Linux 系统基金项目:核高基科技重大专项(No.2010ZX01041-001-001-002)。
作者简介: (1980—) 男, 雷鸣 , 工程师,主要研究领域为移动计算、 靳婷 , 工程师, 系统集成; (1981—) 女, 主要研究领域为移动计算 与中间件技术;徐晓亮 , 助理工程师, (1985—) 男, 齐锦 , 高级工 主要研究领域为嵌入式系统架构与应用; (1971—) 女, 程师,主要研究领域为计算机网络设计、网络多媒体技术。
收稿日期:2012-03-16 修回日期:2012-04-27DOI:10.3778/j.issn.1002-8331.2012.22.015雷 鸣,靳 婷,徐晓亮, 面向龙芯平台的
Android 系统移植研究 等: 48 2012, (22) 71 APPLICATIONS HOME Contacts PHONE BROWSER …… APPLICATION FRAMEWORK Notification Active Manager Window Manager Content Providers View System Manager Telephony Package Manager Manager Resource Manager Location Manager XMPP Service LIBRARIES
ANDROID RUNTIME Surface Manager Media Framework SQLite Core Libraries Dalvik Virtual OpenGLES FreeType WebKit Machine SGL SSL Libc LINUX KERNEL Flash Memory Binder IPC) ( Display Driver Camera Driver Bluetooth Driver Driver Driver Power USB Driver Keypad Driver WiFi Driver Audio Drivers Management 图 1
Android 系统框架图
Android大都没有提供支持,所包含的功能, 例如Cairo、 程序,包括 Email 客户端,浏览器,日历,地图等,程序X11、Alsa、FFmpeg、GTK、Pango 及 Glibc 等在
Android 可通过 JNI 调用硬件抽象层来实现对硬件的操作。
系统中都被移除掉了。
Android又以bionic取代Glibc、以 Skia 取代 Cairo、再以 opencore 取代 FFmpeg 等等。
3 龙芯平台
Android 的 Linux 内核实现了包括安全、存储器管理、 龙芯 2F 处理器是一款 64 位 MIPS III 指令集的程序管理、网络堆栈、驱动程序模型等模块1。
通用 RISC 处理器。
龙芯 2F 的指令流水线每个时钟
Android 系统架构采用了分层的设计方法,在 周期取四条指令进行译码,并且动态地发射到五个Linux 内核之上包括硬件抽象层、应用程序框架和应 全流水的功能部件中。
虽然指令在保证依赖关系的用层,每一层为上层提供统一服务,以屏蔽各层之间 前提下进行乱序执行,但是指令的提交还是按照程的差异,保证本层及以下层发生了变化不会影响到 序原来的顺序,以保证中断和访存顺序执行3。
上层2。
各层所包含的内容及具体职责如下: 四发射的超标量结构使得指令流水线中指令和 (1)硬件抽象层是为了将应用层与内核分开,降 数据相关问题十分突出,龙芯 2F 采用乱序执行技术低对 Linux 内核的依赖。
其中,Google 开发一个支持 和激进的存储系统设计来提高流水线的效率4。
Java 语法的虚拟机:Dalvik,其特点是基于寄存器结 龙梦逸珑 8089B 笔记本采用龙芯 2F 处理器,运构, Sun Java 虚拟机是基于堆栈结构, 而 因此 Dalvik 行 Linux 发行版操作系统,具有完全的国产自主化产虚拟机可以针对特定平台做最优化处理,这也是针 权。
本文是在龙梦逸珑笔记本上移植
Android2.3 代对嵌入式系统所做的设计。
号 Gingerbread。
表 1 为龙梦逸珑笔记本配置情况。
(2)应用程序框架提供了调用系统内部核心程 MIPS 公司目前已经移植
Android 到部分 MIPS序的管理程序。
平台和 QEMU 上面,并且免费提供
源码。
这些
源码 (3)应用层由 Java 实现,包括了一系列核心应用 对移植工作有非常好的参考意义。
72 48 2012, (22) Computer Engineering and Applications 计算机工程与应用 表1 龙梦逸珑 8089B 配置 4.3
Android 文件系统移植 名称 型号 文件系统
源码是针对 MIPS32R2 架构进行设计, 处理器 (900 MHz/512 KB 二级缓存) Loongson2F 其中含有 MIPS IV 和 MIPS V 中的 32 位指令,对于 芯片组 AMD CS5536 南桥(CPU 集成内存控制器) 内存 1 GB GBX1/DDR2-667 MHz) (1 只支持到 MIPS III 的龙芯,使用原始的文件系统会 硬盘 160 GB (2.5 英寸/5 400 r/min) 遇到大量的非法指令。
因此,移植
Android 到龙芯平 显卡 Silicon Motion SM712 台,需要对文件系统源代码进行修改以适配 MIPS III 显示屏 8.9 英寸(LED 背光/1 024×600) 指令集。
网络 100 MHz Ethernet RJ45) (
Android 文件系统代码目录主要包括三个部分: USB USB2.0X3 重量 1.23 kg 系统库与 Dalvik 虚拟机 , (硬件抽象层) 应用程序框 体积尺寸 (255×188×250)mm 架、应用程序。
文件系统目录结构如下所示: 电池 11.1 V/2 200 mAh (全局的编译脚本) bionic Makefile ; (基础库代 (引导与恢复程序) build 码) bootable ; ; (编译和配置4 系统移植 (JAVA 虚拟机) development 程序开发 脚本) Dalvik ; ; (4.1 建立交叉编译环境 所需要的模拟器和工具) external 系统外部库) ; ( ; 编译工作是在 Ubuntu10.04 (32 位)下进行,使用 (应用程序框架) hardware frameworks ; (与硬件平台jdk1.6。
相关的库) packages 应用程序) prebuilt
Android 编 ; ( ; ( MIPS 提供的代码中自带了编译的工具链,但其 译工具链) system ; (
Android 系统库)。
其中应用程序中 gcc 自带的 libgcc.a 是针对 MIPS32R2 架构 CPU 编 使用 java 语言进行设计,不需要进行修改,
Android 对译的, 当gcc配置编译选项为-marchmips3或者-march 文件系统的移植主要就是对系统库与 Dalvik 虚拟机、loongson2f时, 会发生链接错误, 因为龙芯与MIPS32R2 应用程序框架的移植。
是互不兼容的架构。
Android 的工具链是针对 bionic (1) Dalvik 是基于寄存器的虚拟机, 因 可以针对libc 定制的,MIPS 放出了
Android 的
源码,但其中交 平台进行优化,实现方式包括优化的基于汇编码方叉编译工具链是被封装过的,无法进行修改,因此无 式以及通用的基于 C 语言方式。
为了不损失性能,移法针对龙芯平台重建这个工具链。
植选择基于平台优化的汇编码方式实现方式。
Dalvik 工具链制作脚本 crosstool-ng 可以较为简化地制 虚拟机的解释器实现代码中出现了多处 MIPS IV 和 MIPS V 的汇编指令。
主要包括:movn、movz、mul、作龙芯可用的通用标准工具链。
用制作好的 libgcc.a 需要将它们替换为龙芯平台 MIPS III 兼容指令。
pref, ( )与 libgcc_eh.a 替换掉
Android 工具链里面的相应库文 movn:表示如果第三个寄存器的内容为负,那么 组合出一个可用的龙芯
Android交叉编译工具链。
件, 复制一个寄存器的内容到另外一个寄存器。
替换为4.2 Linux 内核移植 beqz 判零条件转移指令与 move 移动指令。
Android 的内核位于
android.git.kernel.org 上,目 movz:表示如果第三个寄存器的内容为 0,那么前较稳定版本是 2.6.35.75。
Linux 内核版本已经包含 复制一个寄存器的内容到另外一个寄存器。
替换为了龙芯相关的支持代码,进而自动地被 Google 收纳 bnez 非零条件转移指令与 move 移动指令。
进了
Android 内核中。
这意味着
Android 内核默认支 mul:表示第 1 个寄存器获得另外两个寄存器相持龙芯,只需适当配置即可。
但特别需要说明的是, 乘的结果。
替换为 mult 乘法指令与 mflo 移动指令。
虽然龙芯支持 64 位内核版本,并且在 32 位下最多只 pref: 数据预存缓存指令。
去掉数据预存缓存指令。
能访问 512M 内存,但是由于 Google 给
Android 增加 (2)修改页表大小为 16K,与内核中设置的一致。
的驱动都从未在 64 位模式下调试过,为了避免不必
Android 代码默认为 4K,共有两处。
一处为 bionic (基要的兼容性问题,内核编译选择 32 位版本。
龙芯的 础库代码 中定义, ) 页表大小2PAGE_SHIFT。
一 修改公式为:CPU 核心只支持 16K 的页表大小,跟通常系统 4K 不 处 为 Dalvik 虚 拟 机 代 码 中 定 义 ,SYSTEM_PAGE_符,因此编译内核选项应设置页表大小为 16K。
在 SIZE 修改为 16 384 (16K)。
General Setup 里 面 , 选 Enable the Anonymous 勾 (3)应用程序框架中的 libAGL 里面的汇编代码Shared Memory Subsystem,否则
Android 在启动时 用到了大量龙芯平台不支持的乘加指令。
修改其判会使 zygote 进程无法启动导致启动失败。
断指令,使只在非龙芯 CPU 编译时才使用汇编,强制雷 鸣,靳 婷,徐晓亮, 面向龙芯平台的
Android 系统移植研究 等: 48 2012, (22) 73在对龙芯平台编译时使用 C 代码来实现。
classloader 测试Java类加载器性能) verification-error ( , (4)修改架构与位宽为 32 位 MIPSIII。
龙芯作为 .
上一篇:
基于Android操作系统的GPS无线定位系统设计
下一篇:
法律专业开题报告范文