一种多核mips平台下并行系统调试方法

文档序号:6615784阅读:312来源:国知局
专利名称:一种多核mips平台下并行系统调试方法
技术领域
本发明涉及多核MIPS ( Microprocessor without interlocked piped stages,无 内部互锁流水级微处理器,或者,Million Instructions Per Second,每秒百万条指 令)平台下的并行技术,尤其涉及一种多核MIPS平台下并行系统的调试方法。
背景技术
目前多核并行技术越来越普遍,多核MIPS平台已可以提供成熟的解决方 案,很多大芯片公司及龙芯也提供MIPS的支持,已经成为现代的嵌入式系统主 流的平台。MIPS大量应用在PDA、机顶盒、信息终端和防火墙等设备上,可 以说使用多核MIPS嵌入式系统是未来嵌入式领域的发展方向。
由于多核MIPS平台上并行运行的每个CPU都会对内存、硬盘、IO设备等 资源进行操作,会竟争使用互斥资源,所以对于研发产品的调试工作是非常困 难的。
目前,普遍卩吏用的调式方法是跟踪打印调试方法和Jtag调试方法。 跟踪打印调试方法是目前在研发中最常用的方法,使用这个技术的方法很 难找到问题具体发生的位置,要多次进行猜测,做大量试验才可能会找到问题 所在,这样会在研发进度和成本上产生很大影响.在正式发布的产品上不能有 不相关的很多打印信息,不能进行后期的客户复杂环境中的问题跟踪。由于要 向终端输出大量的打印信息,将很大影响程序的运行速度,所以有一些对性能 要求很高的程序在产生问题的情况下不能使用跟踪打印进行调试. 在多核并发情况下有可能根本不能使用在进行嵌入式开发时,很多情况是打 印对终端直接操作(如对串口直接操作),由于是并发多核执行,会出现打印重 叠以至于看不到在打印什么,因为每个核都在向终端输出。
Jtag调试方法是使用 一个硬件与要调试的机器进行联接,当系统或软件出现问题时对CPU进行控制,然后可以读各个CPU的PC指针,访问堆栈的当前内 容。使用Jtag方法要额外使用硬件设备,会增加成本;每个Jtag只能对一个机 器进行操作,还要有一条外接线非常不方便于工作;对于CPU的PC指针跑飞的 情况不能进行跟踪定位;只能在研发价段使用;通过Jtag得到的数值要经过计 算和查找才会找到PC运行所在的函数;在正式发布的产品上不能使用,因此不 能进行后期的客户复杂环境中的问题跟踪。

发明内容
本发明提供一种多核MIPS平台下并行系统调试方法,用以解决现有调试 技术中存在的操作不便或根本无法适用的问题。 本发明方法包括
步骤A:当运行阶段产生关键问题时,保存出现问题的现场环境,并进行 复位;
步骤B:当确认是由于出现关键问题而复位的,进行关键问题处理,保存 复位现场的现场环境,并重新启动设备;
步骤C:设备重新启动,当确认在设备初始化过程产生新的调试信息,保 存初始化现场的现场环境。
进一步地,所述步骤A具体包括
步骤Al:当运行阶段产生问题时,判断所述问题是否为关键问题,如果 是,执行步骤A2,否则在程序中处理,并在处理后返回到正常运行状态;
步骤A2:判断是否需要保存出现问题的CPU的所有寄存器的状态,如果 需要,保存该CPU的所有寄存器的状态值,并执行步骤A3,否则直接执行步 骤A3;
步骤A3:按要求进行复位。
进一步地,所述步骤A1还包括通过软件看门狗和/或硬件看门狗记录死 锁信息,并将死锁信息作为关键问题,执行步骤A2。进一步地,所述步骤A3具体包括
调用不可屏蔽中断广播函数,当其它CPU收到不可屏蔽中断广播后,分 别将PC跳到0xBFC00000处进行复位。 进一步地,所述步骤B具体包括
步骤Bl:复位后,判断是否是由于出现问题而启动,如果是一次正常的
复位操作,则进入复位流程,进行整板复位;如果启动程序发现是由于出现关
键问题而复位的,保存复位现场的现场环境,并标记此次复位新产生的调试信 自
步骤B2:保存现场环境后,判断仲裁复位CPU,如果该CPU就是用来复 位的CPU,进行整板复位,并重新启动设备,否则永远等待仲裁CPU复位。 进一步地,所述步骤B1中,将复位现场的现场环境保存到非易失寄存器中。
进一步地,所述步骤C具体包括 步骤C1:设备重新启动后会重新初始化所有硬件设备; 步骤C2:检查本次启动有没有生成过新的调试信息,如果有,保存所述 调试信息,并正常启动,否则直接正常启动。
进一步地,所述步骤C2中,保存所述调试信息的过程具体包括 将调试信息生成文件进行保存;
当保存文件超过5个后,用后面新产生的文件替换最先生成的文件。 所述调试信息包括该CPU当时的运行位置、函数返回值和调用踪迹。 综上所述,本发明提供了一种多核MIPS平台下并行系统调试方法,可以
带来如下有益效果
可以精确显示出出现问题的位置,可以连续记录5次问题的出现,对于应
用开发人员透明,极大简化了多核MIPS平台下的调试复杂度;
查看时可以看到CPU寄存器的所有信息,返回函数的函数名,出现问题
时的CPU所在的函数位置,偏移量,调用踪迹这几项重要信息,这主要得益于本调试方法能够捕获所有系统异常,并在异常发生时及时完整地保存了现场 环境,并通过自动分析将现场环境翻译成可读性很强的文本信息,使调试方便,
缩短产品研发周期,节省开发成本;
不用增加额外硬件设备,无额外成本投入;
在产品运行过程中仍可跟踪可能出现的问题,对系统性能没有影响。


