吴 昊,张 哲
(东南大学国家专用集成电路系统工程技术研究中心,南京210096)
Google 于2008 年发布的Android 系统,因其开放源码完全免费等特性[1],在嵌入式领域[2]异军突起,吸引了大量的方案解决公司和设备制造厂商,如今占据智能手机领域的半壁江山。但官方原生的Android 系统并不支持所有CPU 架构,其中Dalvik虚拟机就是一方面的体现。虽然目前绝大部分的Android 产品是基于ARM 架构,但是非ARM 架构阵营正努力向Android 靠齐。
为了使非官方支持的架构平台运行Android 系统,需要对Android 的多个方面进行移植与修改。其中包括最基本的编译工具链的支持、Android 系统的整个编译系统的修改、bionic 库的移植和Dalvik虚拟机的移植。
本文通过分析研究ARM 架构Android 系统Dalvik 虚拟机[3],为基于自主内核Unity 的国产SoC SEP0611 的Dalvik 虚拟机的移植和优化起到指示性作用。第2 节分析了Dalvik 虚拟机的硬件平台相关性和Java 平台无关性,定位Dalvik 虚拟机移植的重点和关键。第3 节介绍了Dalvik 虚拟机在SEP0611国产自主SoC 上的移植,然后重点分析以ARM 架构为代表本地方法调用桥。第4 节介绍了Dalvik 虚拟机在SEP0611 国产自主SoC 上的优化,并且对Dalvik 虚拟机优化的几个方向进行了分析与研究。
Dalvik 虚拟机运行的是Java 程序,所以Dalvik 虚拟机有Java 虚拟机的遗传基因,我们暂且认为Dalvik虚拟机是经过裁剪优化过的Java 虚拟机。Dalvik 虚拟机是否属于Java 虚拟机只是理解层面上的差异:若把Java 虚拟机理解成运行Java 程序的虚拟机,那Dalvik 虚拟机就属于Java 虚拟机的范畴[4];若Java虚拟机是指运行特定格式指令集或包含特定技术专利的虚拟机,则Dalvik 虚拟机则不属于Java 虚拟机。……