0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Proteus嵌入式仿真平台中三种源码调试的方式分析

电子设计 来源:现代电子技术 作者:周灵彬,方曙光,卢 2020-03-29 08:19 次阅读

引 言

Proteus是功能最强的嵌入式系统(单片机ARM等)的设计与仿真平台。它主要由Proteus VSM(Virtual System Model)和PCB设计构成。ProteusVSM的最大特色就是能对嵌入式系统(硬、软件)及其外围电路进行协同、动态、交互式的仿真,并提供了仿真中进行源码调试的三种方式。

Proteus源码调试综合并突破了传统硬件仿真器和软件集成开发环境(Integrated Development Envi-ronment,IDE)源码调试功能。不仅能跟踪、分析嵌入式系统内的指令执行,观察、改变存储单元内容等的调试;且从工程角度实现了过程与结果,硬件与软件,全速与跟踪,中断与监视,静态与动态等的统一调试。丰富而灵活的调试手段,人与机的积极互动为高质高效实现设计目标创造了条件。从研发产品的实践上也证明了Proteus源码调试的高质、高效和可信度。这里从实践角度出发总结Proteus的三种源码调试方式,着重讲述了国内书刊尚未详细叙述的第三种方式,以发挥Pro-teus在产品研发和教学中的先进作用。在此采用的是Proteus 7.5。

1、 Proteus VSM源码调试

Proteus VSM源码调试是第一种源码调试方式。Proteus的源码调试由源代码控制系统支持。该系统主要功能是编辑、汇编源码,并保证代码及时更新。该系统有源码(源程序)编辑器、汇编器、调试数据提取器(Debug Data Extractor,DDX)和装载器等。DDX从汇编器产生的文件中提取调试信息装入装载器。源码调试步骤是:建源码文件、加载到系统,选择微控制器及汇编器,将源码经汇编器汇编产生的目标代码加载到微控制器中,启动仿真进行源码调试。

VSM提供了几种汇编器,主要有51系列的ASEM51,AVR系列的AVRASM,AVRASM32,PIC系列的MPASM,MPASM32和 HC11系列的ASM11等。汇编后可产生HEX或S19(用于MC68HC11),LST,SDI等调试文件。不同的微控制器选择相应的汇编器,系统自动更新DDX。设定微控制器属性编辑框中的程序文件即加载代码文件。启动仿真进行源码调试。暂停时,在源码调试窗口可看到调试格式文件.SDI提供的源码、代码及地址,还可打开各种寄存器窗口查看各存储单元内容。调试中可看到电路与程序代码协同、交互式仿真过程和结果。调试中可随时进行源码修改、设置各种断点等。图1所示为单片机读键并将值送数码管显示实验的源码调试状态。

基于Proteus嵌入式仿真平台中三种源码调试的方式分析

2、 Proteus借第三方编译器实现源码调试

这是第二种源码调试方式。若源码使用高级语言,就必须借用Proteus之外的第三方代码生成工具(汇编器/编译器)。若此时仍要用VSM的源码调试功能,就需要汇编器/编译器提供DDX或输出Proteus支持的调试格式文件(带调试信息的目标代码)。装载器从这些调试文件中提取调试信息以实现源码调试。

Proteus装载器支持的调试文件格式主要有:COFF(通用的,适应于PIC)、OMF(用于8051范围内)、UBROF(IAR编译器生成)、 ELF/DWARF(通用的,较COFF有较好的调试性能)、COD(由BYTE-CRAFT生成,广泛应用在PIC 中)等。

使用以上格式时,首先在编译器中设置输出格式,如在Keil中指定OMF格式的代码文件,如图2所示(例:6-164.OMF)。然后将生成的带调试信息的代码文件作为单片机窗口的“程序文件”。启动仿真,则可进行源码调试。

基于Proteus嵌入式仿真平台中三种源码调试的方式分析

3 、Proteus与第三方IDE联合仿真实现源码调试

这是第三种源码调试方式。Proteus联合第三方IDE,充分发挥Proteus的微控制器仿真功能和第三方IDE丰富的代码调试功能,创造最佳的应用系统开发环境。多数专业汇编软件和编译器都有自己的集成开发环境IDE,如IAR的嵌入式工作台,Keils μVision,Mi-crochips MPLAB,Atreels AVR studio等。Proteus作为IDE的插入式仿真器,由IDE的调试器控制调试的执行。这种源码调试方法有两种方法,如表1所示。