图1为本发明实施例所述方法的整体流程示意图; 图2为本发明实施例中,运行阶段产生问题的处理流程示意图; 图3为本发明实施例中,复位后处理的流程示意图; 图4为本发明实施例中,重新启动后处理的流程示意图; 图5为本发明实施例中,通过软件看门狗来监控cpu因死锁而发生异常的 流程示意图。
具体实施例方式
下面结合附图来具体描述本发明的优先实施例,其中,附图构成本申请一 部分,并与本发明的实施例 一起用于阐释本发明的原理。
下面结合附图1到附图5对本发明实施例所述方法进行详细说明。 一个系统在运行阶段,通常都会产生一些异常,对异常发生时的现场环境 (现场环境包括各个cpu的通用寄存器值、状态寄存器值以及堆栈的内容)进 行分析判断就可以知道系统出了什么问题。具体的说就是,当一个异常产生时, 通过该cpu的cause寄存器(cause寄存器是cpu的状态寄存器之一,它主要记 录了异常发生的原因,如内存寻址错误、系统重起、发生不可屏蔽中断等等) 内容可以得知是什么原因产生异常,如果产生异常的问题不是我们所关心的问 题,即不是关4建问题时,就对这个异常带来的问题进行合法化处理,然后返回到应用部分的代码,以保证程序可以继续执行;如果是关键问题,还要看这个 关键问题是否需要在这个阶段就将系统运行的现场环境保存下来。
如图l所示,图1为本发明实施例所述方法的整体流程示意图,本发明实 施例所述方法主要包括当运行阶段产生关键问题时,保存出现问题的现场环 境,并进行复位;当确认是由于出现关键问题而复位的,进行关键问题处理, 保存复位现场的现场环境,并重新启动设备;设备重新启动,当确认在设备初 始化过程产生新的调试信息,保存初始化现场的现场环境,下面分别进行阐述。
如图2所示,图2为运行阶段产生问题时进行处理的流程示意图,具体可 以包括以下步骤
步骤200:正常运行状态;
步骤201:运行阶段产生了问题;
步骤202:判断该问题是否为关键问题,如果是,执行步骤203,否则在 程序中处理即可,处理后返回到正常运行状态; 步骤203:进入问题处理流程;
步骤204:判断是否需要保存当前出现问题的cpu (即发生异常的cpu,因 为多核mips平台下经常发生一个cpu发生异常,但其它cpu仍然正常工作的 情况)的所有寄存器的状态,如果需要,执行步骤205,否则执行步骤206;
步骤205:保存当前CPU的所有寄存器的状态值,并执行步骤206;
步骤206:按多核MIPS平台的硬件操作要求调用NMI (不可屏蔽中断) 广播函数,其它CPU收到NMI广播后,分别将PC跳到OxBFCOOOOO处执行 复位程序。然后进入下一个处理阶段一一复位后处理阶段。
在本发明实施例所述方法中,是通过发NMI复位来看cause判断保存现场环 境标认,本领域普通技术人员应该知道,本发明实施例当然也可以通过其它的 复位方式,读内存中一个标志判断需要保存调试环境。通过任何复位的后保存 CPU的调试环境与本方法相同,此处就不再赘述。
复位后,启动程序首先检查的是是否由于出现问题而启动,如果是一次正常的复位操作,则进入复位流程,将整板复位(相当于硬件重新加电);如 果启动程序发现是由于出现关键问题而复位的,然后将现场环境保存到非易失 存储器中,并标记新产生的调试信息。保存现场环境后,要仲裁CPU(多核 MIPS平台下每一个cpu都会进入复位处理程序,各自记录自己的现场环境, 但只能由一个cpu进行整板复位操作,否则其它cpu还没有记录完现场环境就 可能被复位了。这里仲裁的原则是首选cpu0,若cpu0就是发生异常的cpu, 则选择cpu31,其它依次第推),如果是,将整板复位,这次复位将会引起正常 启动,因为是新出现的调试信息,所以进入重新启动后处理阶段。
如图3所示,图3为复位后处理阶段的处理流程示意图,可以包括以下步

