历史上的今天
返回首页

历史上的今天

今天是:2025年02月09日(星期日)

正在发生

2018年02月09日 | 在线仿真器在嵌入式系统设计中的应用

2018-02-09 来源:eefocus

    嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是是由单个程序实现整个控制逻辑。

    所谓ARM仿真器,即用于调试基于ARM内核芯片的一个硬件模块。ARM内核包括ARM7,ARM9,ARM11,Cortex-A,Cortex-M,Cortex-R等系列,而基于这些内核的芯片则更多了。那么这些仿真器选择有一个原则,用于低端嵌入式微控制器的话,用ULINK2,ULINKPpro即可,可以调试Cortex-M,Cortex-R芯片。用于高端的应用处理器ARM9,ARM11,Cortex-A的话,就需要用到DSTREAM仿真器了。

    一、嵌入式产品的开发周期

    典型的嵌入式微控制器开发项目的第一个阶段是用C编译器从源程序生成目标代码,生成的目标代码将包括物理地址和一些调试信息。目前代码可以用软件模拟器、目标Monitor或在线仿真器来执行和调试。软件模拟器是在PC机或工作站平台上,以其CPU(如x86)及其系统资源来模拟目标CPU(如P51XA),并执行用户的目标代码;而目标Monitor则是将生成的目标代码下载到用户目标板的程序存储器中,并在下载的代码中增加一个Monitor任务软件,用来监视和控制用户目标代码的执行,用户通过目标板上的串行口或其它调试端口,利用桌面计算机来调试程序。

    程序的调试是通过设置断点、使程序在指定的指令位置停止运行来实现的。在程序中止的时候,检查存储器和寄存器的内容,作为发现程序错误的线索。

    程序经过调试、找到所有的错误后,修改源代码,重新编译,以一种标准格式生成目标代码文件,比如Intel HEX.这个目标代码将被存储在最终产品的非挥发存储器,比如EPROM或FLASH中。

    二、为什么需要仿真器

    软件模拟器和目标 Monitor提供了一种经济的调试手段,对于很多设计来说已经足够。但是也有很多场合,需要利用仿真器来找到程序错误。 无论在哪一种场合,仿真器都能够减少调试时间、简化系统集成、增加可靠性、优化测试步骤,从而使其物有所值。更常见的情况是工程师在项目的不同阶段同时使用软件模拟器和仿真器,特别是在大的开发项目中。

    软件模拟器和软件调试器在断点之外只提供了很少的几种功能,比如显示端口内容和代码覆盖。没有检测事件和条件、然后作出反应的手段,也没有办法记录MCU的总线周期、然后判断程序的执行究竟发生了什么情况。如果你的MCU有片上EPROM或FLASH存储器,并且运行在单片模式,则只有仿真器才能够对系统进行调试,而不严重占用和消耗MCU资源。

    在线仿真器可以很容易地做到这些事情,并且还能够提供很多其它功能。仿真器是软件和硬件之间的桥梁。在项目进行的某些阶段,你必须让程序在实际的硬件上面运行。仿真器可以很容易地帮助你了解如何在调试阶段充分利用仿真器。

    三、仿真器究竟是什么?

    仿真器可以替代你的目标系统中的MCU,仿真其运行。 仿真器运行起来和实际的目标处理器一样,但是增加了其它功能,使你能够通过桌面计算机或其它调试界面来观察MCU中的程序和数据,并控制MCU的运行。仿真器是调试嵌入式软件的一个经济、有效的手段。Nohau的EMUL51XA-PC仿真器系列用来调试Philips P51XA系列MCU,而EMUL51-PC系列仿真器则支持众多厂家的8051系列单片机。

