CN114064152A - 基于动态加载的嵌入式多核调试系统及其调试方法 - Google Patents
基于动态加载的嵌入式多核调试系统及其调试方法 Download PDFInfo
- Publication number
- CN114064152A CN114064152A CN202111423569.5A CN202111423569A CN114064152A CN 114064152 A CN114064152 A CN 114064152A CN 202111423569 A CN202111423569 A CN 202111423569A CN 114064152 A CN114064152 A CN 114064152A
- Authority
- CN
- China
- Prior art keywords
- debugging
- core
- data
- agent
- task
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开基于动态加载的嵌入式多核调试系统及其调试方法,所述调试系统与多核处理器通信连接,所述调试系统包括宿主机组件与目标机组件,所述宿主机组件包括远程调试插件、目标机通信管理插件、调试器和动态加载插件合调试器;所述目标机组件包括通信代理、输入监听代理、输出监听代理、调试代理和加载器。本发明可在不打断系统内程序正常运行的情况下,查看和跟踪多核系统运行情况,并且有效地解决动态链接下因未定义符号所带来的调试信息交互次数过多导致调试性能降低问题,提高嵌入式调试效率,满足多核处理器中用户观察系统对象信息、检测系统事件及定位的调试需求,提升用户体验。
Description
技术领域:
本发明属于嵌入式操作系统技术领域,具体涉及基于动态加载的嵌入式多核调试系统及其调试方法。
背景技术:
嵌入式操作系统通常采用远程调试的方式,即调试器运行于宿主机的桌面操作系统之上,被调试程序运行于目标机的嵌入式操作系统之上,调试器通过目标机的调试代理控制和访问被调试程序。嵌入式系统开发工具中,最为常用的就是源代码调试,但常规调试手段在多任务操作系统下及面向多核处理器时,一方面代码级调试可能打乱原有的任务调度行为,导致调试结果与实际运行结果不一致;另一方面当程序出现死锁、内存泄露等问题时,源代码调试也不能及时定位问题。
随着多核处理器技术的发展以及动态链接技术的引入,为嵌入式开发调试带来了新的挑战。目前在多核处理器应用方面国内多核调试软件技术还不够成熟,产品化的多核调试软件较少,从国外购买现成的目标板和集成开发环境进行开发,成本较高。同时,由于嵌入式设备的资源有限,静态链接的方式往往导致磁盘浪费或内存空间不足,所以基于动态链接的编译方式是嵌入式领域的发展趋势。但由于动态链接的方法决定了动态模块中的函数和变量地址都是相对的,其真实地址在动态模块运行时才能产生,会出现多核处理器支持不够且多核处理器动态模块的调试困难的问题。由于调试过程中要求获悉调试目标文件中函数、变量的绝对地址,系统中所默认存放的相对地址是无法满足调试定位需求的。目前在嵌入式系统动态模块进行调试时,通常的方案是主机端在遇到未定义符号时,向目标机获取符号的绝对地址,目标机则将符号及符号地址返回给主机端,从而完成一次未定义符号的调试。对于多核调试系统而言产生多次通信交互导致调试性能降低,影响用户体验。
发明内容:
本发明提供基于动态加载的嵌入式多核调试系统及其调试方法,本发明可在不打断系统内程序正常运行的情况下,查看和跟踪多核系统运行情况,并且有效地解决动态链接下因未定义符号所带来的调试信息交互次数过多导致调试性能降低问题,提高嵌入式调试效率,满足多核处理器中用户观察系统对象信息、检测系统事件及定位的调试需求,提升用户体验。
本发明解决技术问题的技术方案如下:
一种基于动态加载的嵌入式多核调试系统,所述调试系统与多核处理器通信连接,所述多核处理器包括主核和若干个从核,所述主核与上层客户端系统进行通信连接,所述主核与从核、每个所述从核之间均通过消息队列方式进行通信连接,所述调试系统包括宿主机组件与目标机组件,所述宿主机组件基于Ecplise插件框架,其包括:
远程调试插件,用于满足各类远程调试功能需求;
目标机通信管理插件,用于为系统提供远程目标的通信管理及为用户提供物理链路的输入输出管理服务;
调试器,用于接收远程网络断点调试指令信息并向目标机的调试代理发送调试命令;
动态加载插件,用于支持待调试任务的界面部署及所述多核处理器加载反馈数据管理;
所述远程调试插件与所述目标机通信管理插件通信连接;
所述动态加载插件与所述调试器通信连接;
所述目标机组件包括主核代理任务部和从核代理任务部;
所述主核代理任务部包括分别部署于所述多核处理器主核上的
主核加载器,用于完成待调试任务模块的动态部署功能;
第一调试代理,用于完成调试命令的接入、服务函数的执行及调试结果的输出;
监听代理,所述监听代理包括输入监听代理和输出监听代理,所述输入监听代理用于完成输入命令的接收、解析以及多核调试信息的转发;所述输出监听代理,用于完成输出信息的格式设置及转发;
通信代理,所述通信代理与所述调试器通信链路;
所述主核加载器的两端分别与所述监听代理、任务模块通信连接;
所述第一调试代理的两端分别与所述监听代理、任务模块通信连接;
所述输入监听代理与所述通信代理单向通信连接,用于接收外部输入来的指令信息;所述输出监听代理与所述通信代理完成单向通信,用于将本端调试数据信息发送给通信代理模块,完成数据输出;
所述从核代理任务部包括分别部署于所述多核处理器从核上的
第二调试代理,用于完成调试命令的接入、服务函数的执行及调试结果的输出;
从核加载器,用于完成待调试任务模块的动态部署功能;
所述主核加载器和从核加载器均运行于嵌入式操作系统之上。
进一步地,所述远程调试插件包括调试指令封装模块、符号数据管理模块、调试数据解析模块及调试数据显示模块。
一种基于动态加载的嵌入式多核调试系统的调试方法,所述调试方法面向标准调试器的远程调试系统,具体调试过程如下:
S1)图形界面中选择待调试任务镜像文件,完成选择后,通过动态加载插件实现任务的部署;
S2)完成任务部署后,保存全局符号信息,构建符号表;
S3)在图形界面中选择输入待调试目标,完成选择后发送给调试管理插件;
S4)调试管理控件在符号表中查询分析重定位本次调试中所需的变量、任务符号信息,并发送至图形界面插件显示;
S5)根据显示符号信息,设置静态调试参数,完成设置后将参数数据发送给调试管理插件;
S6)调试管理插件将调试指令封装,并通过目标机通信管理插件将调试指令发送给目标机;
S7)主核的通信代理完成与宿主机软件的通信后,主核启动输入输出监听代理,输入监听接收到调试指令后执行命令解析,将指令转发给目标处理核;
S8)目标处理核的调试代理任务接收到调试指令后,调用对应命令函数完成调试数据获取,并将调试数据回发给主核;
S9)主核的输出监听代理通过消息队列接收到目标处理核返回的调试数据,将调试数据按照调试协议格式封装,并回发给客户端;
S10)目标机的通信管理插件等待接收回传的调试数据,将其返回给调试管理插件进行数据解析;
S11)调试管理插件将解析完成的调试数据存储在本地数据容器中,并将原始数据按照调试格式推送到界面端,完成输出显示。
进一步地,所述步骤2)中的符号表包括绝对地址符号信息表,动态模块加载后,将更新一张包含动态模块所有符号的符号表,并将其发送给宿主机,用于调试动态模块。
进一步地,当需要对动态模块的指定变量进行调试时,其宿主机的具体调试过程如下:
1)选择待加载任务镜像,执行动态加载流程;
2)完成动态加载任务后,通过界面选择可获得待调试目标,在图形界面中选择待调试变量数据;
3)调试管理插件根据所选取的符号名称,在由动态加载获取到的符号表文件中分析重定位待查询变量调试信息,包括变量地址、变量长度等内容;
4)根据界面中输入的调试控制信息,将变量调试指令下发到目标机;
5)目标机通信管理插件接收目标机回复的调试信息数据;
6)调试管理插件进行数据处理,将目标机回复的调试信息数据按照所选定的数据类型发送到界面端,并按照用户选择的方式完成数据显示。
进一步地,当接收到调试指令时,目标机端的代理服务中多核通信采用消息队列方式,具体实施过程如下:
1)各核运行调试代理任务时,启动消息队列监听,根据各自核号设置监听句柄;
2)主核通过通信代理与客户端建立网络连接,输入监听代理接收调试指令,根据指令解析到的目标核号,将其通过消息队列发送给目标处理核;
3)目标处理核通过消息队列监听,获取调试指令命令,并根据指令要求执行调试操作;
4)目标处理核在内存中申请指定长度的内存空间,用以存放核间消息头与调试数据信息,将整段内存数据通过消息队列发送给主核;
5)部署在主核上的输出监听代理接收来自主核或从核的核间消息与调试数据内容,并根据调试协议将其完成数据封装,将调试数据通过以太网发送给客户端。
一种基于动态加载的嵌入式多核调试系统的调试方法,所述调试方法面向标准调试器的远程调试系统,具体调试过程如下:
S1)选择待加载任务镜像,执行动态加载流程;
S2)完成动态加载任务后,获取到全局符号信息表文件;
S3)选择待调试任务,通过远程调试插件对会话控制参数的封装,实现与调试器的通信;
S4)调试器接收到调试指令后,分析符号表信息,并建立与目标机服务代理调试连接;
S5)主核调试代理将调试状态数据返回,上位机界面更新显示信息并关联源文件的调试入口;
S6)用户通过界面操作,设置调试指令;
S7)会话控制完成调试指令参数的封装,并通过MI接口传递给调试器;
S8)调试器按照RSP协议将调试指令发送至目标机;
S9)主核调试代理将调试任务通过核间转发将调试指令传递至目标从核,从核上已启动的网络断点调试服务执行相应的调试命令;
S10)从核执行后将当前系统状态数据回复主核代理,并由主核完成数据向客户端的反馈;
S11)客户端解析回发调试应答数据,并更新调试界面显示调试结果。
进一步地,所述步骤2)中的全局符号信息表文件包括绝对地址符号信息表的重定位文件,用于动态加载模块的源码调试。
本发明与现有技术相比具有以下有益效果:
1)在已经加载了动态模块的系统中,对设备内部的关键变量进行实时监控,进而分析系统运行的状态;
2)通过绝对符号信息来执行监控操作,满足系统中未定义符号信息的关键变量定位;
3)面向动态模块的远程调试系统的调试方法主要基于特定的调试需要,自主开发的调试服务功能,支持按需求扩展;
4)面向标准调试器的远程调试系统的调试方法主要是指引入源代码网络断点调试功能。
附图说明
下面结合附图和具体实施方式对本发明作进一步说明:
图1是本发明一种基于动态加载的嵌入式多核调试系统的结构示意图;
图2是本发明的调试方法中动调试态模块的指定变量的系统执行流程示意图;
图3是本发明调试方法中调试嵌入式多核系统进行源码网络断点的系统执行流程示意图。
具体实施方式
实施例1
如图1所示,一种基于动态加载的嵌入式多核调试系统,所述调试系统与多核处理器通信连接,所述多核处理器包括主核和若干个从核,所述主核与上层客户端系统进行通信连接,所述主核与从核、每个所述从核之间均通过消息队列方式进行通信连接,所述调试系统包括宿主机组件与目标机组件,所述宿主机组件基于Ecplise插件框架,其包括:
远程调试插件,用于满足各类远程调试功能需求;所述远程调试插件包括调试指令封装模块、符号数据管理模块、调试数据解析模块及调试数据显示模块;
目标机通信管理插件,用于为系统提供远程目标的通信管理及为用户提供物理链路的输入输出管理服务;
调试器,用于接收远程网络断点调试指令信息并向目标机的调试代理发送调试命令;
动态加载插件,用于支持待调试任务的界面部署及所述多核处理器加载反馈数据管理;
所述远程调试插件与所述目标机通信管理插件通信连接;
所述动态加载插件与所述调试器通信连接;
所述目标机组件包括主核代理任务部和从核代理任务部;
所述主核代理任务部包括分别部署于所述多核处理器主核上的
主核加载器,用于完成待调试任务模块的动态部署功能;
第一调试代理,用于完成调试命令的接入、服务函数的执行及调试结果的输出;
监听代理,所述监听代理包括输入监听代理和输出监听代理,所述输入监听代理用于完成输入命令的接收、解析以及多核调试信息的转发;所述输出监听代理,用于完成输出信息的格式设置及转发;
通信代理,所述通信代理与所述调试器通信链路;
所述主核加载器的两端分别与所述监听代理、任务模块通信连接;
所述第一调试代理的两端分别与所述监听代理、任务模块通信连接;
所述输入监听代理与所述通信代理单向通信连接,用于接收外部输入来的指令信息;所述输出监听代理与所述通信代理完成单向通信,用于将本端调试数据信息发送给通信代理模块,完成数据输出;
所述从核代理任务部包括分别部署于所述多核处理器从核上的
第二调试代理,用于完成调试命令的接入、服务函数的执行及调试结果的输出;
从核加载器,用于完成待调试任务模块的动态部署功能;
所述主核加载器和从核加载器均运行于嵌入式操作系统之上,在完成任务模块动态加载后,更新本地加载参数、内存空间分配及符号表的加载信息,并将关键信息主动发送给客户端,从而获取并管理目标机系统管理符号。
本发明的调试系统工作原理:通过多核处理器主核上的通信代理与宿主机的调试器建立通信连接;由动态加载插件发送待调试任务,通过动态加载器实现目标任务的部署,并返回全局符号信息;根据调试需求,分析定位全局符号信息中的绝对地址信息,由远程调试插件下发调试指令到目标机,多核处理器主核通过核间通信的方式将调试指令转发给目标核,并将调试数据通过消息队列回传,交由部署于主核上的输出监听代理发送给宿主机。
实施例2
如图2所示,一种基于动态加载的嵌入式多核调试系统的调试方法,所述调试方法面向标准调试器的远程调试系统,具体调试过程如下:
S1)图形界面中选择待调试任务镜像文件,完成选择后,通过动态加载插件实现任务的部署;
S2)完成任务部署后,保存全局符号信息,构建符号表;
S3)在图形界面中选择输入待调试目标,完成选择后发送给调试管理插件;
S4)调试管理控件在符号表中查询分析重定位本次调试中所需的变量、任务符号信息,并发送至图形界面插件显示;
S5)根据显示符号信息,设置静态调试参数,完成设置后将参数数据发送给调试管理插件;
S6)调试管理插件将调试指令封装,并通过目标机通信管理插件将调试指令发送给目标机;
S7)主核的通信代理完成与宿主机软件的通信后,主核启动输入输出监听代理,输入监听接收到调试指令后执行命令解析,将指令转发给目标处理核;
S8)目标处理核的调试代理任务接收到调试指令后,调用对应命令函数完成调试数据获取,并将调试数据回发给主核;
S9)主核的输出监听代理通过消息队列接收到目标处理核返回的调试数据,将调试数据按照调试协议格式封装,并回发给客户端;
S10)目标机的通信管理插件等待接收回传的调试数据,将其返回给调试管理插件进行数据解析;
S11)调试管理插件将解析完成的调试数据存储在本地数据容器中,并将原始数据按照调试格式推送到界面端,完成输出显示。
作为本实施例的进一步,所述步骤2)中的符号表包括绝对地址符号信息表,动态模块加载后,将更新一张包含动态模块所有符号的符号表,并将其发送给宿主机,用于调试动态模块。
作为本实施例的进一步,当需要对动态模块的指定变量进行调试时,其宿主机的具体调试过程如下:
1)选择待加载任务镜像,执行动态加载流程;
2)完成动态加载任务后,通过界面选择可获得待调试目标,在图形界面中选择待调试变量数据;
3)调试管理插件根据所选取的符号名称,在由动态加载获取到的符号表文件中分析重定位待查询变量调试信息,包括变量地址、变量长度等内容;
4)根据界面中输入的调试控制信息,将变量调试指令下发到目标机;
5)目标机通信管理插件接收目标机回复的调试信息数据;
6)调试管理插件进行数据处理,将目标机回复的调试信息数据按照所选定的数据类型发送到界面端,并按照用户选择的方式完成数据显示。
作为本实施例的进一步,当接收到调试指令时,目标机端的代理服务中多核通信采用消息队列方式,具体实施过程如下:
1)各核运行调试代理任务时,启动消息队列监听,根据各自核号设置监听句柄;
2)主核通过通信代理与客户端建立网络连接,输入监听代理接收调试指令,根据指令解析到的目标核号,将其通过消息队列发送给目标处理核;
3)目标处理核通过消息队列监听,获取调试指令命令,并根据指令要求执行调试操作;
4)目标处理核在内存中申请指定长度的内存空间,用以存放核间消息头与调试数据信息,将整段内存数据通过消息队列发送给主核;
5)部署在主核上的输出监听代理接收来自主核或从核的核间消息与调试数据内容,并根据调试协议将其完成数据封装,将调试数据通过以太网发送给客户端。
实施例3
如图3所示,一种基于动态加载的嵌入式多核调试系统的调试方法,所述调试方法面向标准调试器的远程调试系统,具体调试过程如下:
S1)选择待加载任务镜像,执行动态加载流程;
S2)完成动态加载任务后,获取到全局符号信息表文件;
S3)选择待调试任务,通过远程调试插件对会话控制参数的封装,实现与调试器的通信;
S4)调试器接收到调试指令后,分析符号表信息,并建立与目标机服务代理调试连接;
S5)主核调试代理将调试状态数据返回,上位机界面更新显示信息并关联源文件的调试入口;
S6)用户通过界面操作,设置调试指令;
S7)会话控制完成调试指令参数的封装,并通过MI接口传递给调试器;
S8)调试器按照RSP协议将调试指令发送至目标机;
S9)主核调试代理将调试任务通过核间转发将调试指令传递至目标从核,从核上已启动的网络断点调试服务执行相应的调试命令;
S10)从核执行后将当前系统状态数据回复主核代理,并由主核完成数据向客户端的反馈;
S11)客户端解析回发调试应答数据,并更新调试界面显示调试结果。
作为本实施例的进一步,所述步骤2)中的全局符号信息表文件包括绝对地址符号信息表的重定位文件,用于动态加载模块的源码调试。
本发明根据接入调试系统服务的不同划分为面向动态模块的远程调试服务与面向标准调试器的远程调试服务两类:面向动态模块的远程调试系统主要是指基于自定义网络协议,满足特定的调试需要的调试功能,主要包括内存查看、变量调试、任务管理等功能,并支持按需求扩展;面向标准调试器的远程调试服务主要是指基于RSP网络调试协议的源代码网络断点调试功能。
以上所述的实施例仅仅是对本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明原理和实质的前提下,本领域普通技术人员对本发明的技术方案做出的各种变形和改进,均应落入本发明权利要求书确定的保护范围内。
Claims (8)
1.一种基于动态加载的嵌入式多核调试系统,所述调试系统与多核处理器通信连接,其特征在于,所述多核处理器包括主核和若干个从核,所述主核与上层客户端系统进行通信连接,所述主核与从核、每个所述从核之间均通过消息队列方式进行通信连接,所述调试系统包括宿主机组件与目标机组件,所述宿主机组件基于Ecplise插件框架,其包括:
远程调试插件,用于满足各类远程调试功能需求;
目标机通信管理插件,用于为系统提供远程目标的通信管理及为用户提供物理链路的输入输出管理服务;
调试器,用于接收远程网络断点调试指令信息并向目标机的调试代理发送调试命令;
动态加载插件,用于支持待调试任务的界面部署及所述多核处理器加载反馈数据管理;
所述远程调试插件与所述目标机通信管理插件通信连接;
所述动态加载插件与所述调试器通信连接;
所述目标机组件包括主核代理任务部和从核代理任务部;
所述主核代理任务部包括分别部署于所述多核处理器主核上的
主核加载器,用于完成待调试任务模块的动态部署功能;
第一调试代理,用于完成调试命令的接入、服务函数的执行及调试结果的输出;
监听代理,所述监听代理包括输入监听代理和输出监听代理,所述输入监听代理用于完成输入命令的接收、解析以及多核调试信息的转发;所述输出监听代理,用于完成输出信息的格式设置及转发;
通信代理,所述通信代理与所述调试器通信链路;
所述主核加载器的两端分别与所述监听代理、任务模块通信连接;
所述第一调试代理的两端分别与所述监听代理、任务模块通信连接;
所述输入监听代理与所述通信代理单向通信连接,用于接收外部输入来的指令信息;所述输出监听代理与所述通信代理完成单向通信,用于将本端调试数据信息发送给通信代理模块,完成数据输出;
所述从核代理任务部包括分别部署于所述多核处理器从核上的
第二调试代理,用于完成调试命令的接入、服务函数的执行及调试结果的输出;
从核加载器,用于完成待调试任务模块的动态部署功能;
所述主核加载器和从核加载器均运行于嵌入式操作系统之上。
2.根据权利要求1所述一种基于动态加载的嵌入式多核调试系统,其特征在于,所述远程调试插件包括调试指令封装模块、符号数据管理模块、调试数据解析模块及调试数据显示模块。
3.一种根据权利要求1至2任一项所述的系统的调试方法,其特征在于,所述调试方法面向标准调试器的远程调试系统,具体调试过程如下:
S1)图形界面中选择待调试任务镜像文件,完成选择后,通过动态加载插件实现任务的部署;
S2)完成任务部署后,保存全局符号信息,构建符号表;
S3)在图形界面中选择输入待调试目标,完成选择后发送给调试管理插件;
S4)调试管理控件在符号表中查询分析重定位本次调试中所需的变量、任务符号信息,并发送至图形界面插件显示;
S5)根据显示符号信息,设置静态调试参数,完成设置后将参数数据发送给调试管理插件;
S6)调试管理插件将调试指令封装,并通过目标机通信管理插件将调试指令发送给目标机;
S7)主核的通信代理完成与宿主机软件的通信后,主核启动输入输出监听代理,输入监听接收到调试指令后执行命令解析,将指令转发给目标处理核;
S8)目标处理核的调试代理任务接收到调试指令后,调用对应命令函数完成调试数据获取,并将调试数据回发给主核;
S9)主核的输出监听代理通过消息队列接收到目标处理核返回的调试数据,将调试数据按照调试协议格式封装,并回发给客户端;
S10)目标机的通信管理插件等待接收回传的调试数据,将其返回给调试管理插件进行数据解析;
S11)调试管理插件将解析完成的调试数据存储在本地数据容器中,并将原始数据按照调试格式推送到界面端,完成输出显示。
4.根据权利要求3所述的系统的调试方法,其特征在于,所述步骤2)中的符号表包括绝对地址符号信息表,动态模块加载后,将更新一张包含动态模块所有符号的符号表,并将其发送给宿主机,用于调试动态模块。
5.根据权利要求3或4所述的系统的调试方法,其特征在于,当需要对动态模块的指定变量进行调试时,其宿主机的具体调试过程如下:
1)选择待加载任务镜像,执行动态加载流程;
2)完成动态加载任务后,通过界面选择可获得待调试目标,在图形界面中选择待调试变量数据;
3)调试管理插件根据所选取的符号名称,在由动态加载获取到的符号表文件中分析重定位待查询变量调试信息,包括变量地址、变量长度等内容;
4)根据界面中输入的调试控制信息,将变量调试指令下发到目标机;
5)目标机通信管理插件接收目标机回复的调试信息数据;
6)调试管理插件进行数据处理,将目标机回复的调试信息数据按照所选定的数据类型发送到界面端,并按照用户选择的方式完成数据显示。
6.根据权利要求3或4所述的系统的调试方法,其特征在于,当接收到调试指令时,目标机端的代理服务中多核通信采用消息队列方式,具体实施过程如下:
1)各核运行调试代理任务时,启动消息队列监听,根据各自核号设置监听句柄;
2)主核通过通信代理与客户端建立网络连接,输入监听代理接收调试指令,根据指令解析到的目标核号,将其通过消息队列发送给目标处理核;
3)目标处理核通过消息队列监听,获取调试指令命令,并根据指令要求执行调试操作;
4)目标处理核在内存中申请指定长度的内存空间,用以存放核间消息头与调试数据信息,将整段内存数据通过消息队列发送给主核;
5)部署在主核上的输出监听代理接收来自主核或从核的核间消息与调试数据内容,并根据调试协议将其完成数据封装,将调试数据通过以太网发送给客户端。
7.一种根据权利要求1至2任一项所述的系统的调试方法,其特征在于,包括面向标准调试器的远程调试系统的调试方法,具体调试过程如下:
S1)选择待加载任务镜像,执行动态加载流程;
S2)完成动态加载任务后,获取到全局符号信息表文件;
S3)选择待调试任务,通过远程调试插件对会话控制参数的封装,实现与调试器的通信;
S4)调试器接收到调试指令后,分析符号表信息,并建立与目标机服务代理调试连接;
S5)主核调试代理将调试状态数据返回,上位机界面更新显示信息并关联源文件的调试入口;
S6)用户通过界面操作,设置调试指令;
S7)会话控制完成调试指令参数的封装,并通过MI接口传递给调试器;
S8)调试器按照RSP协议将调试指令发送至目标机;
S9)主核调试代理将调试任务通过核间转发将调试指令传递至目标从核,从核上已启动的网络断点调试服务执行相应的调试命令;
S10)从核执行后将当前系统状态数据回复主核代理,并由主核完成数据向客户端的反馈;
S11)客户端解析回发调试应答数据,并更新调试界面显示调试结果。
8.根据权利要求7所述的系统的调试方法,其特征在于,所述步骤2)中的全局符号信息表文件包括绝对地址符号信息表的重定位文件,用于动态加载模块的源码调试。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111423569.5A CN114064152B (zh) | 2021-11-26 | 2021-11-26 | 基于动态加载的嵌入式多核调试系统及其调试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111423569.5A CN114064152B (zh) | 2021-11-26 | 2021-11-26 | 基于动态加载的嵌入式多核调试系统及其调试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114064152A true CN114064152A (zh) | 2022-02-18 |
CN114064152B CN114064152B (zh) | 2023-05-23 |
Family
ID=80276816
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111423569.5A Active CN114064152B (zh) | 2021-11-26 | 2021-11-26 | 基于动态加载的嵌入式多核调试系统及其调试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114064152B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114297089A (zh) * | 2022-03-02 | 2022-04-08 | 杭州海康威视数字技术股份有限公司 | 基于容器的Python远程动态调试方法及系统 |
CN114691235A (zh) * | 2022-03-22 | 2022-07-01 | 上海智殷自动化科技有限公司 | 一种支持插件间数据自由交互的方法 |
CN114741137A (zh) * | 2022-05-09 | 2022-07-12 | 潍柴动力股份有限公司 | 一种基于多核微控制器的软件启动方法、装置、设备及存储介质 |
CN115221053A (zh) * | 2022-07-15 | 2022-10-21 | 成都穿山云甲科技有限公司 | 一种基于以太网的dsp调试架构 |
CN116132375A (zh) * | 2022-12-08 | 2023-05-16 | 中船重工(武汉)凌久电子有限责任公司 | 一种基于国产dsp的多节点任意核间全域通信方法 |
CN117632570A (zh) * | 2024-01-25 | 2024-03-01 | 上海励驰半导体有限公司 | 基于多核异构soc的多操作系统诊断方法、装置和系统 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102117241A (zh) * | 2009-12-30 | 2011-07-06 | 华为技术有限公司 | 一种多核系统调试方法和多核系统 |
CN103729288A (zh) * | 2013-11-01 | 2014-04-16 | 华中科技大学 | 一种嵌入式多核环境下应用程序的调试方法 |
US20150269054A1 (en) * | 2014-03-18 | 2015-09-24 | Lsi Corporation | Multiple Core Execution Trace Buffer |
US20150295830A1 (en) * | 2011-03-28 | 2015-10-15 | Citrix Systems Inc. | Systems and methods of emulating a nic for packet transmission on hardware rss unaware nics in a multi-core system |
CN105389235A (zh) * | 2015-10-28 | 2016-03-09 | 致象尔微电子科技(上海)有限公司 | 一种异构多核调试系统与方法 |
CN107577609A (zh) * | 2017-09-28 | 2018-01-12 | 北京计算机技术及应用研究所 | 一种基于主机端动态链接的嵌入式系统动态模块调试方法 |
CN109726095A (zh) * | 2017-10-27 | 2019-05-07 | 深圳市中兴微电子技术有限公司 | 一种多核芯片调试的方法、系统及装置 |
CN112540908A (zh) * | 2019-09-20 | 2021-03-23 | 无锡江南计算技术研究所 | 面向异构众核处理器的轻量级软件调试方法 |
CN112579460A (zh) * | 2020-12-24 | 2021-03-30 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于多核嵌入式系统的多级调试方法 |
-
2021
- 2021-11-26 CN CN202111423569.5A patent/CN114064152B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102117241A (zh) * | 2009-12-30 | 2011-07-06 | 华为技术有限公司 | 一种多核系统调试方法和多核系统 |
US20150295830A1 (en) * | 2011-03-28 | 2015-10-15 | Citrix Systems Inc. | Systems and methods of emulating a nic for packet transmission on hardware rss unaware nics in a multi-core system |
CN103729288A (zh) * | 2013-11-01 | 2014-04-16 | 华中科技大学 | 一种嵌入式多核环境下应用程序的调试方法 |
US20150269054A1 (en) * | 2014-03-18 | 2015-09-24 | Lsi Corporation | Multiple Core Execution Trace Buffer |
CN105389235A (zh) * | 2015-10-28 | 2016-03-09 | 致象尔微电子科技(上海)有限公司 | 一种异构多核调试系统与方法 |
CN107577609A (zh) * | 2017-09-28 | 2018-01-12 | 北京计算机技术及应用研究所 | 一种基于主机端动态链接的嵌入式系统动态模块调试方法 |
CN109726095A (zh) * | 2017-10-27 | 2019-05-07 | 深圳市中兴微电子技术有限公司 | 一种多核芯片调试的方法、系统及装置 |
CN112540908A (zh) * | 2019-09-20 | 2021-03-23 | 无锡江南计算技术研究所 | 面向异构众核处理器的轻量级软件调试方法 |
CN112579460A (zh) * | 2020-12-24 | 2021-03-30 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于多核嵌入式系统的多级调试方法 |
Non-Patent Citations (3)
Title |
---|
张少波;饶丹;: "基于命名变量的全景数据在线实时调试模型", 计算机工程与科学 * |
曾令将; 王继红; 舒红霞: "并行嵌入式系统可视化性能分析工具的设计与实现", 《计算机与数字工程》 * |
黄志钢;陶旭东;潘振杰;: "一种异构多核处理器体系结构的软件仿真", 沈阳理工大学学报 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114297089A (zh) * | 2022-03-02 | 2022-04-08 | 杭州海康威视数字技术股份有限公司 | 基于容器的Python远程动态调试方法及系统 |
CN114691235A (zh) * | 2022-03-22 | 2022-07-01 | 上海智殷自动化科技有限公司 | 一种支持插件间数据自由交互的方法 |
CN114691235B (zh) * | 2022-03-22 | 2024-03-22 | 上海智殷自动化科技有限公司 | 一种支持插件间数据自由交互的方法 |
CN114741137A (zh) * | 2022-05-09 | 2022-07-12 | 潍柴动力股份有限公司 | 一种基于多核微控制器的软件启动方法、装置、设备及存储介质 |
CN114741137B (zh) * | 2022-05-09 | 2024-02-20 | 潍柴动力股份有限公司 | 一种基于多核微控制器的软件启动方法、装置、设备及存储介质 |
CN115221053A (zh) * | 2022-07-15 | 2022-10-21 | 成都穿山云甲科技有限公司 | 一种基于以太网的dsp调试架构 |
CN115221053B (zh) * | 2022-07-15 | 2023-03-24 | 成都穿山云甲科技有限公司 | 一种基于以太网的dsp调试架构 |
CN116132375A (zh) * | 2022-12-08 | 2023-05-16 | 中船重工(武汉)凌久电子有限责任公司 | 一种基于国产dsp的多节点任意核间全域通信方法 |
CN116132375B (zh) * | 2022-12-08 | 2024-07-23 | 中船重工(武汉)凌久电子有限责任公司 | 一种基于国产dsp的多节点任意核间全域通信方法 |
CN117632570A (zh) * | 2024-01-25 | 2024-03-01 | 上海励驰半导体有限公司 | 基于多核异构soc的多操作系统诊断方法、装置和系统 |
CN117632570B (zh) * | 2024-01-25 | 2024-04-12 | 上海励驰半导体有限公司 | 基于多核异构soc的多操作系统诊断方法、装置和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN114064152B (zh) | 2023-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114064152B (zh) | 基于动态加载的嵌入式多核调试系统及其调试方法 | |
CN109933522B (zh) | 一种自动化用例的测试方法、测试系统及存储介质 | |
US8402443B2 (en) | Method and system for automated analysis of the performance of remote method invocations in multi-tier applications using bytecode instrumentation | |
KR101008977B1 (ko) | OSGi 서비스 플랫폼 테스트 방법 및 이를 이용한테스트 툴 | |
CN107608901B (zh) | 基于Jmeter的测试方法及装置、存储介质、电子设备 | |
EP1168758A2 (en) | Client/server system and program for application distribution | |
CN107577609B (zh) | 一种基于主机端动态链接的嵌入式系统动态模块调试系统 | |
CN101719097A (zh) | 自动化测试脚本的调试方法、系统和自动化应用服务器 | |
CN113722020A (zh) | 接口调用方法、装置和计算机可读存储介质 | |
CN113010827A (zh) | 页面渲染方法、装置、电子设备以及存储介质 | |
CN112328470A (zh) | 一种自动化运维测试方法、装置、设备及存储介质 | |
CN110928548A (zh) | 一种数据处理方法以及设备 | |
CN112231206A (zh) | 应用程序测试的脚本编辑方法、计算机可读存储介质及测试平台 | |
CN102063366A (zh) | 调试进程的方法和系统 | |
CN110209565B (zh) | 一种元数据模型调试方法及其装置 | |
CN101411165B (zh) | 利用代理服务器控制嵌入式设备与外部的通信的方法和设备 | |
CN109947407B (zh) | 一种数据获取方法及装置 | |
CN113900633A (zh) | 物联网场景的低代码开发方法及装置、存储介质、开发平台 | |
KR20130020135A (ko) | 통합 개발 환경에서의 코드 동시 개발자 리스트 제공 시스템 및 방법 | |
JP2005108082A (ja) | デバイスドライバのインターフェース方法 | |
CN112579460B (zh) | 一种基于多核嵌入式系统的多级调试方法 | |
CN114217927A (zh) | 一种线程调用方法、装置、计算机设备及存储介质 | |
CN113778895A (zh) | 接口自动化测试方法及装置 | |
CN100419711C (zh) | 一种服务调试命令发射器及其处理方法 | |
JP2002073585A (ja) | デバッグ支援装置、デバッグ支援方法、および記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |