大家来说说单片机仿真中两种仿真工具Emulator和 Simulator的区别

tiankai001   2012-6-13 17:37 楼主

大家来说说单片机仿真中两种仿真工具的区别

 

Emulator常称为仿真器,一般指硬件仿真器

 

 Simulator常称为模拟器,一般指软件仿真器

 

那么这两者到底有那些具体区别呢,大家一起来聊聊吧

回复评论 (4)

Emulator与Simulator有个简单的原则差异:emulator(模拟器)主要是指cpu,而simulator(仿真器)则是模拟系统中的硬件行为;而且emulator只能看执行结果,无法进行程序的trace与出错,详细感觉有下面几点:
Emulator:完全模拟cpu的运作方式,根据PC(prigram counter)寄存器的值,从内存中去下一条指令,进行解码并执行。输入程序的格式是编译、连接完毕的二进制代码;如果用在产品开发,工程师可以不用把程序下载到真实机器,只要透过Emulator就可以知道程序执行的结果。因为Emulator和真实机器一样,接受的是程序的二进制文件,所以即使Emulator也是一个windows的程序,工程师依然无法对原始码进行除错。
在嵌入式系统开发上,Emulator对开发的帮助仅仅只限于尚未完成之前,可以先让系统执行看看。如果我们的cpu有现成的emulator,那么用用也无妨;如果必须自行开发,那么就真的大可不实不必!首先,要完整的模拟一颗cpu是一件相当困难事情,恐怕这件事情的复杂度比我们想想的高得多;再来就是emulator对开发的贡献相当有限,等emulator开发测试完毕,硬件板子早就完成了,此时emulator也就失去作用。
Simulator:模拟系统中的硬件行为,例如模拟飞行的PC game就是一种simulator,它只模拟驾驶舱中的操作按钮仪器,并没有迷你这些仪器中的cpu吧。应用在嵌入式系统的开发中,我们所谓的模拟器(simulator)模拟的是实际机器里驱动程序API,这些API必须与其他的陈谷连接成可执行才可以运作。
在嵌入式系统开发的领域中,emulator的应用的确是愈来愈少,一方面也是cpu越来越复杂,要用应用程序模拟cpu执行指令行为确实不容易,另一方面是被模拟cpu和实际cpu执行多多少少会有时间的误差和不相似性
但是有时候我会一般都成为模拟器,实际指的就是simulator,这也仅仅是一个翻译的问题
模拟器的其他功能(logging & profiling)
模拟器除了模拟硬件之外,模拟器基本就是一个可执行程序,是它还可以做一些实际机器做不到的东西,这对开发中除错或同级都有很大的帮助。例如:有些bug很难马上找出除错的程序所在,要trace也不知道从何处trace起,这种情况下show字是很常用的除错方法
所谓的logging就是把执行流程或计算结果先输出到文件中,然后慢慢分析文件中的信息,这样的文件成为log文件,可以让我们追踪程序执行的行为。
所谓的profiling就是在每一个函数的开头或者结尾收集我们想要的信息,然后将其输出;由于信息量通常较大,所以输出到屏幕上并不是很好的办法,做好将其输入到文件中在慢慢分析,这个文件要远远大于log文件的详细度
点赞  2012-6-13 17:37
请问,这里说的和 那种 单片机 的硬件仿真 是同一个话题么?
我是指,比如说 我们的MSP430或者STM8的那个直接通过USB口相连的 仿真器。
强者为尊,弱者,死无葬身之地
点赞  2012-6-14 00:45

回复 板凳 辛昕 的帖子

按照我的本意哦,是一个话题,说的是软仿真和硬仿真
点赞  2012-6-14 08:01

回复 4楼 tiankai001 的帖子

哦哦~~
最近在学习 如何 给单片机C程序做测试——就是想有没有出了我们平时玩的那种 直接在硬件系统上测试,看结果再调试。
而是类似于 CUnit这些,充分利用断言一类的工具。

你的帖子的内容,我当时看着有点晕呼呼,等再仔细看看,然后也想想自己的情况,再向你请教哈
强者为尊,弱者,死无葬身之地
点赞  2012-6-16 17:39
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复