ARM仿真器

     

    四、内部和外部模式

    内部模式是指程序和数据位于MCU芯片内部,以FLASH或EPROM的形式存在,地址和数据总线对于用户并不可见,由此节省下来的芯片引脚作为I/O口提供给用户。内部模式也称单片模式,所有的程序执行都发生在内部ROM中。为了有效地仿真这种芯片,要求仿真器使用bondout或增强型Hooks芯片。

    外部模式是当程序存储器,可能还有部分数据存储器,位于MCU外部的情况,需要有地址和数据总线来访问这部分存储器。外部模式也称扩展模式,用户芯片、bondout芯片和增强型hooks芯片都能够产生这种工作模式,这种情况下芯片的地址和数据总线引脚不能作为通用I/O口使用。Nohau的仿真器使用这三种芯片来实现有效的程序调试。

    五、Bondout、增强型Hooks芯片和标准产品芯片

    这些名词是指仿真器所使用的、用来替代目标MCU的三种仿真处理器。只有Bondout和增强型Hooks芯片能够实现单片调试,标准产品芯片不能。和标准产品芯片相比,bondout芯片有一些增加的引脚,连接到芯片内部硅片的电路节点上,所有又称“超脚芯片”.P51XA系列单片机仿真器都使用bondout芯片,EMUL51XA-PC就是很好的例子。

    增强型Hooks芯片利用各种芯片引脚上面没有的机器周期来提供地址和数据总线,一些80C51系列仿真器就是使用增强型Hooks芯片。有趣的是,这些增强型Hooks芯片中的一些也是标准的产品芯片。使用增强型Hooks芯片作为仿真CPU需要一些额外的特殊功能电路来从复用的芯片引脚中,分解出地址和数据总线以及一些必须的控制信号,用户的目标板没有这些电路,所有仍然是单片工作模式。采用bondout芯片和增强型Hooks芯片能够实现极为精确的仿真,从功能一直到芯片的功耗。

    六、使硬件工作起来

    软件模拟器是很好的,可是它不能考虑进所有的变化因素。软件模拟器设计师必须考虑到每一件事情,特别是那些只有在硬件搭起来以后才会出现的因素,比如电容、定时、电感、芯片版本等,随着 CPU速度的增加,这些变得越来越重要。

    目标Monitor相比之下要好得多,因为它是在实际硬件中运行的。但是为了使Monitor程序能够运行起来,目标系统必须是一个完整的、能够工作的系统。采用仿真器后就不是这样,仿真器在目标系统硬件不完整、或者是一点硬件都没有的情况下都可以运行。然而目标Monitor可以安装在最终产品的程序中,随时都可以激活,用来进行调试,所以这对于测试和维护来说还是有一定优势的。

    七、仿真器的优点

    仿真器具有软件模拟器和目标Monitor的所有功能,加上下面一些优点:

    1.不使用目标系统或CPU资源

    目标Monitor内核一般需要10K的ROM和10~20字节的RAM以及一个空闲的通信端口。一个好的仿真器不会使用上面任何一项。仿真器对于目标系统应当是不可见的,也就是所谓的“全透明仿真”.

    2.硬件断点

    软件断点的实现是通过在用户目标代码中插入2字节的TRAP(陷井)指令,将正常的程序流偏转到调试器上。如果程序计数器碰巧落到第二个字节上,程序就会崩溃。 Nohau仿真器的硬件断点功能使用比较器,将系统总线状态与预先设定的锁存器内容相比较,用以监测对于指定地址的访问,而不修改任何程序存储器内容。区域断点需要使用硬件断点来实现,但是软件断点仍然是很方便、有用的,所以Nohau的仿真器两种断点功能都提供。

    当用户的目标程序存放在ROM中时,软件断点是不能用的,因为无法插入TRAP指令。对于ROM程序存储器系统,只能使用硬件断点。

    3.跟踪功能(TRACE)

    跟踪功能以时间为线索记录所有的处理器机器周期、以及可选的外部信号电平。跟踪功能能够记录所有的取指操作,并且在采用流水线并行处理模式的单片机中,如P51XA,区分在流水线中被取消的指令以及那些成功地执行的指令。跟踪的开始通过条件触发来实现,这样可以实现过滤功能,也就是只有感兴趣的指令周期被记录下来,其余的被舍弃。软件模拟器和目标Monitor没有跟踪存储器,也不能实现Trace功能。

    4.条件触发

    条件触发是非常强大、便于使用的功能,它使你可以在某些事件发生时,进行某个预先设定的行动,触发条件可以包括地址、数据、时钟周期和外部信号,这些条件可以触发一个断点、启动/停止跟踪记录、记录一个时间标记、以及很多其它由仿真器功能所决定的行动。这种强大的工具只有在仿真器中才能实现。Nohau仿真器的条件触发功能和跟踪功能有机地结合在一起,具有三级时间触发,最高级触发具有计数功能。

    5.实时显示存储器和I/O口内容

    使用仿真器后,可以实时地观察存储器和I/O口的内容,而不仅仅是软件模拟。你可以将自己特别喜欢的外设芯片连接到Nohau仿真器特性板的下部,然后在调试界面中访问它。如果你了解外设的所有细节,那么可以非常精确地进行系统模拟。

    在很多情况下我们可能已经发现,好象只有在接入实际的硬件系统后某些问题才开始出现。采用仿真器能够使你从一开始就进入这一阶段,从而及早地发现问题、更快地完成调试任务。

    因为仿真器内部自带的RAM可以和目标系统中的ROM互相替代,所以你在ROM目标系统中也可以简易地进行程序代码和数据的调试和修改。

    同样,当目标系统中还没有装上存储器时,你可以使用仿真器中的仿真存储器对系统进行调试。仿真存储器的大小、分辨率和映象地址可以由用户选择。

    6.硬件性能分析

    软件模拟器和目标Monitor只能模拟系统运行,然后进行性能分析,但是它们已经做得不错了;而仿真器则更进一步,在实际硬件上面进行性能分析,这样就增加了精度。而且,使用实际的硬件能够发现在软件模拟中无法发现的错误。虚假中断以及其它一些故障可能会出乎意料地消耗CPU资源,导致严重的性能问题,而且很难发现。利用仿真器的性能分析,这些问题很容易暴露。

    7.将仿真器和目标系统相连接

    仿真器和目标系统的连接很容易。大多数问题都被仿真器公司及其代理解决了。连接需要两个步骤:

    首先,需要选择适当的适配器连接方法,最好选用焊接和插座方式。P51XA系列单片机仿真器支持PLCC插座和表面安装两种目标连接方式。夹接适配器价格较高而且不可靠,不推荐用户使用。

    然后,仿真器上面的软件和跳线器必须正确配置,和目标板以及软件初始化程序相匹配。这很简单,好的技术支持应当包括这一点。Nohau的仿真器一般使用缺省设置就可以工作。

    对于P51XA系列单片机,只要在用户的目标板上焊接一个芯片插座(PLCC或表面安装形式)、插入EMUL51XA-PC的特性板适配器接头,在PC机或笔记本电脑上运行调试软件就可以了。然后你就可以用随仿真提供的TIme.c测试程序对目标系统进行测试了!

    小编总结

    本文提供了一些关于在线仿真器的信息,以及给作为嵌入式系统设计师的你带来的好处。根据你的需要,你将在产品开发中对开发工具作出更恰当的选择。相信你通过自己的努力可以得到更多的知识。