基于Proteus嵌入式仿真平台中三种源码调试的方式分析

3.1 万法一

Proteus通过TCP/IP协议与IDE通信。Proteus充当虚拟在线仿真器(In Circuit EmulatorICE)。例如KEIL与Proteus联调。先要将Proteus提供的驱动器VDMAGDL EXE装在KEIL的安装路径下。在同台计算机中调出KEIL与Proteus,进行仿真与联调。如图3所示,左边为KEIL窗口,可利用断点、变量窗口等监视程序的执行,进行源码调试。右边为Proteus窗口,在Proteus窗口可同步监视电路的运行状态与过程,也查看Proteus提供的CPU寄存器、内RAM等各种存储器窗口。也可将IDE调试器、Proteus分别安装在不同计算机中,利用互联网进行两者的联合调试。

基于Proteus嵌入式仿真平台中三种源码调试的方式分析

3.2 方法二

Proteus集成在IDE(例Proton,MPLAB,Atmel AVR studio)中,作为IDE中的一个仿真与调试工具。现以Proteus与AVR Studio联合仿真中的源码调试为例较详细地叙述该调试方法。

(1)在Proteus的ISIS中设计电路并保存(命名为LSD.DSN);

(2)在AVR Studio中联合调试。

打开新建工程,在弹出的对话框中选择工程类型为设置工程名,源文件自动与工程名相同。操作菜单Debug→Select Platform and De-vice,在弹出的对话框中设置调试平台为Proteus VSMViewer、器件为Atmegar16,如图4所示。点击Finish接着弹出源程序编辑窗口。写完程序、保存并点击汇编,生成LSD.HEX。在Proteus VSM视窗中点击打开按钮(若视窗未打开,操作菜单View→Toolbars→Proteus VSM),打开已有的LSD.DSN电路文件,对Atmegar16设置程序文件为LSD.HEX。点击AVR的按钮启动调试,接下来按AVR中的调试方法进行。图5右侧为AVR开发环境中的I/O视窗及CPU信息框,可查看与当前设计相关的PORTD口的内容。在Proteus VSM视窗中右击还可打开各种存储器窗口和观察窗口。

基于Proteus嵌入式仿真平台中三种源码调试的方式分析

Proteus除了支持一般的软件断点外,还有独特的条件断点和硬件实时断点功能。对源码调试提供了更灵活的手段。当硬件条件发生时暂停仿真,与单步调试工具结合极为方便有效。尤其在电路中引入异步触发,当需要跟踪分析其对电路的影响时更有用。

(1)条件断点。如图5中Proteus的观察窗口中添加PORTD,并设置它的断点条件为“On Change”。仿真时当PORTD输出数据发生变化就暂停仿真。

(2)电压探针断点。对PORTD0引脚加一电压探针,命名为PD0(见图6),设置为数0值触发。每当PORTD0输出低电平时,触发断点使仿真暂停,如图7所示。

基于Proteus嵌入式仿真平台中三种源码调试的方式分析

(3)硬件断点:实时断点发生器。实时断点发生器有实时电压、电流断点触发器RTVBREAK和RTI-BREAK:当触发器引脚上的电压或流经的电流超过设定的值将触发断点,为上升沿触发;实时数字断点触发器RTDBREAK:当输入到引脚的二进制数等于设定值时触发断点;实时电压、电流监视器 RTVMON和RTI-MON:当输入电压或当流经的电流不在设定范围内,可触发断点、警告或是错误。可将RTVMON和RTI-MON用于创建仿真模型,当模型中的电压或电流超过设定的工作极限时警告终端用户。

如图8对POETD0引脚添加实时数字断点触发器并设置触发值为0,达到同上述(2)中电压探针一样的断点调试效果。

基于Proteus嵌入式仿真平台中三种源码调试的方式分析

4 、结语

嵌入式系统的Proteus仿真中源码调试的方式有三种,源码的编写、汇编、动画式的电路仿真与源码调试都在Proteus中完成:Proteus用第三方的汇编/编译器对源码汇编/编译生成的调试格式文件进行源码调试;Proteus与IDE联合进行源码调试。Proteus独特的条件断点、硬件断点功能为仿真及源码调试更方便、更灵活、更高效。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43973

    浏览量

    620857
  • 嵌入式
    +关注

    关注

    4982

    文章

    18285

    浏览量

    288479
  • 仿真
    +关注

    关注

    50

    文章

    3872

    浏览量

    132163
