1.3 虚拟硬件的安装和使用
现在虽然我们已经编译生成了一个应用程序,但却没有办法运行它。其中的道理很简单,我们使用ARM编译器交叉编译生成的可执行程序,自然是只有在ARM硬件环境下才能够使用。
一个最直接的方法,就是使用ARM开发平台。市面上基于ARM的开发板多如牛毛,无论选择哪一款,都可以帮助我们将操作系统运行起来。但很显然,这种方法并不具备可操作性。其中的一个原因是这样将会无端地增加我们的学习成本。另一个原因是,由于各种开发板的芯片选型、电路设计都不尽相同,使用这些开发平台进行开发,我们将会陷入无尽的硬件细节当中,将不能够从宏观的角度去理解操作系统的原理。
为了解决这个问题,我们需要借助一种特殊的软件来运行编译器生成的ARM程序,这就是虚拟机。
虚拟机是运行在PC中的一种软件,能够模拟出ARM硬件环境。这样一来,我们既不必在操作系统的编写和学习过程中多花一分钱,又能拥有一个统一的硬件平台,不至于牵扯过多的硬件细节,迷失到森林之中。
有很多免费的ARM虚拟机可供选择,SkyEye正是其中之一。
SkyEye是一个开源软件项目,其目标是在通用的Linux和Windows平台上实现一个纯软件集成开发环境,模拟常见的嵌入式计算机系统。我们可在SkyEye上运行μClinux以及μC/OS-II、Linux等多种嵌入式操作系统和各种系统软件,并可对它们进行源码级的分析和测试。SkyEye是一个指令级模拟器,可以模拟多种嵌入式开发板,可支持多种CPU指令集,并支持网络、Flash等大量硬件。在SkyEye上运行的操作系统意识不到它是在一个虚拟的环境中运行的。值得一提的是,SkyEye项目是由清华大学的博士后陈先生发起的,是属于我们中国人的优秀软件项目。
与SkyEye类似的虚拟机还有QEMU。从某种程度上说,QEMU较之于SkyEye更加优秀。但是本书最终选择了SkyEye而放弃了QEMU,主要有以下两个原因:
第一,SkyEye易于配置,方便使用。我们可以通过修改配置文件,轻松地搭建出具有任何硬件特性的虚拟平台。
第二,SkyEye对时下比较流行的几款ARM芯片支持良好,如SAMSUNG的s3c系列及ATMEL的AT91系列等。拥有ARM知识基础的读者对这两个系列的芯片应该都有所了解。以这些常用芯片为基础进行操作系统的开发,将有利于为那些只是略懂硬件的读者拨开硬件迷雾,更清晰地看清楚操作系统的全貌。
ARM虚拟机既已选定,接着我们就来了解一下SkyEye的安装与使用。