推荐阅读

史海拾趣

Empro Technology Corp公司的发展小趣事

Empro Technology Corp成立于2005年,由一群热衷于电子技术的工程师创立。在初创阶段,公司专注于研发高效能、低功耗的半导体芯片。经过数年的不懈努力,公司成功推出了一款具有颠覆性技术的芯片产品,其性能远超当时市场上的同类产品,迅速获得了市场的认可。

Dover Corporation公司的发展小趣事

Dover Corporation自上市以来,一直保持着持续盈利和向投资者发放红利的记录。公司凭借其强大的业务能力和稳健的财务状况,赢得了投资者的信任和支持。这一成绩的取得不仅彰显了Dover在业务运营方面的实力,也为其未来的发展奠定了坚实的基础。

请注意,以上故事框架仅为概述性质,具体细节和数据可能需要根据Dover Corporation的实际情况进行调整和补充。

AC Photonics Inc公司的发展小趣事

AC Photonics Inc非常重视人才培养和团队建设。公司建立了完善的人才培养和激励机制,吸引了一大批优秀的研发人才和管理人才加入。同时,公司还注重团队建设,通过定期举办团队活动、开展员工培训等方式,增强团队凝聚力和向心力。这些措施为公司的持续创新和发展提供了有力的人才保障。

Deltron / DEM Manufacturing公司的发展小趣事