收藏 人收藏

    评论

    相关推荐

    嵌入式开发中三种操作系统的分析与比较

    三种常用的嵌入式操作系统——Palm OS、Windows CE、Linux;在此基础上、分析、比较这三种嵌入式操作系统,给出它们之间的异同
    发表于 03-11 10:03

    嵌入式开发中三种操作系统的分析与比较

    三种常用的嵌入式操作系统——Palm OS、Windows CE、Linux;在此基础上、分析、比较这三种嵌入式操作系统,给出它们之间的异同
    发表于 10-15 14:42

    嵌入式开发中三种操作系统的分析与比较

    三种常用的嵌入式操作系统——Palm OS、Windows CE、Linux;在此基础上、分析、比较这三种嵌入式操作系统,给出它们之间的异同
    发表于 10-16 09:45

    嵌入式开发中三种操作系统的分析与比较

    三种常用的嵌入式操作系统——Palm OS、Windows CE、Linux;在此基础上、分析、比较这三种嵌入式操作系统,给出它们之间的异同
    发表于 10-18 10:01

    嵌入式开发中三种操作系统的分析与比较

    三种常用的嵌入式操作系统——Palm OS、Windows CE、Linux;在此基础上、分析、比较这三种嵌入式操作系统,给出它们之间的异同
    发表于 10-26 09:35

    嵌入式系统的Proteus仿真源码调试方式介绍

    的最大特色就是能对嵌入式系统(硬、软件)及其外围电路进行协同、动态、交互仿真,并提供了仿真中进行源码
    发表于 07-29 06:15

    嵌入式开发中三种操作系统的分析与比较

    三种常用的嵌入式操作系统——Palm OS、Windows CE、Linux;在此基础上、分析、比较这三种嵌入式操作系统,给出它们之间的异同
    发表于 06-23 11:01

    LwIP协议栈开发嵌入式网络的三种方法有何关系

    LwIP协议栈开发嵌入式网络的三种方法分析 轻量级的TCP/IP协议栈LwIP,提供了三种应用程序设计方法,且很容易被移植到多任务的操作系统中。本文结合μC/OS-II这一实时操作系统
    发表于 08-05 07:55

    STM32嵌入式实现超声波测距三种方式

    STM32嵌入式实现超声波测距三种方式实现1.while循环检测;2.外部中断检测;3.定时器输入捕获检测。欢迎下载研究,也可以给我留言发给大家。(1条消息) Ultrasonic_Ranging.7z-电信文档类资源-CSDN
    发表于 08-16 07:27

    什么是全数字仿真平台

    。什么是全数字仿真平台全数字仿真平台SkyEye是能够满足模拟或仿真外部硬件行为进行软件运行和测试需求的工具。该工具运用国际流行的仿真、测试脚本语言来编写外部硬件逻辑行为所产生外部激励
    发表于 12-17 07:48

    嵌入式开发中三种操作系统对比分析哪个好

    三种常用的嵌入式操作系统——Palm OS、Windows CE、Linux;在此基础上、分析、比较这三种嵌入式操作系统,给出它们之间的异同
    发表于 12-20 06:24

    什么是全数字仿真平台

    。什么是全数字仿真平台全数字仿真平台SkyEye是能够满足模拟或仿真外部硬件行为进行软件运行和测试需求的工具。该工具运用国际流行的仿真、测试脚本语言来编写外部硬件逻辑行为所产生外部激励
    发表于 12-21 06:42

    三种常用的嵌入式操作系统是什么

    三种常用的嵌入式操作系统——Palm OS、Windows CE、Linux;在此基础上、分析、比较这三种嵌入式操作系统,给出它们之间的异同
    发表于 12-22 07:36

    基于Proteus嵌入式应用系统仿真中的源码调试

    基于Proteus嵌入式应用系统仿真中的源码调试 0 引 言    P
    发表于 12-22 17:49 2028次阅读
    基于<b class='flag-5'>Proteus</b>的<b class='flag-5'>嵌入式</b>应用系统<b class='flag-5'>仿真</b>中的<b class='flag-5'>源码</b><b class='flag-5'>调试</b>

    复杂嵌入式系统仿真平台

    复杂嵌入式系统仿真平台(嵌入式开发板有哪些功能模块)-该文档为复杂嵌入式系统仿真平台总结文档,是一份很不错的参考资料,具有较高参考价值,感兴
    发表于 07-30 13:59 5次下载
    复杂<b class='flag-5'>嵌入式</b>系统<b class='flag-5'>仿真平台</b>