郑州大学毕业设计(翻译)题目:Virtual ARM Platform for Embedded System Developers指导教师:李正民职称:副教授学生姓名:乔旭学号:20052430222专业:计算机科学与技术院(系):信息工程学院完成时间:2009年5月20日2009年5月20日为嵌入式系统开发人员建立虚拟的ARM平台[摘要]越来越多的嵌入式系统开发人员和片上系统设计师采用microprocessor-based(基于微处理器的)设计方法,以减少推向市场的时间。
在过去的10年里,ARM处理器一直都是嵌入式系统行业的主角之一。
然而,在早期设计阶段,有许多对基于ARM处理器的嵌入式软件开发的限制。
对于那些不熟悉嵌入式软件设备的人来说,在ARM硬件平台上测试他们的软件是一项异常艰巨的工作。
为克服这些问题,我们为基于ARM的嵌入式系统开发人员设计了虚拟的ARM平台,提供更容易测试和调试的环境。
使用虚拟ARM平台的好处是:(1)减少开发成本,(2)对于初学者降低了入门的难度,以及(3)让您更轻松地测试和调试嵌入式软件。
与许多其他的纯粹以软件为导向且独立于硬件平台的ARM模拟器不同,我们的虚拟ARM平台是专门针对SYS-Lab 5000 ARM硬件平台(由Libertron公司负责设计制造)研发的,这意味着我们的平台可以尽可能地模仿在目标硬件上的嵌入式软件的各种行为。
本文旨在介绍我们的虚拟ARM平台的设计思想以及它在减少设计时间和开销方面的一些应用。
1.导言嵌入式系统是一个拥有特殊用途的计算机系统,它仅仅采用通用计算机系统一小部分的专用功能,有时还需要进行实时处理。
通常,嵌入式系统具备完整的硬件设备和机械装置,并且它已经深深渗透到现代生活的方方面面。
不仅仅是个人数字助理(PDA)、mp3、手机等电子消费产品,在电信系统,交通运输系统,医学仪器等领域里,仍然存在着许多的嵌入式系统,例如防抱死刹车系统(ABS)、GPS、电子听诊器等。
[1]微处理器是嵌入式系统非常重要的硬件结构之一。
随着个人计算机和因特网的普及,微处理器成为IT行业发展中的主要角色。
针对不同的用途,每个微处理器都有自己的特殊结构。
[2]其中,ARM微处理器采用RISC结构,被广泛应用于嵌入式系统的设计之中。
这不仅仅是因为它的高性能和廉价,而且还因为它有低功耗的特点。
ARM系列处理器在各种电子消费类产品中占有很大优势,从便携式设备(PDAs,手机,媒体播放器,掌上游戏机和计算器)到计算机外设(硬盘,桌面路由器)。
我们即将在本文中介绍的虚拟ARM平台,是一个为目标硬件设计的ARM模拟器。
与其他仅仅在软件模型上设计的虚拟ARM机不同,我们的虚拟ARM平台可以与目标嵌入式系统执行相类似的操作。
这种相类似的操作具体是指我们的虚拟ARM平台允许嵌入式系统开发人员在一个正真的H/W平台上开发和测试他们的嵌入式应用。
为执行一个特定的虚拟ARM平台,我们已经选择了SYS-Lab5000 ARM硬件平台作为我们的目标H/W平台。
正是由于特定目标的虚拟平台可以测试目标平台的细节而无需实际的目标平台,设计时间和花销被大幅的降低了。
尤其在教学领域,在无法提供充足数量的嵌入式设备时,这种针对特定目标的虚拟平台将尽可能减少学生对实际硬件的需求,同时为学生学习如何设计特定目标的嵌入式系统提供巨大帮助。
我们的虚拟ARM平台通过使用SimIt-ARM虚拟器和QT程序库的用户图形界面,完全可以建立在ARM虚拟器之上。
为了方便维护和调试,我们还扩展了特定目标的易用程度,设计了给定平台信息,提供自动进行特定平台环境设置的模拟器。
此外,我们还可以为简易操作系统模拟器运行中断句柄定时器。
本文的余下部分将介绍以下内容:在第二部分,我们讨论在虚拟ARM平台上开发嵌入式系统与实际硬件平台上的区别。
在第三部分,我们将总结一些相互关系的研究成果。
第四部分介绍我们的虚拟ARM平台是如何组织和工作的,第五部分介绍我们的研究成果,第六部分是总结。
2.虚拟ARM平台的需求2.1 S/W嵌入式系统的发展众所周知,在通用计算机平台例如PC上开发软件与在嵌入式平台上开发软件有很大的不同。
因此,通用平台软件开发人员在开发嵌入式平台软件时,可能会遇到很多困难。
因为,嵌入式系统软件开发需要将通用运行程序烧录到嵌入式平台中,并检查它的运行。
这就意味着当通用软件有相同的开发和运行环境(不同PC之间)时,软件开发环境(以PC为例)和嵌入式软件运行环境(嵌入式目标平台)不相同。
图1展示的是通常开发和测试嵌入式系统软件的步骤。
图1 嵌入式系统软件的开发与PC软件在每一步发展中仅仅需要PC不同,嵌入式软件的发展需要在实际的嵌入式系统硬件上进行。
对于那些不熟悉嵌入式软件环境的人来说,在实际的硬件平台上测试他们的软件是一件很富有挑战性的工作。
他们需要全面了解嵌入式系统,并善于使用硬件和在硬件上烧录程序。
而且,如果他们不能负担足够的嵌入式系统(通常价格昂贵),他们能在实际硬件上测试他们软件的机会将变得极为有限。
为了解决这一问题,我们设计了能够方便测试和调试基于ARM嵌入式系统开发人员的虚拟ARM平台。
2.2 虚拟ARM平台的使用虚拟ARM平台可以和实际ARM硬件平台一样地观察嵌入式软件运行的结果。
开发人员可以写程序代码,在客户机(PC)上通过虚拟ARM平台证实他们的程序。
因为它除PC外不需要其他的硬件,在开发程序时也不需要烧录的阶段。
图2展示的是在虚拟ARM平台上开发嵌入式系统程序的过程。
图2 在虚拟ARM平台上开发嵌入式应用程序的过程3.一些相互关系的工作成果近些年来,在嵌入式软件虚拟工具方面有许多研究成果,以下我们简要地对其中的部分成果进行总结。
在嵌入式系统开发中,作为最广为人知的ARM模拟器,ARMulator常被用于提供虚拟环境原型。
通过虚拟的硬件IP和端口,在ARMulator上操作系统(例如μC/OS-II)[6]可以脱离H/W平台模拟运行。
SimIt-ARM是一个设置指令的模拟器,它可以在用户层和系统层运行ARM程序。
SimIt-ARM支持两种流行的模拟形式:解释和动态编译。
但正如图3所示,SimIt-ARM不能够脱离在C运行库支持下的I/O控制代码去建立固件级的程序。
因此,对于不同的目标平台,初始化代码也是不相同的。
开发人员不能在虚拟工具和目标H/W ARM平台中使用相同的可执行程序。
图3 在两种平台下固件级代码的运行所有的这些努力都为了向开发人员提供书写源代码,建立可执行程序,并在主机PC上运行的功能。
但不幸的是,这些工具只能在特定目标处理器上模拟可执行文件。
因此它不能为整个目标硬件平台模拟运行,不能控制外围设备,同时在代码模拟上也有相当大的限制。
4.虚拟ARM平台的执行我们建议虚拟ARM平台对外围设备进行持续的控制,这是以往的ARM模拟器所不能提供的。
通过对外围设备增加控制代码,现有的ARM模拟器(例如SimIT-ARM或者SimpleScalar)可以控制外围设备,例如LED,七段数码显示器,步进电机等等。
图4展示的是虚拟ARM平台通过对外围设备的“靶样”控制,开发嵌入式系统的步骤。
图4 虚拟ARM平台对外设提供控制虚拟ARM平台由虚拟ARM模拟器,图形用户界面,输入事件句柄,定时器,和I/O设备模型组成。
如图5所示,虚拟ARM平台启动后,首先初始化图形用户界面,在屏幕上显示GUI主窗口,然后虚拟ARM模拟器开始运行,处理可执行文件的操作并向虚拟ARM平台发送结果。
当虚拟ARM平台从虚拟ARM模拟器得到模拟结果后,便同从虚拟ARM模拟器得到的可执行报告一道更新它的用户界面。
当输入事件句柄发现任何输入事件,他分析事件,当事件是中断请求时,他将中断当前执行的程序。
如果事件不是中断请求,句柄将输入事件进程发送到虚拟ARM模拟器来模拟修改后的数据操作。
图5 在虚拟 ARM平台运行程序4.1 虚拟ARM模拟器虚拟ARM模拟器不仅可以解码还可以与实际的ARM处理器一样运行给定的ARM操作,即处理从虚拟ARM平台转移的事件。
如图6所示,当虚拟ARM模拟器解码ARM命令时,要检查解码命令是否包含外围设备的控制地址。
如果不包含,虚拟ARM模拟器仅仅运行ARM命令并向虚拟ARM平台发送结果。
然而,如果包含,虚拟ARM模拟器可以执行额外的操作。
因此,虚拟ARM平台利用I/O内存映像图控制外围设备,特定平台的数据文件包含设备控制记录存取地址和相应的设备控制地址。
一个特定数据文件的平台例子如表1所示。
通过查找H/W 特定数据平台,虚拟ARM模拟器确定应该控制哪个设备,确定如何控制相应的设备。
最终,虚拟ARM模拟器通过发送设备控制符和虚拟ARM平台数据处理控制设备。
图6 在虚拟 ARM模拟器上运行程序表1 对SYS-Lab 5000 ARM H/W平台的数据抽样通过使用特定平台的数据文件,开发人员允许在虚拟ARM平台和实际H/W平台上使用相同的代码控制外围设备。
4.2 图形用户界面图形用户界面将被用于处理输入事件,程序同步,打印屏幕上的模拟结果。
如图7是我们的GUI全局结构。
图7 图形用户界面和虚拟ARM模拟器GUI看起来与实际的目标H/W平台一致。
GUI通过打印真实设备的更改显示外围设备控制结果。
同样地,在GUI中当开发人员敲击外围设备(例如键盘和转换器)使虚拟ARM平台发现外部输入。
在开发人员控制外围设备时,图8.2显示了一个执行GUI的例子,图8.1显示了一个脱离GUI的虚拟ARM平台的例子。
图8.1 脱离GUI的虚拟ARM平台LED显示图8.2 GUI下的虚拟ARM平台LED显示4.3 定时器和I/O设备我们还在虚拟ARM平台上使用定时器。
当虚拟ARM平台启动时,初始化定时器。
通过使用定时器,开发人员可以测试看门狗定时器中断,上下文开关程序和系统内核模拟器例如μC/OS-II[6]。
图9显示了定时器被用于操作系统定时器。
图9 操作系统定时器是如何在虚拟ARM平台上工作的虚拟ARM模拟器可以像使用SDRAM单元一样使用虚拟SDRAM。
通过使用作为虚拟内存的虚拟SDRAM,虚拟ARM模拟器可以通过连接I/O控制代码模拟固件级代码,使得代码的运行与实际H/W ARM平台相一致。
图10显示了在虚拟ARM平台和实际H/W ARM平台上的固件级代码均可以运行。
图10 在虚拟ARM平台和H/W平台上运行固件级代码当然,我们还可以使用LED,点阵,七段数码管,LED文本显示器,步进电机,直流电机和键盘区。
LED(如图8.2),点阵(如图11.1),七段数码管(如图11.2)都可以通过CPU时钟控制将控制数据转换为图形输出。
LED文本显示器(如图11.3)通过一步步地输入文本控制数据,可以在LED上显示给定的打印信息。