本站小编为你精心准备了软件仿真环境设计与实践参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。
内核与双进程
COACHV型是美国Zoran公司的一款数字信号处理器,拥有基于消息驱动的嵌入式系统的所有基本特质。其良好的体系结构平台完全满足实验教学需要。平台的核心是可编程DSPRTOS内核,内核以面向状态(有限状态机)模型方法工作。系统启动时开启主进程(COACH进程)和用户进程(HCE进程)。两个进程运行机制如图1所示。主进程维持硬件运转,执行机器指令,保持与用户进程的通信。其实现细节被封装在固件系统里。用户进程实现人机交互,提供可视化人机界面,将用户操作解析成功能指令,调用特定的API函数以获得内核操作权限。与其他嵌入式系统一样,COACH为上层开发者提供了一套功能完备的应用编程接口集。基于这分类细致,功能完备的API体系,用户进程得以驱动主机进程。
消息分类
对设计者可见的用户进程是一个基于消息驱动的进程,消息分为两类。一类是系统消息,由主机进程在执行功能时发出,或者外围设备中断/定时器触发,属于进程被动接收的消息。这类消息种类明确,协议固定。另一类是用户自定义消息,类似于MFC中自定义消息,DSP系统都预留了数量不等的用户自定义消息,该类消息的发送方和响应方都是用户进程。
事件驱动及消息传递机制如图1所示。COACH进程和HCE进程各自有一个消息队列,硬件执行时需要与两进程通信时,将产生对应的事件,相应的消息将存放在目标进程的消息队列里。HCE以调用API的方式间接访问COACH,而后者以事件消息来反馈前者。特别地,HCE可以给自身的消息队列发达消息,即为自同步。
PC仿真设计原理
为实现设计代码在仿真平台和真实平台之间的无缝移植,仿真平台必须模拟出真实平台对外的所有封装接口和必要的内部逻辑。数字系统基本可以在三个不同功能级上进行仿真:系统级仿真、寄存器传输级仿真、逻辑级仿真等,对整个嵌入式系统进行仿真属于典型的系统级仿真。系统级的仿真就是模拟整个系统在真实的仿真环境中运行时的行为。在系统级的仿真中,只要系统的所有组件的基本行为及其操作环境能被精确模拟,其他设计细节可以简化或者忽略。嵌入式软件的仿真开发环境中的仿真系统是为了验证软件对硬件控制的正确性,只需要仿真出硬件的外部逻辑。仿真过细反而会增加仿真的工作量和仿真构件的复杂度。在嵌入式软件仿真开发平台的实现中,关键技术主要包含:构件化技术和仿真技术。
1构件化技术
构件是具有标准的对外接口和明确功能的对象。基于构件技术的软件系统具有很高的重用性和良好的可扩展性。构件按照一定方式组合在一起,构成一个完整的系统,如图2所示。构件模型的提取和设计是实现构件的关键。以内核硬件为最小孵化平台建立原型系统,在满足软硬件运转的前提下,将其他设备及辅助工具纳入外设构件库管理,以标准化接口实现设备灵活的安装、卸载和替换。外部设备采取动态集成的方式,可根据不同的需求进行灵活增减,如图3所示。
2软件仿真技术
软件仿真技术是实现仿真平台的关键,包括基于事件驱动和基于电路两种仿真方式。本文采用基于事件驱动的软件仿真技术,完满仿真系统逻辑。如图4所示,PC仿真平台需要模拟COACH内核RTOS运转,硬件设备,功能API等方面的工作。笔者将此命名为“仿真COACH”;另外,笔者将应用编程代码归纳为“仿真HCE”。在真实平台上,两者都各自以进程形式存在内核RTOS中,而在仿真环境下,两者将以线程形式存生。唤起这两个线程的工作由PC进程(命名为“仿真RTOS”)完成,PC进程模拟了内核RTOS的工作,通过事件信号机制完成两线程的阻塞、激活和切换操作。此外,“仿真RTOS”还承担摸拟控制台输入和界面显示。
3可信性设计
在真实的开发环境下,设计代码都嵌入在用户进程代码里。因此对设计者来说,用高级语言(本平台使用C)编写的代码能否无差异地在真实平台和仿真平台之间相互移植,成为衡量软件仿真技术可信性的关键。为达到此设计要求,在仿真环境下编写的代码将无缝嵌入到“仿真HCE”中被执行。预编译手段保证了代码的跨平台特性和语法一致性。在构建仿真环境时,“仿真RTOS”与“仿真COACH”将视“仿真HCE”如黑箱,同样,“仿真HCE”只能使用前二者提供的与真实环境里命名规则完全一致的API接口函数和事件消息。正是因为“仿真HCE”做到了无视外部环境是否真实或模拟,在PC仿真平台上运行的“应用代码”可以原封不动地嵌入目标固件。无缝移植既能保证了开发工作的连续性和一致性,也证明PC仿真开发环境的可靠性和可信性。
4实用性设计
仿真开发环境的实用性主要体现在三个方面:首先,仿真环境使得开发工作更加高效、快捷和低耗。虚拟硬件设备可以无视硬件冗长的制作调试期,实现软、硬件系统的并行开发。可视化开发环境使得开发过程更加直观,结合PC上的辅助工具和VisualStudio里强大的调试功能,开发者能熟练而快捷地完成工作。更重要地,PC仿真技术更使得原本成本高昂的嵌入式系统开发摆脱了硬件平台的桎梏,为高校实验室开设灵活丰富的嵌入式系统实验提供了技术支持。其次,代码的无缝移植简化了平台转换的工序,更使得即便在实验课程中编写的代码也具备相当的实用价值。可自由定义的运行时调试器可以同时在双平台使用,实时监控运行状态。再者,基于构件的技术可以将嵌入式系统化繁为简,由简到繁。灵活构造的实验平台契合渐进式教学需要,实验人员借仿真平台透彻内核运行机制,分解组装系统功能,深化理解嵌入式系统。
实现与测试
在PC上编写软件时,要注意软件的可移植性,选用具有较高移植性的编程语言,尽量少调用操作系统函数,并注意屏蔽不同硬件平台带来的字节顺序、字节对齐、位段空间分配方向、代码优化(提高代码效率、减少代码的大小、避免内存泄漏)等问题。同理,在PC上编写嵌入式系统仿真开发平台时,也要屏蔽PC与嵌入式系统在上述硬件方面的差异,目的是使仿真平台上编写的代码尽可能无缝移植到目标平台上。
1程序框架
用VisualC++MFC设计一个人机界面对话框(仿真RTOS),类封装了按键和LCD显示的功能和变量。对话框发起两个线程,分别仿真COACH和HCE。代码如下:
2仿真RTOS主进程
以一个对话框控件类实现主进程的所有功能,包含控制台输入、界面输出和双线程入口函数。类定义如下(部分代码已省略):
3仿真COACH线程
具体工作包含仿真COACH系统的状态机运转、API及消息通信。在API被执行过程中,COACH依协议定义读写消息队列。消息队列由COACH自己维护,接收HCE线程和界面主进程发送过来的消息。因本线程代码量大,本处以伪代码简要表示流程。
4仿真HCE线程
以线程的方式运行于仿真平台中,组织全部用户代码。类似地,线程也维护一个消息队列,接收COACH线程发送的消息或者自身的同步消息。
5测试
仿真系统建立以后,它必须经过验证和确认过程,以确立其结果正确性的可信度,然后才能成为项目决策的论据。本文以COACH嵌入式DSP系统为原型,以典型应用案例为蓝本,成功设计实现了仿真开发环境演示版,运行效果如图5。测试结果证明,仿真开发环境完美仿真了嵌入式系统内外部运行机制和开发环境,极大提高了嵌入式开发的效率,丰富了嵌入式系统的开发手段。
结语
本文结合构件化技术和软件仿真技术,开创性地设计了一套既可用于渐进式实验教学又能达到无缝移植的商用嵌入式软件仿真开发环境。此环境高度仿真了COACH嵌入式DSP系统的运行机制和开发环境。实践证明,软件仿真技术达到了设计代码“无缝移植”的目的,而构件化技术使高校在嵌入式系统开发实验课程上可以采取灵活多变、由简入繁的渐进式教学。仿真开发环境虽完整仿真了嵌入式RTOS和软件体系,但是屏显和图形用户界面API的仿真尚需完善。另外,为使仿真开发环境能适应不同的硬件配置变化,构建通用仿真环境设计模式和硬件仿真工具箱是可行的思路。
作者:栗华山罗婕单位:华南理工大学南校区计算中心华南理工大学工程训练中心