CN102945202B - 一种基于代理的rtems系统调试方法 - Google Patents
一种基于代理的rtems系统调试方法 Download PDFInfo
- Publication number
- CN102945202B CN102945202B CN201210390161.7A CN201210390161A CN102945202B CN 102945202 B CN102945202 B CN 102945202B CN 201210390161 A CN201210390161 A CN 201210390161A CN 102945202 B CN102945202 B CN 102945202B
- Authority
- CN
- China
- Prior art keywords
- task
- module
- debugging
- debugged
- rtems
- 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.)
- Expired - Fee Related
Links
Abstract
本发明提供了一种基于代理的RTEMS系统调试方法,在针对目标机硬件的RTEMS操作系统上,增加了调试代理(Agent)、Trace功能模块,形成一套针对RTEMS操作系统和特定目标硬件CPU架构的基于代理的调试工具,并定制调试代理和GDB主机端通信的应用通信协议。经调试代理绑定指定目标任务后,由上位机的GDB主机端通过目标机的trace模块对被调试任务进行远程调试,以方便系统的快速调试开发。
Description
技术领域
本发明属于计算机嵌入式软件领域,具体涉及RTEMS操作系统环境下的一种基于代理方式的应用程序调试方法。
背景技术
调试是软件开发过程中必不可少的环节,主要进行语法规则和逻辑结构正确性验证。
调试程序一般经过以下两大步骤:
1.静态调试。在程序编写完以后,由人工“代替”计算机对程序进行检查,主要检查程序中语法规则和逻辑结构的正确性。
2.动态调试。动态调试就是上机调试,它贯穿在编译、链接和运行的整个过程中。动态调试包括:
1)程序编译时语法错误信息检查;
2)程序链接时的链接检查;
3)通过设置断点、打印跟踪信息进行程序的逻辑验证。
通用桌面操作系统与嵌入式操作系统在调试环境上存在明显的差别。对于通用桌面系统,调试器与被调试程序都运行于桌面操作系统,调试器通过桌面操作系统专门提供的调试接口(调试代理服务器)控制和访问被调试程序。对于嵌入式系统,调试器运行于通用桌面操作系统,被调试程序运行于目标机嵌入式操作系统,调试器通过目标机端的调试代理控制和访问运行在目标机系统上的被调试程序。
对于商用的嵌入式操作系统,如VxWorks和QNX,有与之配套的集成开发环境,方便系统的开发和调试;而对于开源的嵌入式操作系统RTEMS,其没有配套的集成开发工具,大部分系统开发人员只能采用串口打印输出的方式进行系统调试。这对应用程序开发人员来说,大大增加了开发周期和开发成本,降低了系统开发速度和开发质量。
RTEMS,即实时多处理系统(RealTimeExecutiveforMultiprocessorSystems),是一个开源的实时嵌入式操作系统RTOS,无论是在航空航天、军工领域,还是民用领域,RTEMS都有着极为广泛的应用。
GDB(GNUdebugger)是GNU/Linux和BSD系统下的标准调试器,它可以在带有C编译器和至少一种流行的目标文件格式的UNIX系统中运行。GDB是开源组织FSF(FreeSoftwareFoundation)推出的源码级调试工具软件,受GPL授权协议保护。
发明内容
鉴于RTEMS操作系统任务级调试工具不完备的情况,本发明目的在于提供一种基于代理的RTEMS系统调试方法,在RTEMS系统上的实现调试代理(Agent)并将调试代理(Agent)运行于目标机端,以RTEMS操作系统中的任务方式实现该调试代理(Agent),用于接收和处理上位机GDB主机端的命令信息,并返回结果信息,从而使RTEMS也有配套的集成开发环境。本发明的主要内容在于:
1.针对目标特定CPU架构,在RTEMS操作系统上实现调试代理(Agent),由调试代理模块负责调试命令的分发以及调试结果的获取并向上位机反馈。
2.在RTEMS操作系统上,增加trace功能模块,负责RTEMS操作系统上调试命令的执行和任务跟踪。
3.将包括应用程序、Agent、Trace功能模块的RTEMS应用系统编译生成的目标系统镜像文件下载到目标机;
4.将目标机上电进入调试状态,绑定被调试镜像指定ID的任务,通过上位机的GDB主机端向调试代理(Agent)发送调试命令;上位机与目标机的调试代理之间,采用远程串行协议(RSP)进行通信;
5.目标机端调试代理(Agent)解析调试命令并通知trace功能模块按照调试命令进行对应处理,在trace模块完成调试命令执行后,目标机的调试代理将处理结果返回给上位机的GDB主机端,完成远程调试。
本发明提供了一种基于代理的RTEMS系统调试方法的解决方案,在针对目标机硬件的RTEMS操作系统上,增加了Agent、Trace功能模块,形成一套针对RTEMS操作系统和特定目标CPU架构的基于代理的调试工具,以方便系统的快速调试开发。
与现有技术相比,本发明的有益效果在于:
1.本发明在RTEMS操作系统上实现了调试代理(Agent)。
2.本发明为RTEMS操作系统提供了一种基于代理(Agent)的RTEMS系统调试方法,可以很方便的实现对RTEMS系统的任务级调试。
3.本发明在RTEMS操作系统下实现了Trace功能,实现了RTEMS操作系统下一个任务对另一个任务的控制和跟踪。
附图说明
图1为本发明基于代理的RTEMS系统调试方法的主要结构示意图;
图2为本发明基于代理的RTEMS系统调试方法的调试代理结构示意图;
图3为本发明基于代理的RTEMS系统调试方法的trace功能模块结构示意图;
图4为本发明基于代理的RTEMS系统调试方法的调试数据处理流程示意图。
具体实施方式
下面结合附图对本发明提出的基于代理的RTEMS系统调试方法的具体过程进行详细描述。
本发明基于RTEMS操作系统和特定目标CPU架构实现RTEMStrace功能,定制调试代理(Agent)以及GDB主机端与调试代理(Agent)通信的应用通信协议。经调试代理(Agent)绑定指定目标任务后,由上位机的GDB主机端通过目标机的trace模块对被调试任务进行远程调试。
本发明的总体层次结构如图1所示。其中,
1为上位机端层次结构。通过上位机的GDB主机端,开发人员以命令行或菜单驱动方式与目标机端调试代理(Agent)模块进行通信。
2为目标机端层次结构。根据目标机硬件CPU架构和RTEMS操作系统,研发调试代理模块(Agent),实现RTEMS操作系统的Trace功能。通过GDB主机端与目标机端调试代理(Agent)模块进行交互,利用操作系统的Trace功能,实现一个任务控制和跟踪另一个任务的目的,进而达到调试的目的。
3为上位机和目标机的远程串行协议(RSP)。根据远程串行协议建立上位机与目标机的远程数据通信。
4为上位机和目标机的硬件连接方式,包括串口连接方式和网络连接方式。
本发明的具体开发与应用过程,遵循以下流程:
1.准备工作。在上位机端下载GDB源码和RTEMS源码。
2.研发阶段工作。
(1)研发调试代理(Agent)。针对RTEMS操作系统和具体的目标CPU架构,在RTEMS操作系统上,开发定制目标机端的调试代理(Agent)模块。
图2描述了本方案的调试代理模块的层次结构。调试代理模块包括初始化模块、RSP协议解析执行模块和数据传输模块。初始化模块负责命令行解析、注册目标设备、任务绑定操作。其中,绑定是指调试任务让被调试的应用程序任务成为自己的子任务,这样调试任务就可以利用操作系统提供的代码跟踪机制来完成任务调试。这里的代码跟踪机制就是trace功能。RSP协议解析执行模块,解析出的命令包括执行命令和校验命令两种。其中,执行命令包括:
"c"命令:使被调试程序快速执行
"s"命令:使被调试程序单步执行
"g"命令:读取指定寄存器的值
"G"命令:改写指定寄存器的值
"m"命令:读取指定地址的内存值
"M"命令:改写指定地址的内存值
"D"命令:释放被绑定的任务
"k"命令:删除被调程序中的所有任务
校验命令包括:
"q"命令:基本功能校验
"Q"命令:基本功能设置
"?"命令:任务终止回馈
Default:无效命令处理
数据传输模块主要负责上位机GDB主机端与目标机端调试代理的数据收发工作,将数据按照RSP协议要求打包,通过串口/网络双向传输。
(2)实现RTEMS操作系统Trace功能。针对RTEMS操作系统,实现RTEMS操作系统的trace功能(即代码跟踪机制)。
由于RTEMS操作系统本身不支持Trace调试机制,因此需要在RTEMS操作系统中实现Trace功能模块,通过对Trace功能模块与不同架构的处理器的适应性定制,实现Trace功能对多种处理器架构的支持。
Trace功能提供调试任务观察和控制被调试任务执行的能力。其原理是:当使用trace跟踪后,所有发送给被跟踪任务的信号(除了KILL),都会被转发给调试任务,而被调试任务则会被阻塞,这时被调试任务的状态就会被标注为TRACED。而调试任务收到信号后,就可以对停止下来的被调试任务进行检查和修改,然后让被调试任务继续运行。
在Trace功能实现中,分为公共模块和处理器相关模块两大部分,如图3所示。
1)公共模块负责在同一个操作系统中与处理器架构无关的功能,主要实现对被调试程序的任务管理及内存读写等功能,主要包括:
a)Attach操作,绑定指定ID的任务
b)Detach操作,释放指定ID的任务;
c)Resume操作,使被绑定的任务继续运行;
d)Kill操作,删除所有被调试的任务;
e)Get_Task操作,获取指定ID的任务控制块;
f)Peekdata操作,读取指定内存地址中的数据;
g)Pokedata操作,改写指定内存地址中的数据。
2)处理器相关模块负责同一操作系统中与处理器相关的功能,主要包括陷阱处理,寄存器读写等功能,该部分功能需针对不同处理器架构分别予以实现。处理器相关模块主要包括以下内容:
a)陷阱处理;
i)保护现场:按照一定顺序将寄存器值进行保存;
ii)恢复现场:将保存的寄存器值恢复到对应的寄存器中;
iii)调试代理和被调试任务的同步;
b)读取指定寄存器的数据;
c)改写指定寄存器的数据。
3.建立上位机与目标机端的通信。采用远程串行协议(RSP)建立上位机GDB主机端与目标机端调试代理(Agent)的通信。RSP是一种基于ASCII码的协议,GDB主机端发送命令,目标机端调试代理(Agent)对收到的RSP数据进行校验和处理,返回执行结果或信息。
4.应用程序开发与调试应用阶段工作。
(1)在上位机端,通过交叉编译工具将已开发完成的调试代理(Agent)、Trace功能模块与应用程序源码一起编译生成可执行待调试目标镜像文件。
(2)将待调试目标镜像文件下载到目标机硬件平台。
(3)绑定待调试的目标任务。在上位机通过命令行或菜单驱动方式向目标机发出绑定指定ID任务的指令,使目标机端的调试代理模块通过trace功能的公共模块绑定目标机端指定ID的任务。
(4)应用程序调试。通过上位机GDB主机端发送各种调试命令实现对目标机程序的远程调试。其中调试代理负责解释、分发调试命令,并将调试结果或信息返回上位机;Trace功能模块负责控制被调试任务,跟踪任务的各项状态变化。
其中流程1、2在本方案研发阶段必须完成,每更换一种硬件平台,需要针对具体硬件平台修订与硬件平台相关部分的实现。流程3为同一硬件平台,同一RTEMS操作系统版本下的应用程序开发调试流程,只需要根据应用程序的开发情况,直接应用本方法进行调试即可。
图4描述了本发明的调试数据处理流程。上位机的GDB主机端与目标机的调试代理模块之间通过RSP协议进行通信。GDB主机端将调试命令组成RSP数据包,发给目标机的调试代理模块;目标机的调试代理模块将接收到的调试命令RSP数据包进行解析,通过trace功能的公共模块绑定被调试任务,通知trace功能的处理器相关模块进行对应调试命令的处理。trace功能模块根据调试命令对被绑定的应用程序任务执行对应处理后,收集调试处理结果并返回给调试代理模块,最终经RSP协议将调试结果返回给上位机的GDB主机端。
以上实施例仅用以说明本发明的技术方案而非对其限制;尽管参照较佳实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者对部分技术特征进行等同替换;而不脱离本发明技术方案的精神,其均应涵盖在本发明请求保护的技术方案范围当中。
Claims (1)
1.一种基于代理的RTEMS系统调试方法,其特征在于,包括如下步骤:
(1)针对目标机特定硬件CPU架构,在RTEMS操作系统上设置调试代理模块以及调试代理模块与上位机GDB主机端通信的应用通信协议,所述上位机GDB主机端发送的调试命令通过RSP发送给目标机上的调试代理模块,所述调试代理模块负责调试命令的分发以及调试结果的获取并向上位机反馈,所述调试代理模块包括初始化模块、RSP协议解析执行模块和数据传输模块;
所述初始化模块进行包括命令行解析、注册目标设备、任务绑定操作,绑定是指调试任务让被调试的应用程序任务成为自己的子任务;
所述RSP协议解析执行模块解析从上位机发出的命令,包括执行命令和校验命令,执行命令包括:
"c"命令:使被调试程序快速执行
"s"命令:使被调试程序单步执行
"g"命令:读取指定寄存器的值
"G"命令:改写指定寄存器的值
"m"命令:读取指定地址的内存值
"M"命令:改写指定地址的内存值
"D"命令:释放被绑定的任务
"k"命令:删除被调程序中的所有任务;
校验命令包括:
"q"命令:基本功能校验
"Q"命令:基本功能设置
"?"命令:任务终止回馈
Default:无效命令处理;
所述数据传输模块负责上位机GDB主机端与目标机端调试代理模块的数据收发工作,将数据按照RSP协议要求打包,通过串口/网络双向传输;
(2)在RTEMS操作系统上,设置trace功能模块,负责RTEMS操作系统上调试命令的执行和任务跟踪,当使用trace跟踪后,除了KILL外所有发送给被跟踪任务的信号,都会被转发给调试任务,而被调试任务则会被阻塞,这时被调试任务的状态就会被标注为TRACED,而调试任务收到信号后,就可以对停止下来的被调试任务进行检查和修改,然后让被调试任务继续运行,所述trace功能模块包括公共模块和处理器相关模块,
所述公共模块实现对被调试程序的任务管理及内存读写在内的功能,包括:
a)Attach操作,绑定指定ID的任务;
b)Detach操作,释放指定ID的任务;
c)Resume操作,使被绑定的任务继续运行;
d)Kill操作,删除所有被调试的任务;
e)Get_Task操作,获取指定ID的任务控制块;
f)Peekdata操作,读取指定内存地址中的数据;
g)Pokedata操作,改写指定内存地址中的数据;
所述处理器相关模块负责同一操作系统中与处理器相关的功能,包括:
a)陷阱处理;
i)保护现场:按照一定顺序将寄存器值进行保存;
ii)恢复现场:将保存的寄存器值恢复到对应的寄存器中;
iii)调试代理和被调试任务的同步;
b)读取指定寄存器的数据;
c)改写指定寄存器的数据;
(3)将包括应用程序、调试代理模块、Trace功能模块的RTEMS应用系统编译生成可执行待调试的目标系统镜像文件并下载到目标机;
(4)将目标机上电进入调试状态,在上位机通过命令行或菜单驱动方式向目标机发出绑定指定ID任务的指令,使目标机端的调试代理模块通过trace功能模块的公共模块绑定被调试镜像指定ID的任务,通过上位机向目标机端调试代理模块发送调试命令;
(5)目标机端调试代理模块解析调试命令并通知trace功能模块按照调试命令进行对应处理,并将处理结果返回给上位机,完成远程调试。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210390161.7A CN102945202B (zh) | 2012-10-15 | 2012-10-15 | 一种基于代理的rtems系统调试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210390161.7A CN102945202B (zh) | 2012-10-15 | 2012-10-15 | 一种基于代理的rtems系统调试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102945202A CN102945202A (zh) | 2013-02-27 |
CN102945202B true CN102945202B (zh) | 2015-12-16 |
Family
ID=47728150
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210390161.7A Expired - Fee Related CN102945202B (zh) | 2012-10-15 | 2012-10-15 | 一种基于代理的rtems系统调试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102945202B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103257924B (zh) * | 2013-04-26 | 2016-08-17 | 杭州华三通信技术有限公司 | Gdb代理调试方法和装置 |
CN104615532A (zh) * | 2015-01-04 | 2015-05-13 | 南京航空航天大学 | 基于VxWorks操作系统的航天软件在轨调试方法 |
CN104679653A (zh) * | 2015-02-13 | 2015-06-03 | 航天科工深圳(集团)有限公司 | 配电自动化终端的软件调试方法及系统 |
CN107870855A (zh) * | 2016-09-27 | 2018-04-03 | 北京计算机技术及应用研究所 | 基于天熠嵌入式操作系统的调试系统 |
CN106970825B (zh) * | 2017-03-10 | 2020-07-14 | 深圳航天科技创新研究院 | 一种基于gdb可配置框架的arm7仿真目标机实现方法 |
CN107577609B (zh) * | 2017-09-28 | 2021-06-04 | 北京计算机技术及应用研究所 | 一种基于主机端动态链接的嵌入式系统动态模块调试系统 |
CN107769968B (zh) * | 2017-10-18 | 2021-04-23 | 中国航空无线电电子研究所 | Afdx网络中snmp代理的调试与测试系统 |
CN108920373B (zh) * | 2017-12-29 | 2021-06-22 | 大唐终端技术有限公司 | 嵌入式软件调试系统及其方法 |
CN109558359B (zh) * | 2018-11-29 | 2020-04-21 | 上海移芯通信科技有限公司 | 嵌入式芯片的串口加载装置及方法 |
CN112799816B (zh) * | 2021-02-01 | 2023-03-31 | 安徽芯纪元科技有限公司 | 一种嵌入式操作系统的多任务程序指定任务调试方法 |
CN113238898B (zh) * | 2021-04-30 | 2023-06-06 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 多任务运行状态与通信接口协同监视调试方法 |
CN113434428A (zh) * | 2021-07-06 | 2021-09-24 | 中国银行股份有限公司 | 线上调试方法及装置 |
-
2012
- 2012-10-15 CN CN201210390161.7A patent/CN102945202B/zh not_active Expired - Fee Related
Non-Patent Citations (3)
Title |
---|
GDBstub的剖析与改进;黄红燕等;《电子技术应用》;20060531;第2006年卷(第5期);全文 * |
RTEMS任务级别调试技术研究;党建勋等;《单片机与嵌入式系统应用》;20090331;第2009年卷(第3期);全文 * |
嵌入式系统源码调试器GDB的远程通信;李献霞等;《微处理机》;20060228;第2006年卷(第1期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN102945202A (zh) | 2013-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102945202B (zh) | 一种基于代理的rtems系统调试方法 | |
Ebert et al. | DevOps | |
CN101630258A (zh) | Windows平台上嵌入式Linux软件集成开发系统及其构建方法 | |
CN104077204B (zh) | 可重构的8位rsic单片机仿真器 | |
CN103019941B (zh) | 程序调试方法和装置 | |
CN103678098B (zh) | 一种hadoop程序测试的方法和系统 | |
CN107577609B (zh) | 一种基于主机端动态链接的嵌入式系统动态模块调试系统 | |
Noseworthy | The test and training enabling architecture (TENA) supporting the decentralized development of distributed applications and LVC simulations | |
De Halleux et al. | Moles: tool-assisted environment isolation with closures | |
CN104699523A (zh) | 用于硬件平台所开发的应用程序的调试方法和系统 | |
Simmonds | Mastering Embedded Linux Programming | |
CN102722438B (zh) | 一种内核调试的方法和设备 | |
CN107844410A (zh) | 一种分布式集群系统的调试方法和装置 | |
CN101458633A (zh) | 通过脚本程序访问宿主程序的方法及其系统和装置 | |
Cordemans et al. | Test-driven development as a reliable embedded software engineering practice | |
CN109144849B (zh) | 一种嵌入式软件调测方法 | |
CN114265595B (zh) | 一种基于智能合约的云原生应用开发与部署系统和方法 | |
Ambrose et al. | Argus: A framework for rapid design and prototype of heterogeneous multicore systems in fpga | |
CN101593257B (zh) | 基于.Net虚拟机的软件保护系统和方法 | |
Viarheichyk | Embedded Programming with Modern C++ Cookbook: Practical recipes to help you build robust and secure embedded applications on Linux | |
Lee et al. | Rapid prototyping of IoT applications with Esperanto compiler | |
Willems et al. | Virtual prototypes for software-dominated communication system designs | |
CN106598671A (zh) | 测振仪升级装置及其工作方法 | |
CN108228247A (zh) | 一种工具与目标机增强交互的系统和方法 | |
Digerås | Integration between Optima and Farkle and verification with a use case about file storage stack integration in a quality of service manager in OSE |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20151216 Termination date: 20191015 |