基于嵌入式操作系统的仿真调试系统及方法

文档序号:6444387阅读:679来源:国知局
专利名称:基于嵌入式操作系统的仿真调试系统及方法
技术领域
本发明涉及一种仿真调试系统及方法,特别是涉及一种基于嵌入式操作系统的仿真调试系统及方法。
背景技术
仿真器是用于嵌入式设备的常用设备,用于嵌入式程序的调试,其主要目的是使嵌入式程序执行过程可控,以便了解程序的运行状态,常见的调试手段包括:断点、单步查看资源等等。图1是现有技术中常见的一个仿真器的基本结构图,其中,虚框所示部分即为仿真调试设备,它能将上位机的调试指令转化成满足IEEE1149.1的信号并下发至待调试的开发板(即图中之目标板)上,它主要包括调试处理单元和TAP (测试访问端口)控制器这两部分。对于上述仿真器,针对实际需求,其调试处理单元可以有不同的实现。如果是针对比较简单而且相对固定的调试需求,该调试处理单元可以设计的比较简单,仅需要做一些信号上的转换,可以使用固定的硬件逻辑实现,这样的方案具有成本低、速度快的优点,但缺点是灵活性差;针对于复杂调试需求,调试处理单元可以使用通用或专用处理器作为调试处理器,以保证能对复杂的调试需求做出及时的响应。针对采用通用处理器作为调试处理单元的方案,通常会使用嵌入式操作系统,而将调试控制程序作为系统上的一个进程。图2为现有技术中使用通用处理器的仿真调试系统的系统结构图。其中,调试进程响应调试主机发过来的调试要求(基于RDP,Remote DebugProtocol,远程调试协议),并调用TAP驱动进行调试操作,TAP驱动以操作系统驱动程序的形式提供仿真器使用JTAG对开发板访问的接口,而嵌入式系统完成系统级别调度,为调试进程提供一个通用的运行环境。基于上述仿真调试方案的仿真器灵活度高,可以支持比较复杂的调试要求,但稳定性相对较差,并且调试主机与调试进程之间的通信是单向的,不便于调试主机对仿真器状态的监控,不便于扩展新特性。综上所述,可知先前技术之仿真调试系统存在稳定性差且不易于扩展的问题,因此实有必要提出改进的技术手段,来解决此一问题

发明内容
为克服上述现有技术存在的不足,本发明的主要目的在于提供一种基于嵌入式系统的仿真调试系统及方法,其不仅可以改进仿真器的稳定性,而且便于仿真器功能的扩展。为达上述及其它目的,本发明提供一种基于嵌入式系统的仿真调试系统,应用于一仿真器,至少包括:代理进程模块,用于接收调试主机发送的控制命令,并控制调试进程模块的运行;
调试进程模块,在该代理进程模块的控制下响应该调试主机发送过来的调试要求,并调用TAP驱动模块进行调试操作;TAP驱动模块,以操作系统驱动程序的形式提供仿真器对开发板访问的接口 ;以及嵌入式系统,用于完成系统级别调度。进一步地,该代理进程模块与该调试进程模块使用管道进行通信,同时共享一缓冲区,用于保存扫描链上的处理器状态。进一步地,该代理进程模块还用于对该调试进程模块进行异常检测与干预。进一步地,该异常包括该调试进程模块异常退出或者处在不正确的调试状态。进一步地,若该代理进程模块检测到该调试进程模块异常退出,则重启该调试进程模块;若该代理进程模块检测到该调试进程模块处于不正确的调试状态,此时若尚未建立调试连接,则直接重启该调试进程模块,若已经建立调试连接则等待本次调试完成后,再重启该调试进程模块。为达上述及其他目的,本发明提供一种基于嵌入式系统的仿真调试方法,应用于一仿真器,其包括如下步骤:该仿真器启动时,启动代理进程,由代理进程启动调试进程,调试进程启动后,通过所提供的接口扫描开发板上的信息并报告给该代理进程,由代理进程登记该信息与调试状态,并上报给调试主机;该调试主机发起调试请求,向该代理进程发送建立连接的控制命令;该代理进程接到建立连接的控制命令后,分配空闲端口返回给该调试主机,并通知该调试进程,然后记录;该调试进程使用分配到的端口建立一个线程等待该调试主机发起连接;该调试主机使用该端口发起调试请求;该调试进程响应连接,建立调试连接;调试结束后,该调试主机发送关闭连接命令给该代理进程;该代理进程得到响应后,通知该调试进程关闭连接,并于完成后通知该调试主机;以及该调试主机关闭连接,该代理进程更新状态。进一步地,于该代理进程接到控制命令并通知该调试进程后,还包括如下步骤:代理进程持续检测调试进程是否有异常退出或处于不正常的调试状态;若检测到该调试进程异常退出,则重启该调试进程;若检测到该调试进程处于不正常的调试状态,若此时尚未建立调试连接,则直接重启该调试进程,若已建立连接则等待本次调试完成后,重启该调试进程。进一步地,该调试进程的异常退出包括该调试进程超时未响应该代理进程与该调试进程被异常关闭。进一步地,若该代理进程检测到该调试进程连接被异常关闭,则执行如下步骤以重启该调试进程:保存调试现场和调试状态;关闭原有调试连接,并清除原有连接记录;
重新建立调试连接;以及恢复调试现场,调整调试连接状态。进一步地,该调试进程处于不正常的调试状态包括该调试进程与该代理进程通信异常。与现有技术相比,本发明一种基于嵌入式系统的仿真调试系统及方法通过利用代理进程模块控制调试进程模块的运行,避免调试主机直接控制调试进程模块,不仅提高了仿真器的稳定性,而且便于仿真器功能的扩展。通过本发明,调试主机可以在异常情况下软复位仿真器,降低了等候时间;同时,调试主机可以随时保存调试现场,以免一旦发生异常导致丢失现场


