法律状态公告日
法律状态信息
法律状态
2013-03-27
授权
授权
2011-07-20
实质审查的生效 IPC(主分类):G06F11/36 申请日:20101216
实质审查的生效
2011-05-18
公开
公开
技术领域
本发明涉及一种嵌入式软件的在线实时调试方法。
背景技术
随着嵌入式系统的发展,嵌入式系统现在几乎应用于所有的电子和电器设备中,高端的嵌入式处理器得到了普遍的应用,片上系统、深度嵌入、分布式多处理器构架、软件复杂度的发展给传统的调试方法带来了极大的挑战。调试是嵌入式系统开发过程中必不可少的重要环节,它占整个开发时间的20%~30%。它的重要性是不言而喻的。
传统的调试方法是通过仿真器与嵌入式系统相连,主机上运行集成开发调试工具,调试工具具有编辑、编译、链接和调试环境,由于主机调试环境中保存了嵌入式系统运行的符号表信息,能够对系统的变量进行调试。这种调试方法具有明显的缺点:占用系统资源较多,有的系统必须依赖芯片JTAG口,仿真器和调试工具价格昂贵,不能够对正在运行的系统进行即插式调试,调试前需要重新启动系统,重新下载程序等繁琐步骤。对正常运行系统是不可能采用这种调试手段的。
随着装置多CPU系统的出现,对整体系统的统一调试需求更加急迫,并且系统正常运行起来后,能够对系统的变量进行实时跟踪,这些问题都需要采用更先进的调试手段来解决这些问题。
以往的嵌入式程序调试,只能根据编译器形成的符号表,符号表中只包括了系统在编译阶段静态分配的数据的地址,调试时能够根据这些变量名查询到分配全局变量的地址。而动态分配的变量是在程序初始化运行中分配的,这些变量在运行前地址是未知的,由于CPU运行的是2进制指令,在运行过程中也不知道内存地址和变量的对应关系,从而这些动态分配的内存缺乏有效的调试手段。
发明内容
本发明针对上述问题,克服现有技术上述缺点,提出一种基于命名变量的全景数据在线实时调试方法,实现调试代理、主机可视化编程调试软件的配合,实现了所有变量的在线实时调试功能,极大提高了调试效率,加快了应用程序的开发进度。
为了解决以上技术问题,本发明提供的基于命名变量的全景数据在线实时调试方法,其在一种由调试主机、板卡式设备构成的调试装置上实现,所述板卡式设备包括:运行有调试代理程序的主CPU板卡,以及与该主CPU通讯的多个从CPU板卡,所述调试主机上运行有调试主程序,调试方法包括如下步骤:
第一步:调试主机根据编译器获得各静态变量在从CPU板卡的内存地址,调试主机扫描从CPU板卡的应用源程序获得各结构体中所有动态变量相对于结构体的偏移地址;
第二步:调试代理程序将第一步中调试主机获取的各结构体中所有动态变量相对于结构体的偏移地址下载到本地;
第三步:各从CPU板卡的CPU向调试代理程序注册本地运行程序所需的所有结构体,并将这些结构体在内存中的首地址发送给调试代理程序;
第四步:调试代理程序根据各结构体首地址以及各结构体中所有动态变量相对于结构体的偏移地址,得到各结构体种所有动态变量的内存地址;
第五步:通过静态变量、动态变量所在从CPU板卡的内存地址进行静态变量、动态变量的实时查看和实时修改。
注册变量是动态分配变量的重要调试手段,先进的继电保护装置中保护功能都是可组态的,这意味这保护功能都是运行时刻确定,不是预先分配好的。这些保护对象都是动态对象,对于这些动态对象的在线实时调试是保护开发人员最关心的。本发明通过注册机制,使动态对象(结构体的实例)在进行初始化时,将对象的名称和对象的内存地址通过通信链路向调调试代理程序进行注册。调试代理程序结合本地存储的成员变量偏移表(各结构体中所有动态变量相对于结构体的偏移地址所构成的列表),就能够生成出该动态对象(结构体的实例)的所有成员(动态变量)的地址信息供主机调试系统在线调试。
进一步的,本发明第五步中,实时查看动态变量值的方法是:调试人员在调试主程序中选择需查看的动态变量名称,调试主程序向调试代理程序发送该需要查看的动态变量名称,调试代理程序查询获得该动态变量所在从CPU板卡中的内存地址,并根据所述从CPU板卡的该内存地址获得该动态变量的当前值,发送给调试主程序予以显示。
进一步的,本发明第五步中,实时修改动态变量值的方法是:调试人员在调试主程序中输入需修改动态变量的新的赋值,调试主程序将需修改的动态变量的名称及新的赋值发送给调试代理程序,调试代理程序根据该动态变量的名称查询该动态变量所在从CPU板卡的内存地址,并将新的赋值写入与该动态变量对应的从CPU板卡内存地址中。
更进一步的,本发明第五步中,实时查看静态变量值的方法是:调试人员在调试主程序中选择需查看的静态变量名称,调试主程序向调试代理程序发送该需要查看的静态变量名称及其所在从CPU板卡的内存地址,调试代理程序根据所述从CPU板卡的该内存地址获得该静态变量的当前值,并发送给调试主程序予以显示。
更进一步的,本发明第五步中,实时修改静态变量值的方法是:调试人员在调试主程序中输入需修改静态变量的新的赋值,调试主程序将需要修改静态变量所在从CPU板卡的内存地址及新的赋值发送给调试代理程序,调试代理程序将新的赋值写入与该静态变量对应的从CPU板卡内存地址中。
本发明的有益效果如下:本发明能够在不断电、不重启的情况下对装置进行在线实时的调试,跟踪系统的运行状态。本发明调试方法的应用,提高了保护应用开发人员的开发效率;提高了工程维护人员的工程维护效率。
附图说明
下面结合附图对本发明作进一步的说明。
图1为本发明框架示意图。
具体实施方式
下面参照附图并结合实施例对本发明作进一步详细描述。但是本发明不限于所给出的例子。
基于命名变量的全景数据在线实时调试方法,其在一种如图1所示的由调试主机、板卡式设备构成的调试装置上实现,所述板卡式设备包括:运行有调试代理程序的主CPU板卡,以及与该主CPU通讯的多个从CPU板卡,所述调试主机上运行有调试主程序,调试方法包括如下步骤:
第一步:调试主机根据编译器获得各静态变量在从CPU板卡的内存地址,调试主机扫描从CPU板卡的应用源程序获得各结构体中所有动态变量相对于结构体的偏移地址;;
第二步:调试代理程序将第一步中调试主机获取的各结构体中所有动态变量相对于结构体的偏移地址下载到本地;
第三步:各从CPU板卡的CPU向调试代理程序注册本地运行程序所需的所有结构体,并将这些结构体在内存中的首地址发送给调试代理程序;
第四步:调试代理程序根据各结构体首地址以及各结构体中所有动态变量相对于结构体的偏移地址,得到各结构体种所有动态变量的内存地址;
第五步:通过静态变量、动态变量所在从CPU板卡的内存地址进行静态变量、动态变量的实时查看和实时修改。
本实施例中,实时查看动态变量值的方法是:调试人员在调试主程序中选择需查看的动态变量名称,调试主程序向调试代理程序发送该需要查看的动态变量名称,调试代理程序查询获得该动态变量所在从CPU板卡中的内存地址,并根据所述从CPU板卡的该内存地址获得该动态变量的当前值,发送给调试主程序予以显示。
本实施例中,实时修改动态变量值的方法是:调试人员在调试主程序中输入需修改动态变量的新的赋值,调试主程序将需修改的动态变量的名称及新的赋值发送给调试代理程序,调试代理程序根据该动态变量的名称查询该动态变量所在从CPU板卡的内存地址,并将新的赋值写入与该动态变量对应的从CPU板卡内存地址中。
本实施例中,实时查看静态变量值的方法是:调试人员在调试主程序中选择需查看的静态变量名称,调试主程序向调试代理程序发送该需要查看的静态变量名称及其所在从CPU板卡的内存地址,调试代理程序根据所述从CPU板卡的该内存地址获得该静态变量的当前值,并发送给调试主程序予以显示。
本实施例中,实时修改静态变量值的方法是:调试人员在调试主程序中输入需修改静态变量的新的赋值,调试主程序将需要修改静态变量所在从CPU板卡的内存地址及新的赋值发送给调试代理程序,调试代理程序将新的赋值写入与该静态。
本发明实现了不断电、不重启的情况下对装置进行在线实时的调试,跟踪系统的运行状态。
除上述实施例外,本发明还可以有其他实施方式。凡采用等同替换或等效变换形成的技术方案,均落在本发明要求的保护范围。
机译: 基于查找表的实时全景图像生产系统和使用相同方法的实时全景图像生产方法
机译: 基于运动矢量的实时实时输入图像与运动图像之间基于运动矢量的全景图像的摄影方法
机译: 基于在线百科全书构建新命名实体和新命名实体的词典的装置及其方法