基于gnuboy虚拟机的嵌入式实验平台的移植与优化

基于gnuboy虚拟机的嵌入式实验平台的移植与优化,第1张

  Gnuboy已经实现了i386汇编代码的一些优化工作,能够在奔腾机器上运行良好,除此之外,到目前为止,它能够运行的平台还很有限。随着嵌入式系统设计技术的发展,PDA、Smartphone等嵌入式产品的功能不断地得到扩展,适应用户的需要, Gnuboy在嵌入式产品中的移植应用非常具有前景。目前Gnuboy在ARM Linux下还没有得到很好的应用,本文就是在构建的基于ARM920T Linux的嵌入式平台上对gnuboy运用进行的尝试性工作,同时, Gnuboy作为一种虚拟机技术,本文的工作对研究虚拟机技术在ARM L inux中的应用也具有一定的价值。

  硬件环境

  本实验测试板采用Motorola公司的MX1 Lite,系统的主要模块有处理器内核模块、用户接口模块、连接设备模块等,如图1所示,下面分别进行介绍。

  

基于gnuboy虚拟机的嵌入式实验平台的移植与优化,第2张

 

  1)处理器内核模块采用v4T体系结构的ARM920T 内核拥有16K的指令缓存和16K的数据缓存; 外部接口模块提供了最多6 个片选信号来访问外部设备,其中连接的12Kx16bits的NOR Flash 经过配置用于系统启动; SDRAM 控制器提供了对使用32Mx32bits的SDRAM的访问控制。

  2)用户接口模块由于MX1 L ite没有模拟信号处理模块,无法直接接收触摸屏的输入,所以本系统采用了TI的TSC2301芯片来支持触摸屏的输入功能,它与主芯片通过连续外设接口协议连接,它不仅可以接收触摸屏的输入,而且它还支持声音数模转换和输入输出等功能; LCD 控制器用于给外部液晶显示屏提供显示数据,LCD采用了Sharp 的20x240 HR - TFT LCD,它支持触摸屏输入,分辨率为320x240。

  3)连接设备模块包含有多媒体卡/数字安全主机控制模块、内存棒控制器和智能卡接口,以此来连接用于外部存储的多媒体卡。

  Gnuboy软件结构和一些工具软件

  Gnuboy是基于Qt系统的,可从图2中看出它和整个系统的关系。本文构建的基于ARM920T的嵌入式L inux平台下采用的是嵌入式系统的QT 版本: QT/Embedded 和Qtop ia(QPE) ,这有助于模拟器的移植。

  

基于gnuboy虚拟机的嵌入式实验平台的移植与优化,第3张

 

  QT/Embedded和Qtopia

  QT/Embedded和Qtopia是著名的QT库开发商TrollTech开发的基于Framebuffer、面向嵌入式系统的QT版本。它的特点是界面美观、色彩配比好,使用与QT/Windows和QT/X11 完全一致的AP I接口,许多基于QT的程序可以非常方便地移植到嵌入式系统。Qtopia 包括了全套的个人信息管理PIM,如地址本、日程安排、游戏、配置工具等。QT/Embedded实现了对下层输入设备的驱动和底层图形接口以及各基类和AP I,它在编译后生成函数库被应用程序调用。Qtopia也是以客户/服务器的方式,通过消息机制来管理各种应用程序。图3描述了QT应用程序的执行方式及系统结构,其中X Server是核心。

  

基于gnuboy虚拟机的嵌入式实验平台的移植与优化,第4张

 

  一些工具软件

  移植前需要在宿主机上建立ARM 的交叉编译环境,主要用到的开发工具包括三个部分: binuTIls、gcc、glibc。

  ● BinuTIls — 用于 *** 作二进制文件的实用程序集合,包括诸如汇编器as、二进制转换工具( objdump、objcopy) 等这样的实用程序;

  ● Gcc — GNUC编译器(C编译器gcc和C + +编译器g + + ) ;

  ● Glibc —所有应用程序将链接到的C库。

  可以直接从Internet上下载已经编译的二进制文件安装到PC机上,并相应设置比如路径等这样一些比较简单的参数即可使用,但必须保证编译时所用的函数库版本与目标板上运行时所使用的函数库版本的一致。ARM Developer Suite它是全套的实时开发软件工具包,编译器生成的代码密度和执行速度优异,可快速低价地创建ARM结构应用。

  移植和优化

  Gnuboy是一种虚拟机机制,它对具体硬件的 *** 作是通过 *** 作系统(这里是L inux)来进行的,图4 为它对基于ARMlinux平台硬件 *** 作的抽象层次。

  

基于gnuboy虚拟机的嵌入式实验平台的移植与优化,第5张

 

  这个抽象层次也适用于在ARM Linux平台下用C语言编写的一般虚拟技术应用。越是顶层越是抽象,代码可移植性就越好;越是底层,越是硬件相关,代码可移植性就越差,但代码执行速度越快。这也是一般虚拟机移植和优化思想的体现,提高移植性,多运用抽象的接口,提高速度,多一些直接 *** 作硬件的代码。

  移植

  Gnuboy在此平台上的正确运行需要解决中断、提供Framebuffer支持、数据存储格式、字符串到64位整数转换等问题。

  中断问题

  Gnuboy需要依赖宿主 *** 作系统(这里是L inux)来提供输入/输出等基本服务,让宿主 *** 作系统作为它与硬件设备的中间人,这种游离于硬件通信细节之外的方法具有良好的可移植性,本文要解决的主要是提供对键盘输入和游戏控制终端的中断响应和处理。

  在本文构建的平台下,需要编写相应的键盘和游戏控制终端的Linux驱动程序,以模块方式加载后,在Gnuboy中打开该设备。对应键盘处理,在Gnuboy中需要调整相应的键盘设置代码使之与系统一致。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2713097.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-17
下一篇 2022-08-17

发表评论

登录后才能评论

评论列表(0条)

保存