一种针对嵌入式系统的程序调试方法及嵌入式系统技术方案

技术编号:7759010 阅读:198 留言:0更新日期:2012-09-14 00:50
本发明专利技术提供了一种针对嵌入式系统的程序调试方法及嵌入式系统,属于程序调试领域。该方法包括:嵌入式系统的CPU通过其通讯口接收来自调试主机的高层调试指令,并将其转换为底层调试指令;测试接入端口控制器将底层调试指令对应的数据预先存储到嵌入式实时在线电路仿真器的寄存器中;嵌入式实时在线电路仿真器将所述寄存器中预先存储的数据与所述CPU在程序实时运行时的数据进行比对,当两者一致时,则使程序进入调试模式;之后CPU将程序实时运行产生的数据经协议转换后通过其通讯口传输给调试主机。本发明专利技术由CPU通过其通讯口传输高层调试指令并将其转换成底层调试指令,以及在进入调试模式后,由其通讯口输出数据,降低了调试成本。

【技术实现步骤摘要】

本专利技术涉及程序调试
,尤其涉及一种针对嵌入式系统的程序调试方法及嵌入式系统
技术介绍
程序调试的主要工作是跟踪变量的赋值过程,以及查看内存堆栈的内容,查看这些内容的目的在于观察变量的赋值过程与赋值情况,从而达到调试的目的。目前,程序调试除了有软件调试方式外,还有硬件调试。所谓硬件调试是指在计算上调试软件的配合下实现的一种交叉调试过程。硬件调试的过程主要是计算机软件把编译好的程序通过串行口、并行口或者USB 口传输到仿真器中,仿真器仿真全部的目标板资源如所有的目标板接口且真实的引脚输出。仿真器可以接入实际的电路中,然后像目标板一样执行。同时,仿真器也会返回目标板内部内存与时序等情况给计算机的辅助软件,这样,通过利用调试软件设置单步、全速、运行到光标的常规调试指令就可以利用辅助软件在计算机上观测到程序真实的执行情况。现有技术中,常用的针对嵌入式系统的硬件调试方式包括采用在线仿真器(ICE,In-Circuit Emulator)方式以及采用在线调试器(IO), In-Circuit Debug)方式。由于嵌入式系统应用的一个显著特点是与现实世界中的硬件直接相关,存在各种异变和事先未知的变化,从而给微处理器的指令执行带来各种不确定因素,这种不确定性在目前情况下只有通过在线仿真器I⑶才有可能发现。但是,由于在线仿真器ICE的发展远远落后于CPU的发展,其运行速度也难以跟上CPU的主频,使得其在模拟CPU的同时向外输送调试信息变得较为困难。另外,一种CPU就需要与之对应的专用在线仿真器ICE,这样,也就导致开发成本较高。针对这些问题,业界开发出在线仿真器I⑶在线调试方式,在这种调试方式中,通过在芯片中内嵌一在线仿真器ICE,同时利用在开发板上引出的调试端口,通过一具有核心硬件的在线调试器ICE的接口盒即在线仿真器ICD将来自主机的高层调试指令转换成该调试端口可以发送或接收的调试指令,从而完成调试过程。目前,已有ARM公司、MOTO公司开发出相应的在线调试器ICD调试方案。下面以ARM公司开发ARM9基于JTAG端口的I⑶程序调试方案对通用的在线调试器I⑶方案进行说明。联合测试行动小组(JTAG, Joint Test Action Group)是一种国际标准测试协议(IEEE 1149.1兼容),通常所说的JTAG端口大致分两类,一类用于测试芯片的电气特性,检测芯片是否有问题;另一类用于程序的调试(Debug) JTAG端口最初是用来对芯片进行测试的,但后来发现也可以用JTAG端口对程序进行调试。现在多数的高级器件都支持JTAG协议,如与JTAG端口兼容的器件可以是微处理器(MPU,micro-processingunit)、微控制器(MCU, micro-controlling unit)、可编程逻辑器件(PLD, programmablelogic device)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、数字信号处 理器(DSP,Digital signal processor)、特殊应用集成电路(ASIC,Application SpecificIntegrated Circuit)或其它符合IEEE1149. I规范的芯片。标准的JTAG端口是4线调试模式选择(TMS,Test Mode Selection)信号、调试时钟输入(TCK,Test Clock Input)信号、调试数据串行输入(TDI,Test Data Input)信号、调试数据串行输出(TDO,Test DataOutput)信号,只要通过调试时钟输入信号TCK和调试模式选择信号TMS的设置即可实现调试数据串行输入信号TDI和调试数据串行输出信号TDO的控制。调试时钟输入信号TCK用于输入调试时钟,调试时钟输入信号TCK上升沿时将数据通过调试数据串行输入信号TDI输入JTAG端口 ;调试时钟输入信号TCK下降沿数据通过调试数据串行输出信号TDO从JTAG端口输出;调试时钟输入信号TCK上升沿时调试模式选择信号TMS用来设置JTAG端口处于某种特定的调试模式,也就是选择对应的扫描链使扫描链对应的芯片与外界IO隔离开来,避免外界IO干扰,以对该扫描链对应的芯片进行数据输入输出,而扫描链在非调试状态下,对于芯片来说是透明的,并不影响芯片的正常工作。图I为ARM9的I⑶硬件调试的硬件连接示意图。 PC主机101作为调试主机(调试主机也可以是工控机、工作站),发出高层调试指令,如设置断点、设置观察点、访问内存等。在线调试器ICD 102作为协议转换器,将调试主机发出的高层调试指令转换为底层的调试指令,这些指令再通过JTAG端口 103就可以直接利用嵌入式ICE-RT 107与目标CPU106对话。在线调试器I⑶102实际上在PC主机101和JTAG端口 103之间架起一座桥梁,用于实现PC端高层调试指令与JTAG协议的转换,将PC端的并行数据转换为可通过JTAG端口传输的串行数据,例如将PC端的一次鼠标点击转换成JTAG端口传输的数据,并最终依据转换后的数据通过嵌入式ICE-RT107实现对CPU106的控制。嵌入式实时在线电路仿真器(ICE-RT,In-Circuit Emulator-Realtime) 107 可以实现实时寻址、断点、单步以及对CPU 106的控制,使用边界扫描链和JTAG端口 103与PC主机101交互信息,嵌入式ICE-RT107包括断点和观察点寄存器和比较器,断点和观察点寄存器分别用来存储断点和观察点的地址,而比较器则是将存储的断点和观察点地址与CPU106运行程序实时的数据地址进行比对,确定是否进入调试模式。嵌入式ICE-RT 107使运行的代码能够停下来以便调试,当遇到断点或观察点时,处理器停下来并进入调试状态。一旦进入调试状态,就可使用第一扫描链105强制指令进入指令流水线,检查处理器的寄存器。对所有寄存器的数据进行存储,将它们的值送到数据总线,在数据总线上再启用第一扫描链105、在线调试器I⑶102转换后输送给PC主机101。在调试装置中可以通过特定的arm/thumb指令来读写CPU的内部寄存器和修改内存的内容。测试接入端口 (TAP, Test Access Port)控制器104,通过JTAG端口 103的底层调试指令来控制和操作扫描链。在ARM中,第一扫描链105和第二扫描链108最常用,第一扫描链105设置在CPU 106的周围,通过第一扫描链105访问通用的寄存器和系统存储空间,第二扫描链108设置在嵌入式ICE-RT107的周围,通过第二扫描链108来访问嵌入式ICE-RT107内部的寄存器。利用图I所示的硬件连接进行I⑶调试流程如图2所示,包括如下步骤步骤201 PC主机101产生高层调试指令(如设置断点)。步骤202 I⑶102将该高层调试指令转换成JTAG端口 103的调试模式选择信号TMS、调试时钟输入信号TCK、调试数据串行输入信号TDI、调试数据串行输出信号TDO并发送给TAP控制器104,这些信号组成可被ARM识别的底层调试指令。步骤203 TAP控制器104根据调试模式选择信号TMS启用第二扫描链10本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:王泰运林淑琴方嘉崧
申请(专利权)人:凌阳科技股份有限公司北京北阳电子技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1