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

基于proteus的嵌入式应用系统仿真中的源码调试
0 引 言
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所示为单片机读键并将值送数码管显示实验的源码调试状态。
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)。然后将生成的带调试信息的代码文件作为单片机窗口的“程序文件”。启动仿真,则可进行源码调试。
3 proteus与第三方ide联合仿真实现源码调试
这是第三种源码调试方式。proteus联合第三方ide,充分发挥proteus的微控制器仿真功能和第三方ide丰富的代码调试功能,创造最佳的应用系统开发环境。多数专业汇编软件和编译器都有自己的集成开发环境ide,如iar的嵌入式工作台,keil's μvision,mi-crochip's mplab,atreel's avr studio等。proteus作为ide的插入式仿真器,由ide的调试器控制调试的执行。这种源码调试方法有两种方法,如表1所示。
3.1 万法一
proteus通过tcp/ip协议与ide通信。proteus充当虚拟在线仿真器(in circuit emulator,ice)。例如keil与proteus联调。先要将proteus提供的驱动器vdmagdl exe装在keil的安装路径下。在同台计算机中调出keil与proteus,进行仿真与联调。如图3所示,左边为keil窗口,可利用断点、变量窗口等监视程序的执行,进行源码调试。右边为proteus窗口,在proteus窗口可同步监视电路的运行状态与过程,也查看proteus提供的cpu寄存器、内ram等各种存储器窗口。也可将ide调试器、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除了支持一般的软件断点外,还有独特的条件断点和硬件实时断点功能。对源码调试提供了更灵活的手段。当硬件条件发生时暂停仿真,与单步调试工具结合极为方便有效。尤其在电路中引入异步触发,当需要跟踪分析其对电路的影响时更有用。
(1)条件断点。如图5中proteus的观察窗口中添加portd,并设置它的断点条件为“on change”。仿真时当portd输出数据发生变化就暂停仿真。
(2)电压探针断点。对portd0引脚加一电压探针,命名为pd0(见图6),设置为数0值触发。每当portd0输出低电平时,触发断点使仿真暂停,如图7所示。
(3)硬件断点:实时断点发生器。实时断点发生器有实时电压、电流断点触发器rtvbreak和rti-break:当触发器引脚上的电压或流经的电流超过设定的值将触发断点,为上升沿触发;实时数字断点触发器rtdbreak:当输入到引脚的二进制数等于设定值时触发断点;实时电压、电流监视器rtvmon和rti-mon:当输入电压或当流经的电流不在设定范围内,可触发断点、警告或是错误。可将rtvmon和rti-mon用于创建仿真模型,当模型中的电压或电流超过设定的工作极限时警告终端用户。
如图8对poetd0引脚添加实时数字断点触发器并设置触发值为0,达到同上述(2)中电压探针一样的断点调试效果。
4 结语
嵌入式系统的proteus仿真中源码调试的方式有三种,源码的编写、汇编、动画式的电路仿真与源码调试都在proteus中完成:proteus用第三方的汇编/编译器对源码汇编/编译生成的调试格式文件进行源码调试;proteus与ide联合进行源码调试。proteus独特的条件断点、硬件断点功能为仿真及源码调试更方便、更灵活、更高效。

什么时候会需要用到modbus转CAN网关
CAN总线入门知识科普
2019年网络技术发展趋势展望
实时时钟模块设计,可使用按钮设置RTC模块的日期和时间
新能源汽车动力电池模组的制造和装配过程
基于Proteus的嵌入式应用系统仿真中的源码调试
用于同步采样的ADC
安装HBM传感器时应注意哪些要点?
物联网时代智能网联助力福特销量再创新高
上海电信加强与 SaaS 生态伙伴的合作,解决多行业客户的数字化需求
开关GS波形为例来聊一下GS的波形
功能安全如何提高汽车安全性
碳化硅在新能源车中的主要应用
为什么今年有可能经常听到区块链
了解Linux下常用的系统分析工具
电能质量管理和分析软件工具DRANVIEW介绍
人工智能也会有偏差
值得收藏!汽车发动机全部系列汇总TOP52
环形光源的产生方式
筛网,您知道多少?