首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于Virtex-5的3D体感互动游戏设计(5)

基于Virtex-5的3D体感互动游戏设计(5)

下面的实现使用软件的方法来实现,在第二个实验里面,我已经构建了一个SOPC的硬件环境,在那里,我只是利用xilinx提供的板级开发包来开发程序,对于实现3D的游戏,我们必须在上面跑操作系统,否则设计就十分的困难,并且不容易实现。
嵌入式系统设计涉及了硬件和软件的开发以及两者的综合设计。对于硬件的设计包括创建硬件平台;添加IP Core以及用户定制外设;生成仿真文件并测试硬件系统:生成硬件系统的仿真文件,利用ModelSim等工具测试系统,对于我们用户自定义的外设,这我已经在前面实现过,就不在赘述。

下面来讲一讲软件系统的构建,搭建了硬件平台后,我们就可以在软件的空间里面遨游了,首先我们要将操作系统移植到我们的平台上面,我们选择了移植linux操作系统。
现在市场上出现各种各样的商用嵌入式操作系统系,这些操作系统大部分都是为专有系统开发的,从而逐步演化成了现在多种形式的商用嵌入式操作系统百家争鸣的局面。这些操作系统有:Vxworks,Psos,uC/OS,QNX,Linux 和 Windows CE等。下面分别介绍几个具有代表性的嵌入式操作系统。
(1) uC/OS uC/OS 是一个典型的实时操作系统。它的特点是公开源代码,代码结构清晰明了,注释详细,组织有条理,可移植性好,可裁剪,可固化。内核属于抢占式,最多可以管理 60 个任务。该系统短小精悍,是研究和学习实时操作系统的首选。缺点是缺乏便利的开发环境。
(2) Windows CE它是从整体上为有限资源的平台设计的多线程、完整优先权、多任务的操作系统。Windows CE采用模块化设计,并允许进行定制。操作系统的基本内核至少需要 200KB 的 ROM。从 SEGA 的 DreamCast 游戏机到现在大部分的高价掌上电脑很多都采用了 Windows CE作为操作系统。其缺点是价格过高,使得整个产品的成本急剧上升。
(3) VxWorks VxWorks 是实时嵌入式操作系统软件,为程序员提供了高效的实时任务调度,中断管理,实时的系统资源以及实时的任务间通信。应用程序员可以将尽可能多的精力放在应用程序本身,而不必再去关心系统资源的管理。
Linux 系统则因为其良好的可裁减、可配置等特点在嵌入式领域应用广泛。 Linux操作系统提供了许多系统级的应用,例如网络协议的实现、进程调度、内存管理等,同时Linux 是一个成熟的开源操作系统,有丰富的应用资源,利用这些资源和强大的系统功能,用户可以快速地开发基于嵌入式环境复杂系统。
加载Linux操作系统需要利用EDK软件提供的板级升级包(BSP)配置内核。BSP 包含了所选定处理器架构的属性文件以及相关硬件的驱动源文件: GPIO驱动程序和 串口驱动程序等等。 ,对与linux在FPGA上的移植不清楚的可以看着一本书《FPGA上的嵌入式系统开发实例》,下面我来讲一下应用程序的开发,在linux下面我们需要设置系统相应的参数,这些参数的值依赖于之前的硬件平台设置。要设置Linux系统中需要支持的硬件设备(主要包括串口,DDR,CF卡控制器,中断,灯,DVI),要设置DDR内存容量设置大小,选好根文件系统类型,需要注意的是这里选择的类型只代表系统工作时根文件的默认类型,具体使用的类型可以在Linux内核编译过程中修改,在后续的过程中设置CF卡的分区情况。相应的参数设置完成后,就可以生成与具体硬件相匹配的板级支持包(BSP)了。

在linux加载之后,我们就要在上面跑应用程序了,在编写应用程序的时候,我选择一个跨平台的图形用户界面的应用程序框架Qt。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能,Qt是完全面向对象的,很容易扩展,并且允许真正地组件编程,我感觉Qt不论是在本质上,还是界面,以及功能都与MFC与很大的相同之处,MFC只支持windows下的编程。Qt不但拥有了完善的C++图形库,而且集成了数据库、OpenGL库等,其内核库也加入了进程间通信、多线程等模块,极大的丰富了Qt开发大规模复杂跨平台应用程序的能力。
在Qt下面编程与在MFC下面写程序没有本质上的区别,你需要了解它的那些库。做3D显示的话你需要用到OPENGL的库,来实现3D的效果。OpenGL 是行业领域中最为广泛接纳的 2D/3D 图形 API, 其自诞生至今已催生了各种计算机平台及设备上的数千优秀应用程序。OpenGL 是独立于视窗操作系统或其它操作系统的,亦是网络透明的。OpenGL提供了预定义的对象和用于交互的事件处理模块,创建和编辑3D场景的高级应用程序单元,有打印对象和用其它图形格式交换数据的能力。OpenGL是个与硬件无关的软件接口,具有很好的移植性,可以获得非常广泛的应用。
如果你精通Qt编程和OPENGL的编程的话,你就可以写出像CS一样好玩的游戏了。

在FPGA上构建SOPC,并加入操作系统后,可以很好的做到系统的统一调度和各个功能的并行处理,发挥了操作系统和FPGA各自的优势。但是,FPGA下操作系统运行的时钟频率不高,中断响应间隔较长,系统上电启动时间较长。

附件大小v5.jpg105.68 KBliucheng.jpg21.85 KBcs.jpg99.39 KBgame.JPG26.73 KB
记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表