什么是仿真器?
仿真器(emulator)以某一系统复现另一系统的功能。与计算机模拟系统(Computer Simulation)的区别在于,仿真器致力于模仿系统的外在表现、行为,而不是模拟系统的抽象模型。请参阅仿真和模拟词条。
概述
仿真器是用以实现硬件仿真的硬件。仿真器可以实现替代单片机对程序的运行进行控制,例如单步,全速,查看资源断点等。尽管软件仿真具有无需搭建硬件电路就可以对程序进行验证的优点,但无法完全反映真实硬件的运行状况,因此还要通过硬件仿真来完成最终的设计。开发过程中硬件仿真是必需的。
仿真器原理
仿真器内部的P口等硬件资源和51系列单片机基本是完全兼容的。仿真主控程序被存储在仿真器芯片特殊的指定空间内,有一段特殊的地址段用来存储仿真主控程序,仿真主控程序就象一台电脑的操作系统一样控制仿真器的正确运转。仿真器和电脑上的上位机软件(即KEIL)是通过串口相连的,通过仿真器芯片的RXD和TXD负责接收电脑主机发来的控制数据,TXD负责给电脑主机发送反馈信息。控制指令由KEIL发出,由仿真器内部的仿真主控程序负责执行接收到的数据,并且进行正确的处理。进而驱动相应的硬件工作,这其中也包括把接收到的BIN或者其它格式的程序存放到仿真器芯片内部用来存储可执行程序的存储单元(这个过程和把程序烧写到51芯片里面是类似的,只是仿真器的擦写是以覆盖形式来做的),这样就实现了类似编程器反复烧写来试验的功能!不同的是通过仿真主控程序可以做到让这些目标程序做特定的运行,比如单步、指定断点、指定地址等,并且通过KEIL可实时观察到单片机内部各个存储单元的状态。仿真器和电脑主机联机后就象是两个精密的齿轮相互咬合的关系,一量强行中断这种联系(比如强行给仿真器手动复位或都拨支联机线等),电脑就会提示联机出现问题,这也体现了硬件仿真的特性,即"所见即所得"。这些都是编程器无法做到的。这些给调试、修改、以及生成最终程序创造了比较有力的保证,从而实现较高的效率。
使用仿真器开发的问题
仿真器的可靠性非常依赖于其设计者的水平。随着电子设备的复杂化,仿真器的用户越来越难以辨别开发所遇到的问题出于何处。而基于对仿真器的信赖,用户将首先怀疑问题出自自身的设计之中。如果用户在耗费大量精力后最终发现问题来自仿真器,那么该用户可能会对所有仿真器失去信任而放弃使用。
部分用户认为仿真器不可靠,在开发中很少或不使用仿真器。他们使用以下方式进行开发:
1. 根据自己的设计建立一个符合要求的硬件平台。如果该平台涉及的程序比较复杂。还要搭建一个人机交流的通道人机交流通道可能是一个简单的发光二极管、蜂鸣器,复杂的可能是串口通讯口LCD显示屏。
2. 写一个最简单的程序例,比如让发光二极管连续闪烁。程序编译后烧写到单片机芯片中,验证硬件平台是否工作正常。
3. 硬件平台正常工作后编写系统最低层的驱动程序,每次程序更改后都重新烧写单片机芯片验证。如果在程序验证中遇到问题,则在程序中加入一些调试手段,如通过串口发送一些信息到PC端的超级终端上,用于了解程序的运行情况。
4. 系统低层驱动程序完成后再编写用户框架程序。由于这部分已经不涉及到硬件,所以程序中的问题用户一般能够发现。
然而对于复杂的情形,这样的硬件平台实际上已经具备了仿真器的功能,并发挥了仿真器的作用。
仿真器产品的服务问题
用户使用仿真器来开发产品的过程中,可能会遇到仿真器、产品本身、用户系统的问题,并求助于仿真器生产厂商。如果仿真器的生产厂商只专注于仿真器的设计,而不熟悉单片机应用,则可能无法对用户提出的问题不能作出正确的判断。反之,既熟悉仿真器的使用,又有丰富单片机开发经验的仿真器厂商则有能力给与用户技术支持,并协助用户快速地找出问题。
- 上一条什么是焊台?
- 下一条中国将成为全球最大工业机器人市场