步骤300:复位;
步骤301:判断是否为NMI,如果是,执行步骤302,否则,执行步骤307; 步骤302: CPU现场保存识别函数;
步骤303:判断该CPU是否已经保存过现场环境,如果是,执行步骤304, 否则执行步骤309;
步骤304:进入预备复位流程;
步骤305:仲裁复位的CPU,如果该cpu就是用来复位的CPU,执行步骤 307,否则执行步骤306;通常用第一个和最后一个CPU作为复位的CPU,仲 裁的时候需要从多个CPU中选择一个;
步骤306:空循环,永远等待复位CPU复位;
步骤307:进入复位流程,复位cpu检查到其它cpu都已经处于等待状态 后,就知道现场环境已经保存完了,此时就可以复位了; 步骤308:重新启动设备。
设备重新启动后会重新初始化所有硬件设备,然后4企查这次启动有没有生 成过新的现场环境,如果有的话就会保存起来。由于现场环境是一种二进制的 原始信息,翻译后变成文本的调试信息,调试信息可读性很强,直接用来判断问题原因,有时可以直接指出错误程序语句,所以保存的时候需要将把现场环
境自动翻译成当时CPU运行位置、函数返回值和调用踪迹等调试信息,将所 述调试信息生成文件进行保存(本发明实施例中,以5个文件为例),如果产 生第六个文件,第六个文件将替换掉最先生成的文件。保存完毕后,将其它需 要的程序启动起来。
如图4所示,图4为重新启动后处理的流程示意图,可以包括以下步骤
步骤400:重新启动设备;
步骤401:初始化设备;
步骤402:准备保存;
步骤403:是否保存新生成的调试信息,如果是执行步骤404,否则执行 步骤405;
步骤404:保存调试信息到flash盘。因为NVRAM (非易失存储器)空间 有限只能保存一份调试信息,将其转移到flash盘后,就可以再次保存,这样 最多可以保存5份,即可以连续记录5次系统异常;
步骤405:正常启动;
步骤406:提供可以查看寻找的关键问题。
在没有出产品阶段,即开发阶段,如果想知道此时某个CPU当前运行的 位置,可以手工将当时的运行环境保存起来。这个方式相当于Jtag调试中控制 CPU,通过运行一个自行研制的命令行(echo "nmi" > /proc/coredump )引起一 次保存操作,
当产品正式发布后,使用的环境要比实验室环境复杂,所以每一种产品都 不能保证是绝对稳定的,在产品运行过程中可以获得历次的调试信息对后期研 发和改进产品质量是非常重要的。用户可以通过WEBUI登入设备,选择下载健 康记录后便会把历次产生的调试信息下载到硬盘,然后通过E-mail发送到客服。 所述健康记录主要包括调试信息和系统运行状态信息,前者负责记录异常,后 者主要是软硬件版本号、cpu利用率、内存利用率、连接表等状态信息,用来判断没有异常的时候系统运行的状态是否良好。
这里,产品发布阶段获取健康记录的方法不只是用WEBUI, 也可以用其
它形式的终端。
本发明实施例还通过软件看门狗来监控cpu因死锁而发生的异常,具体如 图5所示,在系统启动时进行初始化,初始化时为某个CPU设定要求的超时时 间,如果超过超时时间那个CPU还没有反应过来进行喂狗,将会记录下这个 CPU的超时情况,然后进入步骤103所述的问题处理流程。当然,也可以使用 硬件看门狗达到同样的效果,或使用软件看门狗和硬看门狗结合达到同样效 果。
综上所述,本发明实施例提供了 一种多核MIPS平台下并行系统的调试方 法,通过本发明实施例所述方法可以带来如下有益效果
可以精确显示出出现问题的位置,可以连续记录5次问题的出现,对于应 用开发人员透明,极大简化了多核MIPS平台下的调试复杂度;
查看时可以看到CPU寄存器的所有信息,返回函数的函数名,出现问题时 的CPU所在的函数位置,偏移量,调用踪迹这几项重要信息,这主要得益于本 调试方法能够捕获所有系统异常,并在异常发生时及时完整地保存了现场环 境,并通过自动分析将现场环境翻译成可读性很强的文本信息,使调试方便, 缩短产品研发周期,节省开发成本;
不用增加额外硬件设备,无额外成本投入;
在产品运行过程中仍可跟踪可能出现的问题,对系统性能没有影响。
明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及 其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1、一种多核MIPS平台下并行系统调试方法,其特征在于,包括步骤A当运行阶段产生关键问题时,保存出现问题的现场环境,并进行复位;步骤B当确认是由于出现关键问题而复位的,进行关键问题处理,保存复位现场的现场环境,并重新启动设备;步骤C设备重新启动,当确认在设备初始化过程产生新的调试信息,保存初始化现场的现场环境。
2、 根据权利要求1所述的方法,其特征在于,所述步骤A具体包括 步骤A1:当运行阶段产生问题时,判断所述问题是否为关键问题,如果是,执行步骤A2,否则在程序中处理,并在处理后返回到正常运行状态;步骤A2:判断是否需要保存出现问题的CPU的所有寄存器的状态,如果 需要,保存该CPU的所有寄存器的状态值,并执行步骤A3,否则直接执行步 骤A3;步骤A3:按要求进行复位。
3、 根据权利要求2所述的方法,其特征在于,所述步骤A1还包括通 过软件看门狗和/或硬件看门狗记录死锁信息,并将死锁信息作为关键问题,执行步骤A2。
4、 根据权利要求2所述的方法,其特征在于,所述步骤A3具体包括 调用不可屏蔽中断广播函数,当其它CPU收到不可屏蔽中断广播后,分别将PC跳到0xBFC00000处进行复位。
5、 根据权利要求1所述的方法,其特征在于,所述步骤B具体包括 步骤Bl:复位后,判断是否是由于出现问题而启动,如果是一次正常的复位操作,则进入复位流程,进行整板复位;如果启动程序发现是由于出现关键问题而复位的,保存复位现场的现场环境,并标记此次复位新产生的调试信 自 步骤B2:保存现场环境后,判断仲裁复位CPU,如果该CPU就是用来复 位的CPU,进行整板复位,并重新启动设备,否则永远等待仲裁CPU复位。
6、 根据权利要求5所述的方法,其特征在于,所述步骤B1中,将复位 现场的现场环境保存到非易失性存储器中。
7、 根据权利要求1所述的方法,其特征在于,所述步骤C具体包括 步骤C1:设备重新启动后会重新初始化所有硬件设备;步骤C2:检查本次启动有没有生成过新的调试信息,如果有,保存所述 调试信息,并正常启动,否则直接正常启动。
8、 根据权利要求7所述的方法,其特征在于,所述步骤C2中,保存所 述调试信息的过程具体包括将调试信息生成一个文件进行保存至flash盘;当保存文件超过5个后,用后面新产生的文件替换最先生成的文件。
9、 根据权利要求8所述的方法,其特征在于,所述调试信息包括该CPU 当时的运行位置、函数返回值和调用踪迹。
全文摘要
本发明公开了一种多核MIPS平台下并行系统调试方法,用以解决现有调试技术中存在的操作不便或根本无法适用的问题。本发明方法包括当运行阶段产生关键问题时,保存出现问题的现场环境,并进行复位;当确认是由于出现关键问题而复位的,进行关键问题处理,保存复位现场的现场环境,并重新启动设备;设备重新启动,当确认在设备初始化过程产生新的调试信息,保存初始化现场的现场环境。本发明所述对于应用开发人员透明,极大简化了多核MIPS平台下的调试复杂度,并且使调试方便,缩短产品研发周期,节省开发成本。
文档编号G06F11/36GK101470662SQ20071030476
公开日2009年7月1日 申请日期2007年12月29日 优先权日2007年12月29日
发明者彤 刘, 吴亚飚, 张宏君 申请人:北京天融信网络安全技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1