图1是现有技术中常见的一个仿真器的基本结构图;图2为现有技术中使用通用处理器的仿真调试系统的系统结构图;图3为本发明一种基于嵌入式系统的仿真调试系统的系统结构图;图4为本发明较佳实施例中代理进程模块和调试进程模块交互的示意图;图5为本发明较佳实施例中连接状态切换图;图6为本发明较佳实施例中调试状态切换图;图7为本发明基于嵌入式系统的仿真调试方法的步骤流程图。
具体实施例方式以下通过特定的具体实例并结合

本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。图3为本发明一种基于嵌入式系统的仿真调试系统的系统结构图。如图3所示,本发明一种基于嵌入式系统的仿真调试系统,应用于一仿真器,至少包括:代理进程模块301、调试进程模块302、TAP驱动模块303以及嵌入式系统304代理进程模块301用于接收调试主机发送的控制命令,并根据该控制命令控制调试进程模块302的运行;调试进程模块302在代理进程模块301的控制下响应调试主机发送过来的调试要求,并调用TAP驱动模块303进行调试操作,其中,代理进程模块301与调试进程模块302使用管道进行通信,同时共享一片缓冲区,用于保存扫描链上的处理器状态;TAP驱动模块303以操作系统驱动程序的形式提供仿真器使用JTAG对开发板访问的接口 ;嵌入式系统304用于完成系统级别调度,为调试进程提供一个通用的环境。具体来说,当应用本发明的仿真器启动时,代理进程模块301首先启动,然后由代理进程模块301启动调试进程模块302 ;调试进程模块302启动后,通过JTAG接口扫描开发板上的信息并报给代理进程模块301,代理进程模块301登记该信息和调试状态,并上报给调试主机;当开始调试时,由调试主机发起调试请求,调试主机向代理进程模块301发送控制命令(如建立连接),代理进程模块301在接到控制命令后,分配空闲端口返回给调试主机,并通知调试进程模块302以及记录;调试进程模块302则使用分配到的端口建立一线程等待调试主机发起连接;调试主机使用该端口发起调试请求;调试进程模块302响应连接以建立调试连接;调试结束后,调试主机发送关闭连接的控制命令给代理进程模块301,由代理进程模块301通知调试进程模块302关闭连接,并于调试主机关闭连接后更新状态。较佳的,本发明之代理进程模块301还用于对调试进程模块302进行异常检测和干预。这里的异常包括,调试进程异常退出或者处在不正确的调试状态下。针对异常,代理进程模块301处理的原则如下:一旦检测调试进程异常退出,则重启调试进程模块,其又分为以下两种情况:(I)如果调试进程超时未响应代理进程的,则立即重启调试进程模块302 ;(2)若发现调试进程连接被异常关闭,则执行如下流程进行重启调试进程模块:保存调试现场和调试状态;关闭原有调试连接,并清除原有连接记录;重新建立调试连接;恢复调试现场,调整调试连接状态针对调试进程处在不正确的调试状态,如调试进程模块302和代理进程模块301通信异常,此时如果尚未建立调试连接,则直接重启调试进程模块302,如果已经建立调试连接则等待本次调试完成后,再重启调试进程模块302。在本发明之较佳实施例中,本发明之硬件可使用一款以ARM926作为主控的SOC芯片作为调试处理器,并移植 uClinux (嵌入式系统)作为软件运行环境,调试进程模块302作为一个应用程序运行在uClinux之上,同时使用一个代理进程与之交互,在调试过程的测试现场(比如响应断点后)是由调试进程模块来保存在仿真器端的。以下将通过本发明之较佳实施例来进一步说明本发明之各模块之间的交互过程。由前可知,调试主机与代理进程模块301的交互都是由调试主机发起的,调试主机将相应的控制命令字发送给代理进程模块301,代理进程模块301完成相应操作后,按照相应格式回给调试主机。在本发明较佳实施例中,具体的控制命令字可如表I所示:
命令字格式含义
CHECKCHECK[INTYAL]开始检查调试进程状态
INTVAL是间隔时间
STOPCHECK STOPCHECK 停止检查调试进程状态SCAN_SCAN_检查扫描连的状态,在调试过
权利要求
1.一种基于嵌入式系统的仿真调试系统,应用于一仿真器,至少包括: 代理进程模块,用于接收调试主机发送的控制命令,并控制调试进程模块的运行; 调试进程模块,在该代理进程模块的控制下响应该调试主机发送过来的调试要求,并调用TAP驱动模块进行调试操作; TAP驱动模块,以操作系统驱动程序的形式提供仿真器对开发板访问的接口 ;以及 嵌入式系统,用于完成系统级别调度。
2.如权利要求1所述的基于嵌入式系统的仿真调试系统,其特征在于:该代理进程模块与该调试进程模块使用管道进行通信,同时共享一缓冲区,用于保存扫描链上的处理器状态。
3.如权利要求1所述的基于嵌入式系统的仿真调试系统,其特征在于:该代理进程模块还用于对该调试进程模块进行异常检测与干预。
4.如权利要求3所述的基于嵌入式系统的仿真调试系统,其特征在于:该异常包括该调试进程模块异常退出或者处在不正确的调试状态。
5.如权利要求4所述的基于嵌入式系统的仿真调试系统,其特征在于:若该代理进程模块检测到该调试进程模块异常退出,则重启该调试进程模块;若该代理进程模块检测到该调试进程模块处于不正确的调试状态,此时若尚未建立调试连接,则直接重启该调试进程模块,若已经建立调试连接则等待本次调试完成后,再重启该调试进程模块。
6.一种基于嵌入式系统的仿真调试方法,应用于一仿真器,其包括如下步骤: 该仿真器启动时,启动代理进程,由代理进程启动调试进程,调试进程启动后,通过所提供的接口扫描开发板上的信息并报告给该代理进程,由代理进程登记该信息与调试状态,并上报给调试主机; 该调试主机发起调试请求,向该代理进程发送建立连接的控制命令; 该代理进程接到建立连接的控制命令后,分配空闲端口返回给该调试主机,并通知该调试进程,然后记录; 该调试进程使用分配到的端口建立一个线程等待该调试主机发起连接; 该调试主机使用该端口发起调试请求; 该调试进程响应连接,建立调试连接; 调试结束后,该调试主机发送关闭连接命令给该代理进程; 该代理进程得到响应后,通知该调试进程关闭连接,并于完成后通知该调试主机;以及 该调试主机关闭连接,该代理进程更新状态。
7.如权利要求6所述的基于嵌入式系统的仿真调试方法,其特征在于,于该代理进程接到控制命令并通知该调试进程后,还包括如下步骤: 代理进程持续检测调试进程是否有异常退出或处于不正常的调试状态; 若检测到该调试进程异常退出,则重启该调试进程;若检测到该调试进程处于不正常的调试状态,若此时尚未建立调试连接,则直接重启该调试进程,若已建立连接则等待本次调试完成后,重启该调试进程。
8.如权利要求7所述的基于嵌入式系统的仿真调试方法,其特征在于:该调试进程的异常退出包括该调试进程超时未响应该代理进程与该调试进程被异常关闭。
9.如权利要求8所述的基于嵌入式系统的仿真调试方法,其特征在于,若该代理进程检测到该调试进程连接被异常关闭,则执行如下步骤以重启该调试进程: 保存调试现场和调试状态; 关闭原有调试连接,并清除原有连接记录; 重新建立调试连接;以及 恢复调试现场,调整调试连接状态。
10.如权利要求6所述的基于嵌入式系统的仿真调试方法,其特征在于:该调试进程处于不正常的调试状态包括该 调试进程与该代理进程通信异常。
全文摘要
本发明公开一种基于嵌入式系统的仿真调试系统及方法,该系统包括代理进程模块,用于接收调试主机发送的控制命令,并控制调试进程模块的运行;调试进程模块,在该代理进程模块的控制下响应该调试主机发送过来的调试要求,并调用TAP驱动模块进行调试操作;TAP驱动模块,以操作系统驱动程序的形式提供仿真器对开发板访问的接口;以及嵌入式系统,用于完成系统级别调度,利用本发明,不仅可以改进仿真器的稳定性,而且便于仿真器功能的扩展。
文档编号G06F11/36GK103186458SQ20111045446
公开日2013年7月3日 申请日期2011年12月29日 优先权日2011年12月29日
发明者钮玥 申请人:联芯科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1