DEM Manufacturing一直注重技术创新和产品升级。在合并后的几年里,公司投入大量资源用于研发,推出了一系列具有创新性的电子产品。这些产品不仅满足了市场的多样化需求,还为公司赢得了良好的口碑和广泛的客户基础。

Anytek Technology Corporation Ltd公司的发展小趣事

随着技术实力的不断提升和市场份额的稳步增长,Anytek在2009年获得了“中国国际高新技术企业”的认定。这一荣誉不仅是对公司技术实力和创新能力的肯定,也为公司的未来发展提供了更广阔的空间和机遇。同年,Anytek还成功进入了俄罗斯政府采购项目,进一步扩大了公司的国际影响力。

Allen Avionics Inc公司的发展小趣事

随着技术实力的不断提升和市场份额的稳步增长,Anytek在2009年获得了“中国国际高新技术企业”的认定。这一荣誉不仅是对公司技术实力和创新能力的肯定,也为公司的未来发展提供了更广阔的空间和机遇。同年,Anytek还成功进入了俄罗斯政府采购项目,进一步扩大了公司的国际影响力。

问答坊 | AI 解惑

用DSP定时器实现方波输出的方法

在DSP的电机控制中,经常要用到方波输出,就是常说的PWM,PTO。一般的控制方式采用的是使用2812的EV单元去产生对称波形。但是在现代的一些控制领域,特别是位置控制领域,经常要实现开环控制脉冲个数,并产生多种频率的脉冲输出。EV是很难实现的。 ...…

查看全部问答>

LDO低压差线性稳压器

LDO  LDO是low dropout regulator,意为低压差线性稳压器,是相对于传统的线性稳压器来说的。传统的线性稳压器,如78xx系列的芯片都要求输入电压要比输出电压高出2v~3V以上,否则就不能正常工作。但是在一些情况下,这样的条件显然是太苛刻了,如 ...…

查看全部问答>

2410 I2C 在什么情况下产生中断?

最近一段时间,接触了好几个具有 I2C 接口的从设备器件; 也对 I2C 的 WinCE 流驱动也有所了解。 开始用【查询】方式实现了一个 I2C 流驱动; 现在准备用【中断】方式实现 I2C 流驱动; 但是看了好几遍【2410数据手册】,都没有看明白; 2410 ...…

查看全部问答>

关于USB接口的serial驱动

serial驱动是将USB接口模拟成串口?那是怎样与外部设备进行通信的?难道就和普通的串口一样?…

查看全部问答>

[问题]flash擦除时间很怪啊

下载bootloader要擦除flash(spansion s29gl032a) 汇编写的 flash容量4M 扇区:8x8k,63x64k bootloader只用了64k,故只擦除了前64k,结果时间很长,要60s左右 经过测试发现: 擦除大小 时间 8k        7s 16k&n ...…

查看全部问答>

PLC与变频器的组合应用

                                      &n ...…

查看全部问答>

力科发布业界最全面的MIPI测试解决方案

力科发布业界最全面的MIPI测试解决方案…

查看全部问答>

在线MSP430编辑编译无需本地电脑安装CCS或IAR之类开发环境

在线MSP430编辑编译无需本地电脑安装CCS或IAR之类开发环境看了一下,支持代码彩色显示编写完了以后还可以在其网站服务器上进行编译,然后可以下载编译后的可烧写文件。使用google帐户登陆,无需注册。对于帐户安全,一般可以放心,使用OpenId方式来 ...…

查看全部问答>

这个红叉叉

各位大侠,请问电路图中的红叉叉是什么??代表什么意思??偶现在在自学电路哈哈!!!…

查看全部问答>

晒WEBENCH设计的过程+Arria系列10AT090电源驱动电路设计

需求:输入,14到22V         输出: # Name VLoad ILoad Description 1. LOAD #1 3.3 V 0.5 A VoutRipple=10% 2. LOAD #2 5 V 0.5 A VoutRipple=10% 3. VCC 0.9 V 41.304 A VoutRipple=10% 4. VCCA_PLL 1.8 V ...…

查看全部问答>